Completer sort order and ICAO code string building

This commit is contained in:
Klaus Basan
2018-08-26 00:45:44 +02:00
parent 3ec3bb8e15
commit 09e8b3ffcf
4 changed files with 23 additions and 22 deletions

View File

@@ -177,12 +177,13 @@ namespace BlackGui
const QStringList &CDbAircraftIcaoSelectorComponent::completerStrings() const QStringList &CDbAircraftIcaoSelectorComponent::completerStrings()
{ {
static const QStringList empty;
if (!sGui || sGui->isShuttingDown() || !sGui->getWebDataServices()) { return empty; }
const int c = sGui->getWebDataServices()->getAircraftIcaoCodesCount(); const int c = sGui->getWebDataServices()->getAircraftIcaoCodesCount();
if (c != m_completerStrings.size()) if (c != m_completerStrings.size())
{ {
CAircraftIcaoCodeList icaos(sGui->getWebDataServices()->getAircraftIcaoCodes()); CAircraftIcaoCodeList icaos(sGui->getWebDataServices()->getAircraftIcaoCodes());
icaos.removeInvalidCombinedCodes(); icaos.removeInvalidCombinedCodes();
icaos.sortByDesignatorManufacturerAndRank();
m_completerStrings = icaos.toCompleterStrings(true, true, true); m_completerStrings = icaos.toCompleterStrings(true, true, true);
} }
return m_completerStrings; return m_completerStrings;
@@ -190,7 +191,7 @@ namespace BlackGui
void CDbAircraftIcaoSelectorComponent::onCodesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count) void CDbAircraftIcaoSelectorComponent::onCodesRead(CEntityFlags::Entity entity, CEntityFlags::ReadState readState, int count)
{ {
if (!sGui || !sGui->hasWebDataServices()) { return; } if (!sGui || sGui->isShuttingDown() || !sGui->hasWebDataServices()) { return; }
if (entity.testFlag(CEntityFlags::AircraftIcaoEntity) && CEntityFlags::isFinishedReadState(readState)) if (entity.testFlag(CEntityFlags::AircraftIcaoEntity) && CEntityFlags::isFinishedReadState(readState))
{ {
if (count > 0) if (count > 0)

View File

@@ -21,6 +21,7 @@
#include "blackmisc/simulation/aircraftmodelinterfaces.h" #include "blackmisc/simulation/aircraftmodelinterfaces.h"
#include "blackmisc/simulation/data/modelcaches.h" #include "blackmisc/simulation/data/modelcaches.h"
#include "blackmisc/simulation/simulatorinfo.h" #include "blackmisc/simulation/simulatorinfo.h"
#include "blackmisc/directories.h"
#include "blackmisc/statusmessage.h" #include "blackmisc/statusmessage.h"
#include "blackmisc/connectionguard.h" #include "blackmisc/connectionguard.h"
@@ -128,6 +129,7 @@ namespace BlackGui
QScopedPointer<Ui::CDbOwnModelsComponent> ui; QScopedPointer<Ui::CDbOwnModelsComponent> ui;
BlackMisc::Simulation::IAircraftModelLoader *m_modelLoader = nullptr; //!< read own aircraft models, aka models on disk BlackMisc::Simulation::IAircraftModelLoader *m_modelLoader = nullptr; //!< read own aircraft models, aka models on disk
BlackMisc::Simulation::CSimulatorInfo m_simulator; //!< currently init to simulator BlackMisc::Simulation::CSimulatorInfo m_simulator; //!< currently init to simulator
BlackMisc::CSetting<BlackMisc::Settings::TDirectorySettings> m_directorySettings { this }; //!< the swift directories
//! Request own models //! Request own models
void requestOwnModelsUpdate(); void requestOwnModelsUpdate();
@@ -166,7 +168,7 @@ namespace BlackGui
void setSaveFileName(const BlackMisc::Simulation::CSimulatorInfo &sim); void setSaveFileName(const BlackMisc::Simulation::CSimulatorInfo &sim);
//! Directory selector for given simulator //! Directory selector for given simulator
static QString directorySelector(const BlackMisc::Simulation::CSimulatorInfo &simulatorInfo); QString directorySelector(const BlackMisc::Simulation::CSimulatorInfo &simulatorInfo);
//! The menu for loading and handling own models for mapping tasks //! The menu for loading and handling own models for mapping tasks
//! \note This is specific for that very component //! \note This is specific for that very component

View File

@@ -468,32 +468,30 @@ namespace BlackMisc
QString CAircraftIcaoCode::getCombinedIcaoStringWithKey() const QString CAircraftIcaoCode::getCombinedIcaoStringWithKey() const
{ {
QString s(hasDesignator() ? getDesignator() : "????"); return (this->hasDesignator() ? this->getDesignator() : QStringLiteral("????")) %
if (hasManufacturer()) { s = s.append(" ").append(getManufacturer()); } (this->hasManufacturer() ? (QStringLiteral(" ") % this->getManufacturer()) : QStringLiteral("")) %
if (hasModelDescription()) { s = s.append(" ").append(getModelDescription()); } (this->hasModelDescription() ? (QStringLiteral(" ") % this->getModelDescription()) : QStringLiteral("")) %
return s.append(getDbKeyAsStringInParentheses(" ")); this->getDbKeyAsStringInParentheses(" ");
} }
QString CAircraftIcaoCode::getCombinedIataStringWithKey() const QString CAircraftIcaoCode::getCombinedIataStringWithKey() const
{ {
if (!this->hasIataCode()) { return ""; } if (!this->hasIataCode()) { return ""; }
QString s(getIataCode()); return this->getIataCode() % QStringLiteral(" [IATA") %
s = s.append(" [IATA]"); (this->hasDesignator() ? (QStringLiteral(" ") % this->getDesignator()) : QStringLiteral("")) %
if (hasDesignator()) { s.append(" ").append(getDesignator()); } (this->hasManufacturer() ? (QStringLiteral(" ") % this->getManufacturer()) : QStringLiteral("")) %
if (hasManufacturer()) { s = s.append(" ").append(getManufacturer()); } (this->hasModelDescription() ? (QStringLiteral(" ") % this->getModelDescription()) : QStringLiteral("")) %
if (hasModelDescription()) { s = s.append(" ").append(getModelDescription()); } this->getDbKeyAsStringInParentheses(" ");
return s.append(getDbKeyAsStringInParentheses(" "));
} }
QString CAircraftIcaoCode::getCombinedFamilyStringWithKey() const QString CAircraftIcaoCode::getCombinedFamilyStringWithKey() const
{ {
if (!this->hasFamily()) { return ""; } if (!this->hasFamily()) { return ""; }
QString s(getFamily()); return this->getFamily() % QStringLiteral(" [family") %
s = s.append(" [family]"); (this->hasDesignator() ? (QStringLiteral(" ") % this->getDesignator()) : QStringLiteral("")) %
if (hasDesignator()) { s.append(" ").append(getDesignator()); } (this->hasManufacturer() ? (QStringLiteral(" ") % this->getManufacturer()) : QStringLiteral("")) %
if (hasManufacturer()) { s.append(" ").append(getManufacturer()); } (this->hasModelDescription() ? (QStringLiteral(" ") % this->getModelDescription()) : QStringLiteral("")) %
if (hasModelDescription()) { s.append(" ").append(getModelDescription()); } this->getDbKeyAsStringInParentheses(" ");
return s.append(getDbKeyAsStringInParentheses(" "));
} }
bool CAircraftIcaoCode::hasCompleteData() const bool CAircraftIcaoCode::hasCompleteData() const

View File

@@ -222,7 +222,7 @@ namespace BlackMisc
CAircraftIcaoCodeList icaos(*this); CAircraftIcaoCodeList icaos(*this);
if (sort) { icaos.sortByDesignatorAndRank(); } if (sort) { icaos.sortByDesignatorAndRank(); }
// 3 steps to get a proper sort order // 3 steps to get a proper sort order of the string list
for (const CAircraftIcaoCode &icao : as_const(icaos)) for (const CAircraftIcaoCode &icao : as_const(icaos))
{ {
c.append(icao.getCombinedIcaoStringWithKey()); c.append(icao.getCombinedIcaoStringWithKey());
@@ -230,8 +230,8 @@ namespace BlackMisc
if (withFamily) if (withFamily)
{ {
icaos = this->findWithFamily(true); const CAircraftIcaoCodeList icaosFamily = icaos.findWithFamily(true);
for (const CAircraftIcaoCode &icao : as_const(icaos)) for (const CAircraftIcaoCode &icao : icaosFamily)
{ {
c.append(icao.getCombinedFamilyStringWithKey()); c.append(icao.getCombinedFamilyStringWithKey());
} }