Ref T75, filter airline ICAO by id

This commit is contained in:
Klaus Basan
2017-05-07 22:03:19 +02:00
parent 55357f9c65
commit 997d17c459
5 changed files with 100 additions and 64 deletions

View File

@@ -19,6 +19,7 @@
#include <QCheckBox> #include <QCheckBox>
#include <QLineEdit> #include <QLineEdit>
#include <QString> #include <QString>
#include <QIntValidator>
using namespace BlackMisc; using namespace BlackMisc;
using namespace BlackMisc::Aviation; using namespace BlackMisc::Aviation;
@@ -38,9 +39,11 @@ namespace BlackGui
connect(ui->le_Designator, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_Designator, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_Name, &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); 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 // reset form
this->clearForm(); this->clearForm();
@@ -48,9 +51,10 @@ namespace BlackGui
CAirlineIcaoFilterBar::~CAirlineIcaoFilterBar() { } CAirlineIcaoFilterBar::~CAirlineIcaoFilterBar() { }
std::unique_ptr<BlackGui::Models::IModelFilter<CAirlineIcaoCodeList> > CAirlineIcaoFilterBar::createModelFilter() const std::unique_ptr<IModelFilter<CAirlineIcaoCodeList> > CAirlineIcaoFilterBar::createModelFilter() const
{ {
return std::make_unique<CAirlineIcaoFilter>( return std::make_unique<CAirlineIcaoFilter>(
convertDbId(ui->le_AirlineId->text()),
ui->le_Designator->text().trimmed(), ui->le_Designator->text().trimmed(),
ui->le_Name->text().trimmed(), ui->le_Name->text().trimmed(),
ui->country_Selector->isSet() ? ui->country_Selector->getCountry().getIsoCode() : "", ui->country_Selector->isSet() ? ui->country_Selector->getCountry().getIsoCode() : "",
@@ -94,12 +98,12 @@ namespace BlackGui
void CAirlineIcaoFilterBar::clearForm() void CAirlineIcaoFilterBar::clearForm()
{ {
ui->le_AirlineId->clear();
ui->le_Designator->clear(); ui->le_Designator->clear();
ui->le_Name->clear(); ui->le_Name->clear();
ui->country_Selector->clear(); ui->country_Selector->clear();
ui->cb_RealAirline->setChecked(true); ui->cb_RealAirline->setChecked(true);
ui->cb_VirtualAirline->setChecked(true); ui->cb_VirtualAirline->setChecked(true);
} }
} // ns } // ns
} // ns } // ns

View File

@@ -48,7 +48,7 @@ namespace BlackGui
explicit CAirlineIcaoFilterBar(QWidget *parent = nullptr); explicit CAirlineIcaoFilterBar(QWidget *parent = nullptr);
//! Destructor //! Destructor
~CAirlineIcaoFilterBar(); virtual ~CAirlineIcaoFilterBar();
//! \copydoc Models::IModelFilterProvider::createModelFilter //! \copydoc Models::IModelFilterProvider::createModelFilter
virtual std::unique_ptr<BlackGui::Models::IModelFilter<BlackMisc::Aviation::CAirlineIcaoCodeList>> createModelFilter() const override; virtual std::unique_ptr<BlackGui::Models::IModelFilter<BlackMisc::Aviation::CAirlineIcaoCodeList>> createModelFilter() const override;

View File

@@ -2,6 +2,14 @@
<ui version="4.0"> <ui version="4.0">
<class>CAirlineIcaoFilterBar</class> <class>CAirlineIcaoFilterBar</class>
<widget class="QFrame" name="CAirlineIcaoFilterBar"> <widget class="QFrame" name="CAirlineIcaoFilterBar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>515</width>
<height>24</height>
</rect>
</property>
<property name="windowTitle"> <property name="windowTitle">
<string>Airline ICAO filter</string> <string>Airline ICAO filter</string>
</property> </property>
@@ -30,27 +38,14 @@
<property name="verticalSpacing"> <property name="verticalSpacing">
<number>2</number> <number>2</number>
</property> </property>
<item row="0" column="1"> <item row="0" column="2">
<widget class="BlackGui::Filters::CFilterBarButtons" name="filter_Buttons"> <widget class="QLabel" name="lbl_AirlineId">
<property name="frameShape"> <property name="text">
<enum>QFrame::StyledPanel</enum> <string>Id:</string>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="7"> <item row="0" column="5">
<widget class="BlackGui::Components::CDbCountrySelectorComponent" name="country_Selector">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLineEdit" name="le_Designator"> <widget class="QLineEdit" name="le_Designator">
<property name="maximumSize"> <property name="maximumSize">
<size> <size>
@@ -66,41 +61,14 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="2"> <item row="0" column="4">
<widget class="QLabel" name="lbl_Designator"> <widget class="QLabel" name="lbl_Designator">
<property name="text"> <property name="text">
<string>Airline:</string> <string>Airline:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="8"> <item row="0" column="12">
<widget class="QCheckBox" name="cb_RealAirline">
<property name="text">
<string>Real airline</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="9">
<widget class="QCheckBox" name="cb_VirtualAirline">
<property name="text">
<string>Virtual airline</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="5">
<widget class="QLineEdit" name="le_Name">
<property name="placeholderText">
<string>Name of airline</string>
</property>
</widget>
</item>
<item row="0" column="10">
<spacer name="hs_FilterBar"> <spacer name="hs_FilterBar">
<property name="orientation"> <property name="orientation">
<enum>Qt::Horizontal</enum> <enum>Qt::Horizontal</enum>
@@ -113,35 +81,88 @@
</property> </property>
</spacer> </spacer>
</item> </item>
<item row="0" column="4"> <item row="0" column="7">
<widget class="QLineEdit" name="le_Name">
<property name="placeholderText">
<string>Name of airline</string>
</property>
</widget>
</item>
<item row="0" column="10">
<widget class="QCheckBox" name="cb_RealAirline">
<property name="text">
<string>Real airline</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="6">
<widget class="QLabel" name="lbl_Name"> <widget class="QLabel" name="lbl_Name">
<property name="text"> <property name="text">
<string>Name:</string> <string>Name:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="6"> <item row="0" column="11">
<widget class="QCheckBox" name="cb_VirtualAirline">
<property name="text">
<string>Virtual airline</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="8">
<widget class="QLabel" name="lbl_Country"> <widget class="QLabel" name="lbl_Country">
<property name="text"> <property name="text">
<string>Country:</string> <string>Country:</string>
</property> </property>
</widget> </widget>
</item> </item>
<item row="0" column="1">
<widget class="BlackGui::Filters::CFilterBarButtons" name="filter_Buttons"/>
</item>
<item row="0" column="9">
<widget class="BlackGui::Components::CDbCountrySelectorComponent" name="country_Selector">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
</widget>
</item>
<item row="0" column="3">
<widget class="QLineEdit" name="le_AirlineId">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="placeholderText">
<string>id</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget>
<class>BlackGui::Components::CDbCountrySelectorComponent</class>
<extends>QFrame</extends>
<header>blackgui/components/dbcountryselectorcomponent.h</header>
<container>1</container>
</customwidget>
<customwidget> <customwidget>
<class>BlackGui::Filters::CFilterBarButtons</class> <class>BlackGui::Filters::CFilterBarButtons</class>
<extends>QFrame</extends> <extends>QFrame</extends>
<header>blackgui/filters/filterbarbuttons.h</header> <header>blackgui/filters/filterbarbuttons.h</header>
<container>1</container> <container>1</container>
</customwidget> </customwidget>
<customwidget>
<class>BlackGui::Components::CDbCountrySelectorComponent</class>
<extends>QFrame</extends>
<header>blackgui/components/dbcountryselectorcomponent.h</header>
<container>1</container>
</customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>le_Designator</tabstop> <tabstop>le_Designator</tabstop>

View File

@@ -16,12 +16,12 @@ namespace BlackGui
{ {
namespace Models 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) : 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) 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); this->m_name.isEmpty() && !this->m_va && !this->m_real);
} }
@@ -31,6 +31,17 @@ namespace BlackGui
CAirlineIcaoCodeList outContainer; CAirlineIcaoCodeList outContainer;
for (const CAirlineIcaoCode &icao : inContainer) 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()) if (!m_vDesignator.isEmpty())
{ {
// based on T72, also find VLHA based on LHA // based on T72, also find VLHA based on LHA

View File

@@ -15,7 +15,6 @@
#include "blackgui/blackguiexport.h" #include "blackgui/blackguiexport.h"
#include "blackgui/models/modelfilter.h" #include "blackgui/models/modelfilter.h"
#include "blackmisc/aviation/airlineicaocodelist.h" #include "blackmisc/aviation/airlineicaocodelist.h"
#include <QString> #include <QString>
namespace BlackGui namespace BlackGui
@@ -27,13 +26,14 @@ namespace BlackGui
{ {
public: public:
//! Constructor //! Constructor
CAirlineIcaoFilter(const QString &vDesignator, const QString &name, CAirlineIcaoFilter(int id, const QString &vDesignator, const QString &name,
const QString &countryIso, bool isReal, bool isVa); const QString &countryIso, bool isReal, bool isVa);
//! \copydoc IModelFilter::filter //! \copydoc IModelFilter::filter
virtual BlackMisc::Aviation::CAirlineIcaoCodeList filter(const BlackMisc::Aviation::CAirlineIcaoCodeList &inContainer) const override; virtual BlackMisc::Aviation::CAirlineIcaoCodeList filter(const BlackMisc::Aviation::CAirlineIcaoCodeList &inContainer) const override;
private: private:
int m_id = -1;
QString m_vDesignator; QString m_vDesignator;
QString m_name; QString m_name;
QString m_countryIso; QString m_countryIso;