mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-22 23:05:36 +08:00
Ref T75, filter airline ICAO by id
This commit is contained in:
@@ -19,6 +19,7 @@
|
||||
#include <QCheckBox>
|
||||
#include <QLineEdit>
|
||||
#include <QString>
|
||||
#include <QIntValidator>
|
||||
|
||||
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<BlackGui::Models::IModelFilter<CAirlineIcaoCodeList> > CAirlineIcaoFilterBar::createModelFilter() const
|
||||
std::unique_ptr<IModelFilter<CAirlineIcaoCodeList> > CAirlineIcaoFilterBar::createModelFilter() const
|
||||
{
|
||||
return std::make_unique<CAirlineIcaoFilter>(
|
||||
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
|
||||
|
||||
@@ -48,7 +48,7 @@ namespace BlackGui
|
||||
explicit CAirlineIcaoFilterBar(QWidget *parent = nullptr);
|
||||
|
||||
//! Destructor
|
||||
~CAirlineIcaoFilterBar();
|
||||
virtual ~CAirlineIcaoFilterBar();
|
||||
|
||||
//! \copydoc Models::IModelFilterProvider::createModelFilter
|
||||
virtual std::unique_ptr<BlackGui::Models::IModelFilter<BlackMisc::Aviation::CAirlineIcaoCodeList>> createModelFilter() const override;
|
||||
|
||||
@@ -2,6 +2,14 @@
|
||||
<ui version="4.0">
|
||||
<class>CAirlineIcaoFilterBar</class>
|
||||
<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">
|
||||
<string>Airline ICAO filter</string>
|
||||
</property>
|
||||
@@ -30,27 +38,14 @@
|
||||
<property name="verticalSpacing">
|
||||
<number>2</number>
|
||||
</property>
|
||||
<item row="0" column="1">
|
||||
<widget class="BlackGui::Filters::CFilterBarButtons" name="filter_Buttons">
|
||||
<property name="frameShape">
|
||||
<enum>QFrame::StyledPanel</enum>
|
||||
</property>
|
||||
<property name="frameShadow">
|
||||
<enum>QFrame::Raised</enum>
|
||||
<item row="0" column="2">
|
||||
<widget class="QLabel" name="lbl_AirlineId">
|
||||
<property name="text">
|
||||
<string>Id:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="7">
|
||||
<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">
|
||||
<item row="0" column="5">
|
||||
<widget class="QLineEdit" name="le_Designator">
|
||||
<property name="maximumSize">
|
||||
<size>
|
||||
@@ -66,41 +61,14 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="2">
|
||||
<item row="0" column="4">
|
||||
<widget class="QLabel" name="lbl_Designator">
|
||||
<property name="text">
|
||||
<string>Airline:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="8">
|
||||
<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">
|
||||
<item row="0" column="12">
|
||||
<spacer name="hs_FilterBar">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
@@ -113,35 +81,88 @@
|
||||
</property>
|
||||
</spacer>
|
||||
</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">
|
||||
<property name="text">
|
||||
<string>Name:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</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">
|
||||
<property name="text">
|
||||
<string>Country:</string>
|
||||
</property>
|
||||
</widget>
|
||||
</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>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>BlackGui::Components::CDbCountrySelectorComponent</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>blackgui/components/dbcountryselectorcomponent.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::Filters::CFilterBarButtons</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>blackgui/filters/filterbarbuttons.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>BlackGui::Components::CDbCountrySelectorComponent</class>
|
||||
<extends>QFrame</extends>
|
||||
<header>blackgui/components/dbcountryselectorcomponent.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>le_Designator</tabstop>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -15,7 +15,6 @@
|
||||
#include "blackgui/blackguiexport.h"
|
||||
#include "blackgui/models/modelfilter.h"
|
||||
#include "blackmisc/aviation/airlineicaocodelist.h"
|
||||
|
||||
#include <QString>
|
||||
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user