swift
Loading...
Searching...
No Matches
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
18#include "misc/country.h"
19
20using namespace swift::misc;
21using namespace swift::misc::aviation;
22using namespace swift::gui::models;
23using namespace swift::gui::components;
24
25namespace swift::gui::filters
26{
29 {
30 ui->setupUi(this);
31 this->setButtonsAndCount(ui->filter_Buttons);
32
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)
71 {
72 ui->filter_Buttons->clickButton(CFilterBarButtons::Filter);
73 }
74 }
75
76 void CAirlineIcaoFilterBar::onRowCountChanged(int count, bool withFilter)
77 {
78 ui->filter_Buttons->onRowCountChanged(count, withFilter);
79 }
80
81 void CAirlineIcaoFilterBar::ps_CountryChanged(const CCountry &country)
82 {
83 if (country.hasIsoCode())
84 {
85 ui->filter_Buttons->clickButton(CFilterBarButtons::Filter);
86 }
87 }
88
90 {
91 ui->le_AirlineId->clear();
92 ui->le_Designator->clear();
93 ui->le_Name->clear();
94 ui->country_Selector->clear();
95 ui->cb_RealAirline->setChecked(true);
96 ui->cb_VirtualAirline->setChecked(true);
97 }
98} // namespace swift::gui::filters
void countryChanged(const swift::misc::CCountry &country)
Country has been changed.
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.
void onRowCountChanged(int count, bool withFilter)
Row count has been changed.
CAirlineIcaoFilterBar(QWidget *parent=nullptr)
Constructor.
void filter(const swift::misc::aviation::CAirlineIcaoCode &icao)
Filter default values by ICAO code.
virtual void triggerFilter()
Trigger filtering.
void setButtonsAndCount(CFilterBarButtons *buttons)
Set and connect filter bar buttons.
static int convertDbId(const QString &candidate)
Convert DB id.
CFilterWidget(QWidget *parent=nullptr)
Constructor.
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.
Filter to search data sets.
Models to be used with views, mainly QTableView.
Free functions in swift::misc.
void returnPressed()
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
QObject * parent() const const
QWidget(QWidget *parent, Qt::WindowFlags f)