From 55357f9c6551e4cc67415d2a2620df46f80d1b29 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 7 May 2017 22:02:15 +0200 Subject: [PATCH] Ref T75, filter aircraft ICAO by id --- .../filters/aircrafticaofilterbar.cpp | 9 ++- src/blackgui/filters/aircrafticaofilterbar.ui | 76 ++++++++++++++++--- src/blackgui/models/aircrafticaofilter.cpp | 14 +++- src/blackgui/models/aircrafticaofilter.h | 4 +- 4 files changed, 89 insertions(+), 14 deletions(-) diff --git a/src/blackgui/filters/aircrafticaofilterbar.cpp b/src/blackgui/filters/aircrafticaofilterbar.cpp index 149622988..c1e292d8d 100644 --- a/src/blackgui/filters/aircrafticaofilterbar.cpp +++ b/src/blackgui/filters/aircrafticaofilterbar.cpp @@ -36,10 +36,11 @@ namespace BlackGui connect(ui->le_Designator, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_Manufacturer, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_Description, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); + connect(ui->le_Id, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); - CUpperCaseValidator *ucv = new CUpperCaseValidator(this); - ui->le_Designator->setValidator(ucv); - ui->le_Manufacturer->setValidator(ucv); + ui->le_Designator->setValidator(new CUpperCaseValidator(ui->le_Designator)); + ui->le_Manufacturer->setValidator(new CUpperCaseValidator(ui->le_Manufacturer)); + ui->le_Id->setValidator(new QIntValidator(ui->le_Id)); // reset form this->clearForm(); @@ -51,6 +52,7 @@ namespace BlackGui std::unique_ptr > CAircraftIcaoFilterBar::createModelFilter() const { return std::make_unique( + convertDbId(ui->le_Id->text()), ui->le_Designator->text(), ui->le_Manufacturer->text(), ui->le_Description->text(), @@ -99,6 +101,7 @@ namespace BlackGui void CAircraftIcaoFilterBar::clearForm() { + ui->le_Id->clear(); ui->le_Designator->clear(); ui->le_Manufacturer->clear(); ui->le_Description->clear(); diff --git a/src/blackgui/filters/aircrafticaofilterbar.ui b/src/blackgui/filters/aircrafticaofilterbar.ui index 89e2ef36b..91e5e4b69 100644 --- a/src/blackgui/filters/aircrafticaofilterbar.ui +++ b/src/blackgui/filters/aircrafticaofilterbar.ui @@ -6,8 +6,8 @@ 0 0 - 574 - 44 + 602 + 48 @@ -121,7 +121,58 @@ - + + + + + 0 + + + 0 + + + 3 + + + 0 + + + + + Id: + + + + + + + + 50 + 16777215 + + + + id + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + @@ -137,21 +188,28 @@ + + + + Combined: + + + - - BlackGui::Components::CAircraftCombinedTypeSelector - QFrame -
blackgui/components/aircraftcombinedtypeselector.h
- 1 -
BlackGui::Filters::CFilterBarButtons QFrame
blackgui/filters/filterbarbuttons.h
1
+ + BlackGui::Components::CAircraftCombinedTypeSelector + QFrame +
blackgui/components/aircraftcombinedtypeselector.h
+ 1 +
le_Designator diff --git a/src/blackgui/models/aircrafticaofilter.cpp b/src/blackgui/models/aircrafticaofilter.cpp index b5c38d4a1..8e7423b3d 100644 --- a/src/blackgui/models/aircrafticaofilter.cpp +++ b/src/blackgui/models/aircrafticaofilter.cpp @@ -17,12 +17,14 @@ namespace BlackGui namespace Models { CAircraftIcaoFilter::CAircraftIcaoFilter( + int id, const QString &designator, const QString &name, const QString &description, const QString &combinedType) : + m_id(id), m_designator(designator.trimmed().toUpper()), m_manufacturer(name.trimmed()), m_description(description.trimmed()), m_combinedType(combinedType.trimmed().toUpper()) { - this->m_valid = !(this->m_combinedType.isEmpty() && this->m_designator.isEmpty() && + this->m_valid = !(this->m_id < 0 && this->m_combinedType.isEmpty() && this->m_designator.isEmpty() && this->m_description.isEmpty() && this->m_manufacturer.isEmpty()); } @@ -34,6 +36,16 @@ namespace BlackGui for (const CAircraftIcaoCode &icao : inContainer) { + if (m_id >= 0) + { + // search only for id + if (icao.isLoadedFromDb() && icao.getDbKey() == m_id) + { + outContainer.push_back(icao); + break; + } + continue; + } if (!m_designator.isEmpty()) { if (!this->stringMatchesFilterExpression(icao.getDesignator(), m_designator)) { continue; } diff --git a/src/blackgui/models/aircrafticaofilter.h b/src/blackgui/models/aircrafticaofilter.h index 1d590b954..8a5d25711 100644 --- a/src/blackgui/models/aircrafticaofilter.h +++ b/src/blackgui/models/aircrafticaofilter.h @@ -29,7 +29,8 @@ namespace BlackGui { public: //! Constructor - CAircraftIcaoFilter(const QString &designator, + CAircraftIcaoFilter(int id, + const QString &designator, const QString &manufacturer, const QString &description, const QString &combinedType); @@ -38,6 +39,7 @@ namespace BlackGui virtual BlackMisc::Aviation::CAircraftIcaoCodeList filter(const BlackMisc::Aviation::CAircraftIcaoCodeList &inContainer) const override; private: + int m_id = -1; QString m_designator; QString m_manufacturer; QString m_description;