swift
Loading...
Searching...
No Matches
aircrafticaofilter.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 CAircraftIcaoFilter::CAircraftIcaoFilter(int id, const QString &designator, const QString &family,
13 const QString &manufacturer, const QString &description,
14 const QString &combinedType)
15 : m_id(id), m_designator(designator.trimmed().toUpper()), m_family(family.trimmed().toUpper()),
16 m_manufacturer(manufacturer.trimmed()), m_description(description.trimmed()),
17 m_combinedType(combinedType.trimmed().toUpper())
18 {
19 m_valid = !(m_id < 0 && m_combinedType.isEmpty() && m_designator.isEmpty() && m_family.isEmpty() &&
20 m_description.isEmpty() && m_manufacturer.isEmpty());
21 }
22
24 {
25 if (!this->isValid())
26 {
27 return inContainer;
28 }
29 CAircraftIcaoCodeList outContainer;
30 const bool filterCombinedCode = !m_combinedType.isEmpty() && !m_combinedType.contains('-') &&
32
33 for (const CAircraftIcaoCode &icao : inContainer)
34 {
35 if (m_id >= 0)
36 {
37 // search only for id
38 if (icao.isLoadedFromDb() && icao.getDbKey() == m_id)
39 {
40 outContainer.push_back(icao);
41 break;
42 }
43 continue;
44 }
45 if (!m_designator.isEmpty())
46 {
47 if (!this->stringMatchesFilterExpression(icao.getDesignator(), m_designator))
48 {
49 continue;
50 }
51 }
52 if (!m_family.isEmpty())
53 {
54 if (!this->stringMatchesFilterExpression(icao.getFamily(), m_family))
55 {
56 continue;
57 }
58 }
59 if (!m_manufacturer.isEmpty())
60 {
61 if (!this->stringMatchesFilterExpression(icao.getManufacturer(), m_manufacturer))
62 {
63 continue;
64 }
65 }
66 if (!m_description.isEmpty())
67 {
68 const bool ignore =
69 !this->stringMatchesFilterExpression(icao.getModelDescription(), m_description) &&
70 !this->stringMatchesFilterExpression(icao.getModelSwiftDescription(), m_description) &&
71 !this->stringMatchesFilterExpression(icao.getModelIataDescription(), m_description);
72 if (ignore)
73 {
74 continue;
75 }
76 }
77 if (filterCombinedCode)
78 {
79 if (icao.getCombinedType() != m_combinedType)
80 {
81 continue;
82 }
83 }
84 outContainer.push_back(icao);
85 }
86 return outContainer;
87 }
88} // namespace swift::gui::models
swift::misc::aviation::CAircraftIcaoCodeList filter(const swift::misc::aviation::CAircraftIcaoCodeList &inContainer) const
Used container data.
CAircraftIcaoFilter(int id, const QString &designator, const QString &family, const QString &manufacturer, const QString &description, const QString &combinedType)
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
bool isEmpty() const
Synonym for empty.
Definition sequence.h:285
Value object for ICAO classification.
static bool isValidCombinedType(const QString &combinedType)
Valid combined type.
Value object encapsulating a list of ICAO codes.
Models to be used with views, mainly QTableView.