swift
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 
8 using namespace swift::misc::aviation;
9 
10 namespace 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()) { return inContainer; }
24  CAirlineIcaoCodeList outContainer;
25  for (const CAirlineIcaoCode &icao : inContainer)
26  {
27  if (m_id >= 0)
28  {
29  // search only for id
30  if (icao.isLoadedFromDb() && icao.getDbKey() == m_id)
31  {
32  outContainer.push_back(icao);
33  break;
34  }
35  continue;
36  }
37 
38  if (!m_vDesignator.isEmpty())
39  {
40  // based on T72, also find VLHA based on LHA
41  if (m_vDesignator.length() == 4)
42  {
43  if (!this->stringMatchesFilterExpression(icao.getVDesignator(), m_vDesignator)) { continue; }
44  }
45  else
46  {
47  if (!this->stringMatchesFilterExpression(icao.getDesignator(), m_vDesignator)) { continue; }
48  }
49  }
50 
51  if (!this->m_name.isEmpty())
52  {
53  if (!this->stringMatchesFilterExpression(icao.getName(), this->m_name)) { continue; }
54  }
55 
56  if (!this->m_countryIso.isEmpty())
57  {
58  if (icao.getCountryIso() != m_countryIso) { continue; }
59  }
60 
61  if (!m_real && m_va)
62  {
63  if (!icao.isVirtualAirline()) { continue; }
64  }
65 
66  if (m_real && !m_va)
67  {
68  if (icao.isVirtualAirline()) { continue; }
69  }
70 
71  outContainer.push_back(icao);
72  }
73  return outContainer;
74  }
75 } // namespace swift::gui::models
virtual swift::misc::aviation::CAirlineIcaoCodeList filter(const swift::misc::aviation::CAirlineIcaoCodeList &inContainer) const
Used container data.
bool stringMatchesFilterExpression(const QString &value, const QString &filter, Qt::CaseSensitivity cs=Qt::CaseInsensitive) const
Standard string search supporting wildcard at begin and end: "*xyz", "abc*".
Definition: modelfilter.cpp:31
void push_back(const T &value)
Appends an element at the end of the sequence.
Definition: sequence.h:305
Value object for ICAO classification.
Value object encapsulating a list of ICAO codes.
Models to be used with views, mainly QTableView.