Files
pilotclient/src/blackgui/components/transpondermodeselector.cpp
Lars Toenning bcc4bdd31e Add SPDX identifiers for REUSE compliance
Co-authored-by: Mat Sutcliffe <oktal3700@gmail.com>
2023-10-03 09:29:49 +02:00

95 lines
3.3 KiB
C++

// SPDX-FileCopyrightText: Copyright (C) 2013 swift Project Community / Contributors
// SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
#include "blackgui/components/transpondermodeselector.h"
#include <QStringList>
using namespace BlackMisc::Aviation;
namespace BlackGui::Components
{
CTransponderModeSelector::CTransponderModeSelector(QWidget *parent) : QComboBox(parent)
{
QComboBox::insertItems(0, CTransponderModeSelector::modes());
m_resetTimer.setObjectName(this->objectName().append(":m_resetTimer"));
connect(&m_resetTimer, &QTimer::timeout, this, &CTransponderModeSelector::resetTransponderMode);
connect(this, &CTransponderModeSelector::currentTextChanged, this, &CTransponderModeSelector::setSelectedTransponderModeAsString);
m_resetTimer.setInterval(5000);
}
const QString &CTransponderModeSelector::transponderStateStandby()
{
static const QString s(CTransponder::modeAsString(CTransponder::StateStandby));
return s;
}
const QString &CTransponderModeSelector::transponderStateIdent()
{
static const QString s(CTransponder::modeAsString(CTransponder::StateIdent));
return s;
}
const QString &CTransponderModeSelector::transponderModeC()
{
static const QString s(CTransponder::modeAsString(CTransponder::ModeC));
return s;
}
const QStringList &CTransponderModeSelector::modes()
{
static const QStringList modes(
{ CTransponderModeSelector::transponderStateStandby(),
CTransponderModeSelector::transponderModeC(),
CTransponderModeSelector::transponderStateIdent() });
return modes;
}
BlackMisc::Aviation::CTransponder::TransponderMode CTransponderModeSelector::getSelectedTransponderMode() const
{
return m_currentMode;
}
bool CTransponderModeSelector::isIdentSelected() const
{
return this->getSelectedTransponderMode() == CTransponder::StateIdent;
}
void CTransponderModeSelector::setSelectedTransponderMode(CTransponder::TransponderMode mode)
{
if (mode != CTransponder::StateIdent) { m_resetMode = mode; }
if (m_currentMode == mode) { return; }
if (m_currentMode == CTransponder::StateIdent) { emit this->transponderStateIdentEnded(); }
m_currentMode = mode;
const QString m = CTransponder::modeAsString(mode);
QComboBox::setCurrentText(m);
if (mode == CTransponder::StateIdent)
{
m_resetTimer.start();
}
else
{
m_resetTimer.stop();
}
emit this->transponderModeChanged(m_currentMode);
}
void CTransponderModeSelector::setSelectedTransponderModeStateIdent()
{
this->setSelectedTransponderMode(BlackMisc::Aviation::CTransponder::StateIdent);
}
void CTransponderModeSelector::setSelectedTransponderModeAsString(const QString &mode)
{
CTransponder::TransponderMode m = CTransponder::modeFromString(mode);
if (m_currentMode == m) return; // nothing to change
this->setSelectedTransponderMode(m);
}
void CTransponderModeSelector::resetTransponderMode()
{
if (!this->isIdentSelected()) return; // avoid unnecessary events
this->setSelectedTransponderMode(m_resetMode);
}
} // ns