diff --git a/src/blackgui/filters/airlineicaofilterbar.cpp b/src/blackgui/filters/airlineicaofilterbar.cpp index 47c0f481b..171c78404 100644 --- a/src/blackgui/filters/airlineicaofilterbar.cpp +++ b/src/blackgui/filters/airlineicaofilterbar.cpp @@ -19,6 +19,7 @@ #include #include #include +#include using namespace BlackMisc; using namespace BlackMisc::Aviation; @@ -38,9 +39,11 @@ namespace BlackGui connect(ui->le_Designator, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_Name, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); + connect(ui->le_AirlineId, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->country_Selector, &CDbCountrySelectorComponent::countryChanged, this, &CAirlineIcaoFilterBar::ps_CountryChanged); - ui->le_Designator->setValidator(new CUpperCaseValidator(this)); + ui->le_Designator->setValidator(new CUpperCaseValidator(ui->le_Designator)); + ui->le_AirlineId->setValidator(new QIntValidator(ui->le_AirlineId)); // reset form this->clearForm(); @@ -48,9 +51,10 @@ namespace BlackGui CAirlineIcaoFilterBar::~CAirlineIcaoFilterBar() { } - std::unique_ptr > CAirlineIcaoFilterBar::createModelFilter() const + std::unique_ptr > CAirlineIcaoFilterBar::createModelFilter() const { return std::make_unique( + convertDbId(ui->le_AirlineId->text()), ui->le_Designator->text().trimmed(), ui->le_Name->text().trimmed(), ui->country_Selector->isSet() ? ui->country_Selector->getCountry().getIsoCode() : "", @@ -94,12 +98,12 @@ namespace BlackGui void CAirlineIcaoFilterBar::clearForm() { + ui->le_AirlineId->clear(); ui->le_Designator->clear(); ui->le_Name->clear(); ui->country_Selector->clear(); ui->cb_RealAirline->setChecked(true); ui->cb_VirtualAirline->setChecked(true); } - } // ns } // ns diff --git a/src/blackgui/filters/airlineicaofilterbar.h b/src/blackgui/filters/airlineicaofilterbar.h index f54ef5a93..5f49efc9e 100644 --- a/src/blackgui/filters/airlineicaofilterbar.h +++ b/src/blackgui/filters/airlineicaofilterbar.h @@ -48,7 +48,7 @@ namespace BlackGui explicit CAirlineIcaoFilterBar(QWidget *parent = nullptr); //! Destructor - ~CAirlineIcaoFilterBar(); + virtual ~CAirlineIcaoFilterBar(); //! \copydoc Models::IModelFilterProvider::createModelFilter virtual std::unique_ptr> createModelFilter() const override; diff --git a/src/blackgui/filters/airlineicaofilterbar.ui b/src/blackgui/filters/airlineicaofilterbar.ui index 15f5946c4..7f0570e00 100644 --- a/src/blackgui/filters/airlineicaofilterbar.ui +++ b/src/blackgui/filters/airlineicaofilterbar.ui @@ -2,6 +2,14 @@ CAirlineIcaoFilterBar + + + 0 + 0 + 515 + 24 + + Airline ICAO filter @@ -30,27 +38,14 @@ 2 - - - - QFrame::StyledPanel - - - QFrame::Raised + + + + Id: - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - + @@ -66,41 +61,14 @@ - + Airline: - - - - Real airline - - - true - - - - - - - Virtual airline - - - true - - - - - - - Name of airline - - - - + Qt::Horizontal @@ -113,35 +81,88 @@ - + + + + Name of airline + + + + + + + Real airline + + + true + + + + Name: - + + + + Virtual airline + + + true + + + + Country: + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + + + + + 50 + 16777215 + + + + id + + + - - BlackGui::Components::CDbCountrySelectorComponent - QFrame -
blackgui/components/dbcountryselectorcomponent.h
- 1 -
BlackGui::Filters::CFilterBarButtons QFrame
blackgui/filters/filterbarbuttons.h
1
+ + BlackGui::Components::CDbCountrySelectorComponent + QFrame +
blackgui/components/dbcountryselectorcomponent.h
+ 1 +
le_Designator diff --git a/src/blackgui/models/airlineicaofilter.cpp b/src/blackgui/models/airlineicaofilter.cpp index 590d2ea38..e3b04399d 100644 --- a/src/blackgui/models/airlineicaofilter.cpp +++ b/src/blackgui/models/airlineicaofilter.cpp @@ -16,12 +16,12 @@ namespace BlackGui { namespace Models { - CAirlineIcaoFilter::CAirlineIcaoFilter(const QString &vDesignator, const QString &name, + CAirlineIcaoFilter::CAirlineIcaoFilter(int id, const QString &vDesignator, const QString &name, const QString &countryIso, bool isReal, bool isVa) : - m_vDesignator(vDesignator.trimmed().toUpper()), m_name(name.trimmed()), + m_id(id), m_vDesignator(vDesignator.trimmed().toUpper()), m_name(name.trimmed()), m_countryIso(countryIso.trimmed().toUpper()), m_real(isReal), m_va(isVa) { - this->m_valid = !(this->m_countryIso.isEmpty() && this->m_vDesignator.isEmpty() && + this->m_valid = !(m_id < 0 && this->m_countryIso.isEmpty() && this->m_vDesignator.isEmpty() && this->m_name.isEmpty() && !this->m_va && !this->m_real); } @@ -31,6 +31,17 @@ namespace BlackGui CAirlineIcaoCodeList outContainer; for (const CAirlineIcaoCode &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_vDesignator.isEmpty()) { // based on T72, also find VLHA based on LHA diff --git a/src/blackgui/models/airlineicaofilter.h b/src/blackgui/models/airlineicaofilter.h index 869961af3..3a2790068 100644 --- a/src/blackgui/models/airlineicaofilter.h +++ b/src/blackgui/models/airlineicaofilter.h @@ -15,7 +15,6 @@ #include "blackgui/blackguiexport.h" #include "blackgui/models/modelfilter.h" #include "blackmisc/aviation/airlineicaocodelist.h" - #include namespace BlackGui @@ -27,13 +26,14 @@ namespace BlackGui { public: //! Constructor - CAirlineIcaoFilter(const QString &vDesignator, const QString &name, + CAirlineIcaoFilter(int id, const QString &vDesignator, const QString &name, const QString &countryIso, bool isReal, bool isVa); //! \copydoc IModelFilter::filter virtual BlackMisc::Aviation::CAirlineIcaoCodeList filter(const BlackMisc::Aviation::CAirlineIcaoCodeList &inContainer) const override; private: + int m_id = -1; QString m_vDesignator; QString m_name; QString m_countryIso;