From ba85e3851be37d1ba97a8adb96b846fc6061267f Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 7 May 2017 22:06:39 +0200 Subject: [PATCH] Ref T75, filter aircraft model by id --- .../filters/aircraftmodelfilterbar.cpp | 3 + .../filters/aircraftmodelfilterbar.ui | 216 +++++++++--------- src/blackgui/models/aircraftmodelfilter.cpp | 24 +- src/blackgui/models/aircraftmodelfilter.h | 25 +- 4 files changed, 147 insertions(+), 121 deletions(-) diff --git a/src/blackgui/filters/aircraftmodelfilterbar.cpp b/src/blackgui/filters/aircraftmodelfilterbar.cpp index cd3553a6a..ce4f23d19 100644 --- a/src/blackgui/filters/aircraftmodelfilterbar.cpp +++ b/src/blackgui/filters/aircraftmodelfilterbar.cpp @@ -46,6 +46,7 @@ namespace BlackGui connect(ui->le_AirlineIcao, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_AirlineName, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_LiveryCode, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); + connect(ui->le_Id, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_ModelDescription, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_ModelString, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_FileName, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); @@ -64,6 +65,7 @@ namespace BlackGui ui->le_ModelString->setValidator(ucv); ui->le_AircraftManufacturer->setValidator(ucv); ui->le_LiveryCode->setValidator(ucv); + ui->le_Id->setValidator(new QIntValidator(ui->le_Id)); // reset form this->clearForm(); @@ -100,6 +102,7 @@ namespace BlackGui } return std::make_unique( + convertDbId(ui->le_Id->text()), ui->le_ModelString->text(), ui->le_ModelDescription->text(), mf, diff --git a/src/blackgui/filters/aircraftmodelfilterbar.ui b/src/blackgui/filters/aircraftmodelfilterbar.ui index 10fd5142a..7aee496a9 100644 --- a/src/blackgui/filters/aircraftmodelfilterbar.ui +++ b/src/blackgui/filters/aircraftmodelfilterbar.ui @@ -6,7 +6,7 @@ 0 0 - 571 + 651 72 @@ -111,7 +111,14 @@ - + + + + Key, i.e. model key + + + + @@ -127,69 +134,35 @@ - - - - Airline: - - - - - - - Airline name - - - - - - - Model: - - - - + Manufacturer - + + + + Model: + + + + + + + Airline name + + + + Aircraft: - - - - - - - Description - - - - - - - - - - Livery: - - - - - - - Code - - - - + DB data? @@ -202,36 +175,92 @@ - - - - - 50 - 0 - - - - QFrame::StyledPanel - - - QFrame::Raised + + + + Airline: - - + + - Included/excluded models? + - Incl. - - - true + Livery: - + + + + + + + Description + + + + + + + Code + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Id: + + + + + + + + 50 + 16777215 + + + + id + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + QFrame::StyledPanel @@ -241,42 +270,19 @@ - - - - Distributor: + + + + + 50 + 0 + - - - - Color liveries - - - Color liv. - - - true - - - - + - - - - Military - - - Mil. - - - true - - - diff --git a/src/blackgui/models/aircraftmodelfilter.cpp b/src/blackgui/models/aircraftmodelfilter.cpp index 0f145b0ac..e46f4261e 100644 --- a/src/blackgui/models/aircraftmodelfilter.cpp +++ b/src/blackgui/models/aircraftmodelfilter.cpp @@ -19,7 +19,7 @@ namespace BlackGui { namespace Models { - CAircraftModelFilter::CAircraftModelFilter(const QString &modelKey, const QString &description, + CAircraftModelFilter::CAircraftModelFilter(int id, const QString &modelKey, const QString &description, CAircraftModel::ModelModeFilter modelMode, BlackMisc::Db::DbKeyStateFilter dbKeyFilter, Qt::CheckState military, Qt::CheckState colorLiveries, const QString &aircraftIcao, const QString &aircraftManufacturer, @@ -27,6 +27,7 @@ namespace BlackGui const QString &liveryCode, const QString &fileName, const CSimulatorInfo &simInfo, const CDistributor &distributor) : + m_id(id), m_modelKey(modelKey.trimmed().toUpper()), m_description(description.trimmed()), m_modelMode(modelMode), m_dbKeyFilter(dbKeyFilter), m_military(military), m_colorLiveries(colorLiveries), m_aircraftIcao(aircraftIcao.trimmed().toUpper()), m_aircraftManufacturer(aircraftManufacturer.trimmed().toUpper()), @@ -45,6 +46,17 @@ namespace BlackGui CAircraftModelList outContainer; for (const CAircraftModel &model : inContainer) { + if (m_id >= 0) + { + // search only for id + if (model.isLoadedFromDb() && model.getDbKey() == m_id) + { + outContainer.push_back(model); + break; + } + continue; + } + if (!m_simulatorInfo.isAllSimulators()) { if (!this->m_simulatorInfo.matchesAny(model.getSimulator())) { continue; } @@ -140,10 +152,12 @@ namespace BlackGui bool CAircraftModelFilter::valid() const { - const bool allEmpty = this->m_modelKey.isEmpty() && this->m_description.isEmpty() && - this->m_aircraftManufacturer.isEmpty() && this->m_aircraftIcao.isEmpty() && - this->m_airlineIcao.isEmpty() && this->m_airlineName.isEmpty() && - this->m_liveryCode.isEmpty() && this->m_fileName.isEmpty(); + const bool allEmpty = + m_id < 0 && + this->m_modelKey.isEmpty() && this->m_description.isEmpty() && + this->m_aircraftManufacturer.isEmpty() && this->m_aircraftIcao.isEmpty() && + this->m_airlineIcao.isEmpty() && this->m_airlineName.isEmpty() && + this->m_liveryCode.isEmpty() && this->m_fileName.isEmpty(); if (!allEmpty) { return true; } const bool noSim = this->m_simulatorInfo.isNoSimulator() || this->m_simulatorInfo.isAllSimulators(); const bool noModelMode = this->m_modelMode == CAircraftModel::Undefined || this->m_modelMode == CAircraftModel::All; diff --git a/src/blackgui/models/aircraftmodelfilter.h b/src/blackgui/models/aircraftmodelfilter.h index cf716e4eb..d72589f93 100644 --- a/src/blackgui/models/aircraftmodelfilter.h +++ b/src/blackgui/models/aircraftmodelfilter.h @@ -31,22 +31,25 @@ namespace BlackGui { public: //! Constructor - CAircraftModelFilter(const QString &modelKey, const QString &description, - BlackMisc::Simulation::CAircraftModel::ModelModeFilter modelMode, - BlackMisc::Db::DbKeyStateFilter dbKeyFilter, - Qt::CheckState military, Qt::CheckState colorLiveries, - const QString &aircraftIcao, const QString &aircraftManufacturer, - const QString &airlineIcao, const QString &airlineName, - const QString &liveryCode, - const QString &fileName, - const BlackMisc::Simulation::CSimulatorInfo &simInfo = BlackMisc::Simulation::CSimulatorInfo::allSimulators(), - const BlackMisc::Simulation::CDistributor &distributor = BlackMisc::Simulation::CDistributor() - ); + CAircraftModelFilter( + int id, + const QString &modelKey, const QString &description, + BlackMisc::Simulation::CAircraftModel::ModelModeFilter modelMode, + BlackMisc::Db::DbKeyStateFilter dbKeyFilter, + Qt::CheckState military, Qt::CheckState colorLiveries, + const QString &aircraftIcao, const QString &aircraftManufacturer, + const QString &airlineIcao, const QString &airlineName, + const QString &liveryCode, + const QString &fileName, + const BlackMisc::Simulation::CSimulatorInfo &simInfo = BlackMisc::Simulation::CSimulatorInfo::allSimulators(), + const BlackMisc::Simulation::CDistributor &distributor = BlackMisc::Simulation::CDistributor() + ); //! \copydoc IModelFilter::filter virtual BlackMisc::Simulation::CAircraftModelList filter(const BlackMisc::Simulation::CAircraftModelList &inContainer) const override; private: + int m_id = -1; QString m_modelKey; QString m_description; BlackMisc::Simulation::CAircraftModel::ModelModeFilter m_modelMode;