Ref T75, filter aircraft ICAO by id

This commit is contained in:
Klaus Basan
2017-05-07 22:02:15 +02:00
parent 614efd7681
commit 55357f9c65
4 changed files with 89 additions and 14 deletions

View File

@@ -36,10 +36,11 @@ namespace BlackGui
connect(ui->le_Designator, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter); connect(ui->le_Designator, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_Manufacturer, &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_Description, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
connect(ui->le_Id, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
CUpperCaseValidator *ucv = new CUpperCaseValidator(this); ui->le_Designator->setValidator(new CUpperCaseValidator(ui->le_Designator));
ui->le_Designator->setValidator(ucv); ui->le_Manufacturer->setValidator(new CUpperCaseValidator(ui->le_Manufacturer));
ui->le_Manufacturer->setValidator(ucv); ui->le_Id->setValidator(new QIntValidator(ui->le_Id));
// reset form // reset form
this->clearForm(); this->clearForm();
@@ -51,6 +52,7 @@ namespace BlackGui
std::unique_ptr<BlackGui::Models::IModelFilter<CAircraftIcaoCodeList> > CAircraftIcaoFilterBar::createModelFilter() const std::unique_ptr<BlackGui::Models::IModelFilter<CAircraftIcaoCodeList> > CAircraftIcaoFilterBar::createModelFilter() const
{ {
return std::make_unique<CAircraftIcaoFilter>( return std::make_unique<CAircraftIcaoFilter>(
convertDbId(ui->le_Id->text()),
ui->le_Designator->text(), ui->le_Designator->text(),
ui->le_Manufacturer->text(), ui->le_Manufacturer->text(),
ui->le_Description->text(), ui->le_Description->text(),
@@ -99,6 +101,7 @@ namespace BlackGui
void CAircraftIcaoFilterBar::clearForm() void CAircraftIcaoFilterBar::clearForm()
{ {
ui->le_Id->clear();
ui->le_Designator->clear(); ui->le_Designator->clear();
ui->le_Manufacturer->clear(); ui->le_Manufacturer->clear();
ui->le_Description->clear(); ui->le_Description->clear();

View File

@@ -6,8 +6,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>574</width> <width>602</width>
<height>44</height> <height>48</height>
</rect> </rect>
</property> </property>
<property name="minimumSize"> <property name="minimumSize">
@@ -121,7 +121,58 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="0" colspan="5"> <item row="1" column="0">
<widget class="QWidget" name="wi_Id" native="true">
<layout class="QHBoxLayout" name="hl_DbId">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>3</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="lbl_Id">
<property name="text">
<string>Id:</string>
</property>
</widget>
</item>
<item>
<widget class="QLineEdit" name="le_Id">
<property name="maximumSize">
<size>
<width>50</width>
<height>16777215</height>
</size>
</property>
<property name="placeholderText">
<string>id</string>
</property>
</widget>
</item>
<item>
<spacer name="hs_Id">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="1" column="2" colspan="3">
<widget class="BlackGui::Components::CAircraftCombinedTypeSelector" name="combinedType_Selector"> <widget class="BlackGui::Components::CAircraftCombinedTypeSelector" name="combinedType_Selector">
<property name="minimumSize"> <property name="minimumSize">
<size> <size>
@@ -137,21 +188,28 @@
</property> </property>
</widget> </widget>
</item> </item>
<item row="1" column="1">
<widget class="QLabel" name="lbl_Combined">
<property name="text">
<string>Combined:</string>
</property>
</widget>
</item>
</layout> </layout>
</widget> </widget>
<customwidgets> <customwidgets>
<customwidget>
<class>BlackGui::Components::CAircraftCombinedTypeSelector</class>
<extends>QFrame</extends>
<header>blackgui/components/aircraftcombinedtypeselector.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::CAircraftCombinedTypeSelector</class>
<extends>QFrame</extends>
<header>blackgui/components/aircraftcombinedtypeselector.h</header>
<container>1</container>
</customwidget>
</customwidgets> </customwidgets>
<tabstops> <tabstops>
<tabstop>le_Designator</tabstop> <tabstop>le_Designator</tabstop>

View File

@@ -17,12 +17,14 @@ namespace BlackGui
namespace Models namespace Models
{ {
CAircraftIcaoFilter::CAircraftIcaoFilter( CAircraftIcaoFilter::CAircraftIcaoFilter(
int id,
const QString &designator, const QString &name, const QString &designator, const QString &name,
const QString &description, const QString &combinedType) : const QString &description, const QString &combinedType) :
m_id(id),
m_designator(designator.trimmed().toUpper()), m_manufacturer(name.trimmed()), m_designator(designator.trimmed().toUpper()), m_manufacturer(name.trimmed()),
m_description(description.trimmed()), m_combinedType(combinedType.trimmed().toUpper()) 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()); this->m_description.isEmpty() && this->m_manufacturer.isEmpty());
} }
@@ -34,6 +36,16 @@ namespace BlackGui
for (const CAircraftIcaoCode &icao : inContainer) 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 (!m_designator.isEmpty())
{ {
if (!this->stringMatchesFilterExpression(icao.getDesignator(), m_designator)) { continue; } if (!this->stringMatchesFilterExpression(icao.getDesignator(), m_designator)) { continue; }

View File

@@ -29,7 +29,8 @@ namespace BlackGui
{ {
public: public:
//! Constructor //! Constructor
CAircraftIcaoFilter(const QString &designator, CAircraftIcaoFilter(int id,
const QString &designator,
const QString &manufacturer, const QString &manufacturer,
const QString &description, const QString &description,
const QString &combinedType); const QString &combinedType);
@@ -38,6 +39,7 @@ namespace BlackGui
virtual BlackMisc::Aviation::CAircraftIcaoCodeList filter(const BlackMisc::Aviation::CAircraftIcaoCodeList &inContainer) const override; virtual BlackMisc::Aviation::CAircraftIcaoCodeList filter(const BlackMisc::Aviation::CAircraftIcaoCodeList &inContainer) const override;
private: private:
int m_id = -1;
QString m_designator; QString m_designator;
QString m_manufacturer; QString m_manufacturer;
QString m_description; QString m_description;