swift
transpondermodeselector.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QStringList>
7 
8 using namespace swift::misc::aviation;
9 
10 namespace swift::gui::components
11 {
12  CTransponderModeSelector::CTransponderModeSelector(QWidget *parent) : QComboBox(parent)
13  {
14  QComboBox::insertItems(0, CTransponderModeSelector::modes());
15  m_resetTimer.setObjectName(this->objectName().append(":m_resetTimer"));
16  connect(&m_resetTimer, &QTimer::timeout, this, &CTransponderModeSelector::resetTransponderMode);
17  connect(this, &CTransponderModeSelector::currentTextChanged, this,
19  m_resetTimer.setInterval(5000);
20  }
21 
23  {
24  static const QString s(CTransponder::modeAsString(CTransponder::StateStandby));
25  return s;
26  }
27 
29  {
30  static const QString s(CTransponder::modeAsString(CTransponder::StateIdent));
31  return s;
32  }
33 
35  {
36  static const QString s(CTransponder::modeAsString(CTransponder::ModeC));
37  return s;
38  }
39 
40  const QStringList &CTransponderModeSelector::modes()
41  {
42  static const QStringList modes({ CTransponderModeSelector::transponderStateStandby(),
45  return modes;
46  }
47 
49  {
50  return m_currentMode;
51  }
52 
54  {
55  return this->getSelectedTransponderMode() == CTransponder::StateIdent;
56  }
57 
59  {
60  if (mode != CTransponder::StateIdent) { m_resetMode = mode; }
61  if (m_currentMode == mode) { return; }
62  if (m_currentMode == CTransponder::StateIdent) { emit this->transponderStateIdentEnded(); }
63  m_currentMode = mode;
64  const QString m = CTransponder::modeAsString(mode);
65  QComboBox::setCurrentText(m);
66  if (mode == CTransponder::StateIdent) { m_resetTimer.start(); }
67  else { m_resetTimer.stop(); }
68  emit this->transponderModeChanged(m_currentMode);
69  }
70 
72  {
74  }
75 
77  {
78  CTransponder::TransponderMode m = CTransponder::modeFromString(mode);
79  if (m_currentMode == m) return; // nothing to change
81  }
82 
84  {
85  if (!this->isIdentSelected()) return; // avoid unnecessary events
86  this->setSelectedTransponderMode(m_resetMode);
87  }
88 } // namespace swift::gui::components
void setSelectedTransponderModeAsString(const QString &mode)
Selected transponder mode.
void transponderStateIdentEnded()
Ident phase ended.
static const QString & transponderStateIdent()
Ident string.
static const QString & transponderStateStandby()
Standby string.
void transponderModeChanged(swift::misc::aviation::CTransponder::TransponderMode newMode)
Mode / state has been changed.
void setSelectedTransponderMode(swift::misc::aviation::CTransponder::TransponderMode mode)
Selected transponder mode.
swift::misc::aviation::CTransponder::TransponderMode getSelectedTransponderMode() const
Selected transponder mode.
static const QStringList & modes()
All relevant modes for GUI.
static const QString & transponderModeC()
Mode C string.
void resetTransponderMode()
reset to last mode (unequal ident)
void setSelectedTransponderModeStateIdent()
Set to ident (transponder state)
@ StateIdent
not a real mode, more a state
Definition: transponder.h:39
High level reusable GUI components.
Definition: aboutdialog.cpp:13