11 using namespace swift::misc::simulation;
15 CAircraftModelFilter::CAircraftModelFilter(
int id,
const QString &modelKey,
const QString &description,
16 CAircraftModel::ModelModeFilter modelMode,
17 swift::misc::db::DbKeyStateFilter dbKeyFilter, Qt::CheckState military,
18 Qt::CheckState colorLiveries,
const QString &aircraftIcao,
19 const QString &aircraftManufacturer,
const QString &airlineIcao,
20 const QString &airlineName,
const QString &liveryCode,
21 const QString &fileName,
const QString &combinedType,
23 : m_id(id), m_modelKey(modelKey.trimmed().toUpper()), m_description(description.trimmed()),
24 m_modelMode(modelMode), m_dbKeyFilter(dbKeyFilter), m_military(military), m_colorLiveries(colorLiveries),
25 m_aircraftIcao(aircraftIcao.trimmed().toUpper()),
26 m_aircraftManufacturer(aircraftManufacturer.trimmed().toUpper()),
27 m_airlineIcao(airlineIcao.trimmed().toUpper()), m_airlineName(airlineName.trimmed().toUpper()),
28 m_liveryCode(liveryCode.trimmed().toUpper()), m_fileName(fileName), m_combinedType(combinedType),
29 m_simulatorInfo(simInfo), m_distributor(distributor)
36 if (!this->
isEnabled()) {
return inContainer; }
43 if (model.isLoadedFromDb() && model.getDbKey() == m_id)
53 if (!m_simulatorInfo.
matchesAny(model.getSimulator())) {
continue; }
56 if (!m_modelKey.isEmpty())
61 if (m_military != Qt::PartiallyChecked)
63 if (m_military == Qt::Checked)
66 if (!model.isMilitary()) {
continue; }
68 else if (m_military == Qt::Unchecked)
71 if (model.isMilitary()) {
continue; }
75 if (m_colorLiveries != Qt::PartiallyChecked)
77 if (m_colorLiveries == Qt::Checked)
80 if (!model.getLivery().isColorLivery()) {
continue; }
82 else if (m_colorLiveries == Qt::Unchecked)
85 if (model.getLivery().isColorLivery()) {
continue; }
89 if (!m_description.isEmpty())
94 if (m_modelMode != CAircraftModel::All && m_modelMode != CAircraftModel::Undefined)
96 if (!model.matchesMode(m_modelMode)) {
continue; }
99 if (m_dbKeyFilter != swift::misc::db::All && m_dbKeyFilter != swift::misc::db::Undefined)
101 if (!model.matchesDbKeyState(m_dbKeyFilter)) {
continue; }
104 if (!m_fileName.isEmpty())
109 if (!m_aircraftIcao.isEmpty())
117 if (!m_aircraftManufacturer.isEmpty())
120 m_aircraftManufacturer))
126 if (!m_airlineIcao.isEmpty())
134 if (!m_airlineName.isEmpty())
142 if (!m_liveryCode.isEmpty())
152 if (!model.getDistributor().matchesKeyOrAlias(m_distributor)) {
continue; }
155 if (!m_combinedType.isEmpty())
157 if (!model.getAircraftIcaoCode().matchesCombinedType(m_combinedType)) {
continue; }
165 bool CAircraftModelFilter::valid()
const
167 const bool allEmpty = m_id < 0 && m_modelKey.isEmpty() && m_description.isEmpty() &&
168 m_aircraftManufacturer.isEmpty() && m_aircraftIcao.isEmpty() && m_airlineIcao.isEmpty() &&
169 m_airlineName.isEmpty() && m_liveryCode.isEmpty() && m_fileName.isEmpty() &&
170 m_combinedType.isEmpty();
171 if (!allEmpty) {
return true; }
173 const bool noModelMode = (m_modelMode == CAircraftModel::Undefined || m_modelMode == CAircraftModel::All);
174 const bool noDbState = (m_dbKeyFilter == swift::misc::db::Undefined || m_dbKeyFilter == swift::misc::db::All);
176 const bool noColorRestriction = (m_colorLiveries == Qt::PartiallyChecked);
177 const bool noMilitary = (m_military == Qt::PartiallyChecked);
178 return !(noSim && noModelMode && noDbState && noKey && noMilitary && noColorRestriction);
virtual swift::misc::simulation::CAircraftModelList filter(const swift::misc::simulation::CAircraftModelList &inContainer) const
Used container data.
virtual bool isEnabled() const
Enabled?
bool m_valid
is filter valid?
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*".
void push_back(const T &value)
Appends an element at the end of the sequence.
bool hasValidDbKey() const
Has valid DB key.
Aircraft model (used by another pilot, my models on disk)
Value object encapsulating a list of aircraft models.
Value object encapsulating information of software distributor.
Simple hardcoded info about the corresponding simulator.
bool isAllSimulators() const
Is all simulators?
bool isNoSimulator() const
No simulator?
bool matchesAny(const CSimulatorInfo &otherInfo) const
Matches any simulator.
Models to be used with views, mainly QTableView.