Allow to filter by combined type

This commit is contained in:
Klaus Basan
2019-05-03 15:09:04 +02:00
parent 3c23fdb461
commit 71fbe5b604
8 changed files with 309 additions and 245 deletions

View File

@@ -14,6 +14,7 @@
#include <QComboBox>
#include <QLineEdit>
#include <QStringBuilder>
#include <QtGlobal>
using namespace BlackMisc::Aviation;
@@ -28,11 +29,11 @@ namespace BlackGui
{
ui->setupUi(this);
connect(ui->le_CombinedType, &QLineEdit::editingFinished, this, &CAircraftCombinedTypeSelector::combinedTypeEntered);
connect(ui->le_CombinedType, &QLineEdit::returnPressed, this, &CAircraftCombinedTypeSelector::combinedTypeEntered);
connect(ui->le_CombinedType, &QLineEdit::returnPressed, this, &CAircraftCombinedTypeSelector::combinedTypeEntered);
connect(ui->cb_EngineCount, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::changedComboBox);
connect(ui->cb_EngineType, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::changedComboBox);
connect(ui->cb_Type, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::changedComboBox);
connect(ui->cb_EngineType, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::changedComboBox);
connect(ui->cb_Type, &QComboBox::currentTextChanged, this, &CAircraftCombinedTypeSelector::changedComboBox);
ui->le_CombinedType->setValidator(new CUpperCaseValidator(this));
}
@@ -43,19 +44,26 @@ namespace BlackGui
void CAircraftCombinedTypeSelector::setCombinedType(const QString &combinedCode)
{
QString engineCount, engineType, aircraftType;
QString cc(combinedCode.trimmed().toUpper().left(3));
const QString cc(combinedCode.trimmed().toUpper().left(3));
if (m_cc == cc) { return; }
m_cc = cc;
if (cc.length() > 0) { aircraftType = cc.left(1); }
if (cc.length() > 1) { engineCount = cc.mid(1, 1); }
if (cc.length() > 2) { engineType = cc.mid(2, 1); }
if (cc.length() > 1) { engineCount = cc.mid(1, 1); }
if (cc.length() > 2) { engineType = cc.mid(2, 1); }
CGuiUtility::setComboBoxValueByStartingString(ui->cb_EngineCount, engineCount, "unspecified");
CGuiUtility::setComboBoxValueByStartingString(ui->cb_EngineType, engineType, "unspecified");
CGuiUtility::setComboBoxValueByStartingString(ui->cb_Type, aircraftType, "unspecified");
if (this->getCombinedTypeFromComboBoxes() != cc)
{
CGuiUtility::setComboBoxValueByStartingString(ui->cb_EngineCount, engineCount, "unspecified");
CGuiUtility::setComboBoxValueByStartingString(ui->cb_EngineType, engineType, "unspecified");
CGuiUtility::setComboBoxValueByStartingString(ui->cb_Type, aircraftType, "unspecified");
}
ui->le_CombinedType->setText(cc);
if (ui->le_CombinedType->text() != cc) { ui->le_CombinedType->setText(cc); }
emit this->changedCombinedType(cc);
}
void CAircraftCombinedTypeSelector::setCombinedType(const BlackMisc::Aviation::CAircraftIcaoCode &icao)
void CAircraftCombinedTypeSelector::setCombinedType(const CAircraftIcaoCode &icao)
{
this->setCombinedType(icao.getCombinedType());
}
@@ -77,6 +85,7 @@ namespace BlackGui
QString CAircraftCombinedTypeSelector::getCombinedType() const
{
QString ct(ui->le_CombinedType->text().trimmed().toUpper());
if (ct.isEmpty() || ct == QStringView(u"---")) { return {}; }
if (CAircraftIcaoCode::isValidCombinedType(ct)) { return ct; }
QString ct2(getCombinedTypeFromComboBoxes());
@@ -85,15 +94,17 @@ namespace BlackGui
void CAircraftCombinedTypeSelector::combinedTypeEntered()
{
QString cc(ui->le_CombinedType->text().trimmed().toUpper());
this->setCombinedType(cc);
const QString cc(ui->le_CombinedType->text().trimmed().toUpper() % u"---");
this->setCombinedType(cc.left(3));
}
void CAircraftCombinedTypeSelector::changedComboBox(const QString &text)
{
Q_UNUSED(text);
QString ct(getCombinedTypeFromComboBoxes());
const QString ct(this->getCombinedTypeFromComboBoxes());
if (ui->le_CombinedType->text() == ct) { return; }
ui->le_CombinedType->setText(ct);
emit this->changedCombinedType(ct);
}
QString CAircraftCombinedTypeSelector::getCombinedTypeFromComboBoxes() const

View File

@@ -19,10 +19,8 @@
#include <QScopedPointer>
#include <QString>
class QWidget;
namespace BlackMisc { namespace Aviation { class CAircraftIcaoCode; } }
namespace Ui { class CAircraftCombinedTypeSelector; }
namespace BlackMisc { namespace Aviation { class CAircraftIcaoCode; } }
namespace BlackGui
{
namespace Components
@@ -39,7 +37,7 @@ namespace BlackGui
explicit CAircraftCombinedTypeSelector(QWidget *parent = nullptr);
//! Destructor
virtual ~CAircraftCombinedTypeSelector();
virtual ~CAircraftCombinedTypeSelector() override;
//! Set comined code, e.g. L1P
void setCombinedType(const QString &combinedCode);
@@ -56,6 +54,10 @@ namespace BlackGui
//! Get the combined type, e.g. "L2P"
QString getCombinedType() const;
signals:
//! Combined type has beend changed
void changedCombinedType(const QString &cominedType);
private:
//! Code has been entered
void combinedTypeEntered();
@@ -66,6 +68,7 @@ namespace BlackGui
//! Combined type from comboboxes
QString getCombinedTypeFromComboBoxes() const;
QString m_cc;
QScopedPointer<Ui::CAircraftCombinedTypeSelector> ui;
};
} // ns