swift
airlineicaofilterbar.cpp
1 // SPDX-FileCopyrightText: Copyright (C) 2015 swift Project Community / Contributors
2 // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-swift-pilot-client-1
3 
5 
6 #include <QCheckBox>
7 #include <QIntValidator>
8 #include <QLineEdit>
9 #include <QString>
10 
11 #include "ui_airlineicaofilterbar.h"
12 
16 #include "gui/uppercasevalidator.h"
18 #include "misc/country.h"
19 
20 using namespace swift::misc;
21 using namespace swift::misc::aviation;
22 using namespace swift::gui::models;
23 using namespace swift::gui::components;
24 
25 namespace swift::gui::filters
26 {
27  CAirlineIcaoFilterBar::CAirlineIcaoFilterBar(QWidget *parent)
28  : CFilterWidget(parent), ui(new Ui::CAirlineIcaoFilterBar)
29  {
30  ui->setupUi(this);
31  this->setButtonsAndCount(ui->filter_Buttons);
32 
33  connect(ui->le_Designator, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
34  connect(ui->le_Name, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
35  connect(ui->le_AirlineId, &QLineEdit::returnPressed, this, &CFilterWidget::triggerFilter);
36  connect(ui->country_Selector, &CDbCountrySelectorComponent::countryChanged, this,
37  &CAirlineIcaoFilterBar::ps_CountryChanged);
38 
39  ui->le_Designator->setValidator(new CUpperCaseValidator(ui->le_Designator));
40  ui->le_AirlineId->setValidator(new QIntValidator(ui->le_AirlineId));
41 
42  // reset form
43  this->clearForm();
44  }
45 
47 
48  std::unique_ptr<IModelFilter<CAirlineIcaoCodeList>> CAirlineIcaoFilterBar::createModelFilter() const
49  {
50  return std::make_unique<CAirlineIcaoFilter>(
51  convertDbId(ui->le_AirlineId->text()), ui->le_Designator->text().trimmed(), ui->le_Name->text().trimmed(),
52  ui->country_Selector->isSet() ? ui->country_Selector->getCountry().getIsoCode() : "",
53  ui->cb_RealAirline->isChecked(), ui->cb_VirtualAirline->isChecked());
54  }
55 
57  {
58  bool filter = false;
59  if (icao.hasValidDesignator())
60  {
61  ui->le_Designator->setText(icao.getVDesignator());
62  filter = true;
63  }
64  if (icao.hasName())
65  {
66  ui->le_Name->setText(icao.getName());
67  filter = true;
68  }
69 
70  if (filter) { ui->filter_Buttons->clickButton(CFilterBarButtons::Filter); }
71  }
72 
73  void CAirlineIcaoFilterBar::onRowCountChanged(int count, bool withFilter)
74  {
75  ui->filter_Buttons->onRowCountChanged(count, withFilter);
76  }
77 
78  void CAirlineIcaoFilterBar::ps_CountryChanged(const CCountry &country)
79  {
80  if (country.hasIsoCode()) { ui->filter_Buttons->clickButton(CFilterBarButtons::Filter); }
81  }
82 
84  {
85  ui->le_AirlineId->clear();
86  ui->le_Designator->clear();
87  ui->le_Name->clear();
88  ui->country_Selector->clear();
89  ui->cb_RealAirline->setChecked(true);
90  ui->cb_VirtualAirline->setChecked(true);
91  }
92 } // namespace swift::gui::filters
virtual std::unique_ptr< swift::gui::models::IModelFilter< swift::misc::aviation::CAirlineIcaoCodeList > > createModelFilter() const
Get the filter, this is the filter itself, not its widget or dialog.
virtual void onRowCountChanged(int count, bool withFilter)
Row count has been changed.
void filter(const swift::misc::aviation::CAirlineIcaoCode &icao)
Filter default values by ICAO code.
Base for filter dialog.
Definition: filterwidget.h:21
virtual void triggerFilter()
Trigger filtering.
void setButtonsAndCount(CFilterBarButtons *buttons)
Set and connect filter bar buttons.
static int convertDbId(const QString &candidate)
Convert DB id.
bool hasIsoCode() const
ISO code?
Definition: country.cpp:49
Value object for ICAO classification.
bool hasValidDesignator() const
Airline designator available?
QString getVDesignator() const
Get airline, e.g. "DLH", but "VMVA" for virtual airlines.
const QString & getName() const
Get name, e.g. "Lufthansa".
bool hasName() const
Has (airline) name?
High level reusable GUI components.
Definition: aboutdialog.cpp:13
Filter to search data sets.
Models to be used with views, mainly QTableView.
Free functions in swift::misc.