diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.cpp b/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.cpp index c59d6a44c..fee70aba3 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.cpp +++ b/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.cpp @@ -7,11 +7,12 @@ * contained in the LICENSE file. */ -#include "blackmisc/predicates.h" -#include "blackmisc/range.h" #include "blackmisc/simulation/aircraftmodel.h" #include "blackmisc/simulation/fscommon/aircraftcfgentrieslist.h" #include "blackmisc/statusmessagelist.h" +#include "stringutils.h" +#include "blackmisc/predicates.h" +#include "blackmisc/range.h" using namespace BlackMisc; using namespace BlackMisc::Simulation; @@ -26,9 +27,7 @@ namespace BlackMisc bool CAircraftCfgEntriesList::containsModelWithTitle(const QString &title, Qt::CaseSensitivity caseSensitivity) { if (title.isEmpty()) { return false; } - return this->containsBy( - [ = ](const CAircraftCfgEntries & entries) { return title.compare(entries.getTitle(), caseSensitivity) == 0; } - ); + return this->containsBy([ = ](const CAircraftCfgEntries & entries) { return title.compare(entries.getTitle(), caseSensitivity) == 0; }); } QStringList CAircraftCfgEntriesList::detectAmbiguousTitles() const @@ -58,6 +57,21 @@ namespace BlackMisc return titles; } + QString CAircraftCfgEntriesList::getTitlesAsString(bool sorted, const QString &separator) const + { + return this->getTitles(sorted).join(separator); + } + + bool CAircraftCfgEntriesList::containsTitle(const QString &title) const + { + if (title.isEmpty()) { return false; } + for (const CAircraftCfgEntries &entries : (*this)) + { + if (stringCompare(entries.getTitle(), title, Qt::CaseInsensitive)) { return true; } + } + return false; + } + CAircraftModelList CAircraftCfgEntriesList::toAircraftModelList(bool ignoreDuplicatesAndEmptyModelStrings, CStatusMessageList &msgs) const { CAircraftModelList ml; diff --git a/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.h b/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.h index 8da20dfc6..337fdaae2 100644 --- a/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.h +++ b/src/blackmisc/simulation/fscommon/aircraftcfgentrieslist.h @@ -49,6 +49,9 @@ namespace BlackMisc //! All titles (aka model names) QStringList getTitles(bool sorted = false) const; + //! All titles as string + QString getTitlesAsString(bool sorted, const QString &separator = ", ") const; + //! As aircraft models BlackMisc::Simulation::CAircraftModelList toAircraftModelList(bool ignoreDuplicatesAndEmptyModelStrings, CStatusMessageList &msgs) const; @@ -61,6 +64,9 @@ namespace BlackMisc //! Find by title CAircraftCfgEntriesList findByTitle(const QString &title, Qt::CaseSensitivity caseSensitivity = Qt::CaseInsensitive) const; + //! Can check if a title (model string) is known + bool containsTitle(const QString &title) const; + private: //! Section within file enum FileSection diff --git a/src/plugins/simulator/fsxcommon/simconnectobject.cpp b/src/plugins/simulator/fsxcommon/simconnectobject.cpp index aca6293b3..6d1cf3c67 100644 --- a/src/plugins/simulator/fsxcommon/simconnectobject.cpp +++ b/src/plugins/simulator/fsxcommon/simconnectobject.cpp @@ -52,6 +52,7 @@ namespace BlackSimPlugin { m_aircraft = aircraft; m_callsignByteArray = aircraft.getCallsignAsString().toLatin1(); + m_type = aircraft.isTerrainProbe() ? TerrainProbe : Aircraft; } void CSimConnectObject::setAircraftModelString(const QString &modelString) @@ -327,6 +328,7 @@ namespace BlackSimPlugin CSimConnectObject CSimConnectObjects::getOldestObject() const { + if (this->isEmpty()) { return CSimConnectObject(); } CSimConnectObject oldestSimObj = *this->begin(); for (const CSimConnectObject &simObj : this->values()) { diff --git a/src/plugins/simulator/fsxcommon/simconnectobject.h b/src/plugins/simulator/fsxcommon/simconnectobject.h index 3e41a2d2b..f4b9991d4 100644 --- a/src/plugins/simulator/fsxcommon/simconnectobject.h +++ b/src/plugins/simulator/fsxcommon/simconnectobject.h @@ -54,6 +54,9 @@ namespace BlackSimPlugin //! Get callsign const BlackMisc::Aviation::CCallsign &getCallsign() const { return m_aircraft.getCallsign(); } + //! Get callsign + const QString &getCallsignAsString() const { return m_aircraft.getCallsign().asString(); } + //! Callsign? bool hasCallsign() const { return !this->getCallsign().isEmpty(); }