mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-02 23:25:53 +08:00
refs #196, encapsulated transponder mode selection (combo box)
* promoted QComboBox in GUI * features automatic reset for ident * Conversion to CTransponder::TransponderMode from string
This commit is contained in:
80
src/blackgui/transpondermodeselector.cpp
Normal file
80
src/blackgui/transpondermodeselector.cpp
Normal file
@@ -0,0 +1,80 @@
|
||||
#include "transpondermodeselector.h"
|
||||
|
||||
using namespace BlackMisc::Aviation;
|
||||
|
||||
namespace BlackGui
|
||||
{
|
||||
|
||||
CTransponderModeSelector::CTransponderModeSelector(QWidget *parent) : QComboBox(parent),
|
||||
m_currentMode(CTransponder::StateStandby), m_resetMode(CTransponder::StateStandby)
|
||||
{
|
||||
QComboBox::insertItems(0, CTransponderModeSelector::modes());
|
||||
connect(&this->m_resetTimer, &QTimer::timeout, this, &CTransponderModeSelector::resetTransponderMode);
|
||||
connect(this, &CTransponderModeSelector::currentTextChanged, this, &CTransponderModeSelector::setSelectedTransponderModeAsString);
|
||||
this->m_resetTimer.setInterval(5000);
|
||||
}
|
||||
|
||||
const QString &CTransponderModeSelector::transponderStateStandby()
|
||||
{
|
||||
static const QString s(BlackMisc::Aviation::CTransponder::modeAsString(BlackMisc::Aviation::CTransponder::StateStandby));
|
||||
return s;
|
||||
}
|
||||
|
||||
const QString &CTransponderModeSelector::transponderStateIdent()
|
||||
{
|
||||
static const QString s(BlackMisc::Aviation::CTransponder::modeAsString(BlackMisc::Aviation::CTransponder::StateIdent));
|
||||
return s;
|
||||
}
|
||||
|
||||
const QString &CTransponderModeSelector::transponderModeC()
|
||||
{
|
||||
static const QString s(BlackMisc::Aviation::CTransponder::modeAsString(BlackMisc::Aviation::CTransponder::ModeC));
|
||||
return s;
|
||||
}
|
||||
|
||||
const QStringList &CTransponderModeSelector::modes()
|
||||
{
|
||||
static QStringList modes;
|
||||
if (modes.isEmpty())
|
||||
{
|
||||
modes << CTransponderModeSelector::transponderStateStandby();
|
||||
modes << CTransponderModeSelector::transponderModeC();
|
||||
modes << CTransponderModeSelector::transponderStateIdent();
|
||||
}
|
||||
return modes;
|
||||
}
|
||||
|
||||
BlackMisc::Aviation::CTransponder::TransponderMode CTransponderModeSelector::getSelectedTransponderMode() const
|
||||
{
|
||||
return this->m_currentMode;
|
||||
}
|
||||
|
||||
void CTransponderModeSelector::setSelectedTransponderMode(CTransponder::TransponderMode mode)
|
||||
{
|
||||
if (mode != CTransponder::StateIdent) this->m_resetMode = mode;
|
||||
if (this->m_currentMode == mode) return;
|
||||
if (this->m_currentMode == CTransponder::StateIdent) emit this->identEnded();
|
||||
this->m_currentMode = mode;
|
||||
QString m = CTransponder::modeAsString(mode);
|
||||
QComboBox::setCurrentText(m);
|
||||
if (mode == CTransponder::StateIdent)
|
||||
{
|
||||
this->m_resetTimer.start();
|
||||
}
|
||||
else
|
||||
{
|
||||
this->m_resetTimer.stop();
|
||||
}
|
||||
}
|
||||
|
||||
void CTransponderModeSelector::setSelectedTransponderModeAsString(const QString &mode)
|
||||
{
|
||||
this->setSelectedTransponderMode(CTransponder::modeFromString(mode));
|
||||
}
|
||||
|
||||
void CTransponderModeSelector::resetTransponderMode()
|
||||
{
|
||||
if (!this->isIdentSelected()) return;
|
||||
this->setSelectedTransponderMode(this->m_resetMode);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user