Files
pilotclient/src/blackgui/selcalcodeselector.cpp

62 lines
2.1 KiB
C++

#include "selcalcodeselector.h"
#include "ui_selcalcodeselector.h"
#include "blackmisc/avselcal.h"
namespace BlackGui
{
CSelcalCodeSelector::CSelcalCodeSelector(QWidget *parent) :
QFrame(parent), ui(new Ui::CSelcalCodeSelector)
{
this->ui->setupUi(this);
this->resetSelcalCodes(false);
bool c;
c = connect(this->ui->cb_SelcalPairs1, SIGNAL(currentIndexChanged(int)), this, SIGNAL(valueChanged()));
Q_ASSERT(c);
c = connect(this->ui->cb_SelcalPairs2, SIGNAL(currentIndexChanged(int)), this, SIGNAL(valueChanged()));
Q_ASSERT(c);
}
CSelcalCodeSelector::~CSelcalCodeSelector()
{
delete ui;
}
QString CSelcalCodeSelector::getSelcalCode() const
{
QString selcal = this->ui->cb_SelcalPairs1->currentText();
selcal.append(this->ui->cb_SelcalPairs2->currentText());
return selcal;
}
void CSelcalCodeSelector::resetSelcalCodes(bool allowEmptyValue)
{
this->ui->cb_SelcalPairs1->clear();
if (allowEmptyValue) this->ui->cb_SelcalPairs1->addItem(" ");
this->ui->cb_SelcalPairs1->addItems(BlackMisc::Aviation::CSelcal::codePairs());
this->ui->cb_SelcalPairs2->clear();
if (allowEmptyValue) this->ui->cb_SelcalPairs2->addItem(" ");
this->ui->cb_SelcalPairs2->addItems(BlackMisc::Aviation::CSelcal::codePairs());
}
void CSelcalCodeSelector::setSelcalCode(const QString &selcal)
{
QString s = selcal.isEmpty() ? " " : selcal.toUpper().trimmed();
Q_ASSERT(s.length() == 4);
if (s.length() != 4) return;
QString s1 = s.left(2);
QString s2 = s.right(2);
if (BlackMisc::Aviation::CSelcal::codePairs().contains(s1))
this->ui->cb_SelcalPairs1->setCurrentText(s1);
if (BlackMisc::Aviation::CSelcal::codePairs().contains(s2))
this->ui->cb_SelcalPairs1->setCurrentText(s2);
}
bool CSelcalCodeSelector::hasValidCode() const
{
QString s = this->getSelcalCode();
if (s.length() != 4) return false;
return BlackMisc::Aviation::CSelcal::isValidCode(s);
}
}