swift
Loading...
Searching...
No Matches
airlineicaofilter.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
7
8using namespace swift::misc::aviation;
9
10namespace swift::gui::models
11{
12 CAirlineIcaoFilter::CAirlineIcaoFilter(int id, const QString &vDesignator, const QString &name,
13 const QString &countryIso, bool isReal, bool isVa)
14 : m_id(id), m_vDesignator(vDesignator.trimmed().toUpper()), m_name(name.trimmed()),
15 m_countryIso(countryIso.trimmed().toUpper()), m_real(isReal), m_va(isVa)
16 {
17 this->m_valid = m_id >= 0 || !this->m_countryIso.isEmpty() || !this->m_vDesignator.isEmpty() ||
18 !this->m_name.isEmpty() || this->m_va || this->m_real;
19 }
20
22 {
23 if (!this->isValid())
24 {
25 return inContainer;
26 }
27 CAirlineIcaoCodeList outContainer;
28 for (const CAirlineIcaoCode &icao : inContainer)
29 {
30 if (m_id >= 0)
31 {
32 // search only for id
33 if (icao.isLoadedFromDb() && icao.getDbKey() == m_id)
34 {
35 outContainer.push_back(icao);
36 break;
37 }
38 continue;
39 }
40
41 if (!m_vDesignator.isEmpty())
42 {
43 // based on T72, also find VLHA based on LHA
44 if (m_vDesignator.length() == 4)
45 {
46 if (!this->stringMatchesFilterExpression(icao.getVDesignator(), m_vDesignator))
47 {
48 continue;
49 }
50 }
51 else
52 {
53 if (!this->stringMatchesFilterExpression(icao.getDesignator(), m_vDesignator))
54 {
55 continue;
56 }
57 }
58 }
59
60 if (!this->m_name.isEmpty())
61 {
62 if (!this->stringMatchesFilterExpression(icao.getName(), this->m_name))
63 {
64 continue;
65 }
66 }
67
68 if (!this->m_countryIso.isEmpty())
69 {
70 if (icao.getCountryIso() != m_countryIso)
71 {
72 continue;
73 }
74 }
75
76 if (!m_real && m_va)
77 {
78 if (!icao.isVirtualAirline())
79 {
80 continue;
81 }
82 }
83
84 if (m_real && !m_va)
85 {
86 if (icao.isVirtualAirline())
87 {
88 continue;
89 }
90 }
91
92 outContainer.push_back(icao);
93 }
94 return outContainer;
95 }
96} // namespace swift::gui::models
swift::misc::aviation::CAirlineIcaoCodeList filter(const swift::misc::aviation::CAirlineIcaoCodeList &inContainer) const
Used container data.
CAirlineIcaoFilter(int id, const QString &vDesignator, const QString &name, const QString &countryIso, bool isReal, bool isVa)
Constructor.
bool stringMatchesFilterExpression(const QString &value, const QString &filter, Qt::CaseSensitivity cs=Qt::CaseInsensitive) const
void push_back(const T &value)
Appends an element at the end of the sequence.
Definition sequence.h:308
Value object for ICAO classification.
Value object encapsulating a list of ICAO codes.
Models to be used with views, mainly QTableView.