mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-31 21:15:33 +08:00
refs #614, formatting and new functions for list/value objects
* find by aircraft family * name completer sorting
This commit is contained in:
@@ -52,6 +52,7 @@ namespace BlackMisc
|
||||
|
||||
CAircraftModel CAircraftModelList::findFirstByModelStringOrDefault(const QString &modelString, Qt::CaseSensitivity sensitivity) const
|
||||
{
|
||||
if (modelString.isEmpty()) { return CAircraftModel(); }
|
||||
return this->findFirstByOrDefault([ = ](const CAircraftModel & model)
|
||||
{
|
||||
return model.matchesModelString(modelString, sensitivity);
|
||||
@@ -94,6 +95,17 @@ namespace BlackMisc
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findByLiveryCode(const CLivery &livery) const
|
||||
{
|
||||
if (!livery.hasCombinedCode()) { return CAircraftModelList(); }
|
||||
const QString code(livery.getCombinedCode());
|
||||
return this->findBy([ = ](const CAircraftModel & model)
|
||||
{
|
||||
if (!model.getLivery().hasCombinedCode()) return false;
|
||||
return model.getLivery().getCombinedCode() == code;
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findWithFileName() const
|
||||
{
|
||||
return this->findBy([ = ](const CAircraftModel & model)
|
||||
@@ -127,9 +139,65 @@ namespace BlackMisc
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findByManunfacturer(const QString &manufacturer) const
|
||||
{
|
||||
if (manufacturer.isEmpty()) { return CAircraftModelList(); }
|
||||
const QString m(manufacturer.toUpper().trimmed());
|
||||
return this->findBy([ = ](const CAircraftModel & model)
|
||||
{
|
||||
return model.getAircraftIcaoCode().getManufacturer() == m;
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findByFamily(const QString &family) const
|
||||
{
|
||||
if (family.isEmpty()) { return CAircraftModelList(); }
|
||||
const QString f(family.toUpper().trimmed());
|
||||
return this->findBy([ = ](const CAircraftModel & model)
|
||||
{
|
||||
const CAircraftIcaoCode icao(model.getAircraftIcaoCode());
|
||||
if (!icao.hasFamily()) { return false; }
|
||||
return icao.getFamily() == f;
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findByCombinedCode(const QString &combinedCode) const
|
||||
{
|
||||
const QString cc(combinedCode.trimmed().toUpper());
|
||||
if (combinedCode.length() != 3) { return CAircraftModelList(); }
|
||||
return this->findBy([ = ](const CAircraftModel & model)
|
||||
{
|
||||
const CAircraftIcaoCode icao(model.getAircraftIcaoCode());
|
||||
return icao.matchesCombinedCode(cc);
|
||||
});
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::findByMilitaryFlag(bool military) const
|
||||
{
|
||||
return this->findBy([ = ](const CAircraftModel & model)
|
||||
{
|
||||
return (model.isMilitary() == military);
|
||||
});
|
||||
}
|
||||
|
||||
QString CAircraftModelList::designatorToFamily(const CAircraftIcaoCode &aircraftIcaoCode) const
|
||||
{
|
||||
if (aircraftIcaoCode.hasFamily()) { return aircraftIcaoCode.getFamily(); }
|
||||
for (const CAircraftModel &model : (*this))
|
||||
{
|
||||
const CAircraftIcaoCode icao(model.getAircraftIcaoCode());
|
||||
if (!icao.hasFamily()) continue;
|
||||
if (icao.matchesDesignator(aircraftIcaoCode.getDesignator()))
|
||||
{
|
||||
return icao.getFamily();
|
||||
}
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
CAircraftModelList CAircraftModelList::matchesSimulator(const CSimulatorInfo &simulator) const
|
||||
{
|
||||
return this->findBy([ = ](const CAircraftModel &model)
|
||||
return this->findBy([ = ](const CAircraftModel & model)
|
||||
{
|
||||
return model.matchesSimulator(simulator);
|
||||
});
|
||||
@@ -364,6 +432,17 @@ namespace BlackMisc
|
||||
}
|
||||
}
|
||||
|
||||
QStringList CAircraftModelList::toCompleterStrings(bool sorted) const
|
||||
{
|
||||
QStringList c;
|
||||
for (const CAircraftModel &model : *this)
|
||||
{
|
||||
c.append(model.getModelString());
|
||||
}
|
||||
if (sorted) { c.sort(); }
|
||||
return c;
|
||||
}
|
||||
|
||||
CStatusMessageList CAircraftModelList::validateForPublishing() const
|
||||
{
|
||||
CAircraftModelList invalidModels;
|
||||
|
||||
@@ -66,6 +66,9 @@ namespace BlackMisc
|
||||
//! Find by model string
|
||||
CAircraftModelList findByAircraftDesignatorAndLiveryCombinedCode(const QString &aircraftDesignator, const QString &combinedCode) const;
|
||||
|
||||
//! Find by livery code
|
||||
CAircraftModelList findByLiveryCode(const BlackMisc::Aviation::CLivery &livery) const;
|
||||
|
||||
//! With file name
|
||||
CAircraftModelList findWithFileName() const;
|
||||
|
||||
@@ -81,6 +84,21 @@ namespace BlackMisc
|
||||
//! Models with a known aircraft ICAO code set
|
||||
CAircraftModelList findWithKnownAircraftDesignator() const;
|
||||
|
||||
//! Find by manufacturer
|
||||
CAircraftModelList findByManunfacturer(const QString &manufacturer) const;
|
||||
|
||||
//! Models with aircraft family
|
||||
CAircraftModelList findByFamily(const QString &family) const;
|
||||
|
||||
//! Find by combined code, wildcards possible e.g. L*P, *2J
|
||||
CAircraftModelList findByCombinedCode(const QString &combinedCode) const;
|
||||
|
||||
//! Find by military flag
|
||||
CAircraftModelList findByMilitaryFlag(bool military) const;
|
||||
|
||||
//! Take a designator and find its family
|
||||
QString designatorToFamily(const BlackMisc::Aviation::CAircraftIcaoCode &aircraftIcaoCode) const;
|
||||
|
||||
//! Find for given simulator
|
||||
CAircraftModelList matchesSimulator(const BlackMisc::Simulation::CSimulatorInfo &simulator) const;
|
||||
|
||||
@@ -135,6 +153,9 @@ namespace BlackMisc
|
||||
//! Update livery
|
||||
void updateLivery(const BlackMisc::Aviation::CLivery &livery);
|
||||
|
||||
//! Completer strings
|
||||
QStringList toCompleterStrings(bool sorted = true) const;
|
||||
|
||||
//! Validate for publishing
|
||||
CStatusMessageList validateForPublishing() const;
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@ namespace BlackMisc
|
||||
return false;
|
||||
}
|
||||
|
||||
QStringList CDistributorList::getDbKeysAndAliases() const
|
||||
QStringList CDistributorList::getDbKeysAndAliases(bool sort) const
|
||||
{
|
||||
if (this->isEmpty()) { return QStringList(); }
|
||||
QStringList sl;
|
||||
@@ -70,6 +70,7 @@ namespace BlackMisc
|
||||
sl.append(d.getAlias2());
|
||||
}
|
||||
}
|
||||
if (sort) { sl.sort(); }
|
||||
return sl;
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ namespace BlackMisc
|
||||
bool matchesAnyKeyOrAlias(const QString &keyOrAlias) const;
|
||||
|
||||
//! All DB keys and aliases
|
||||
QStringList getDbKeysAndAliases() const;
|
||||
QStringList getDbKeysAndAliases(bool sort) const;
|
||||
};
|
||||
} //namespace
|
||||
} // namespace
|
||||
|
||||
Reference in New Issue
Block a user