From 13ebf6bafeb9f61a39e41bcf09920165f001a4f9 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Fri, 14 Sep 2018 00:11:21 +0200 Subject: [PATCH] Ref T348, updated utility functions in CSimConnectObject/CAircraftCfgEntriesList, also fixed bug that type need to be updated to probe setting when aircraft changes Related: Ref T317 Ref T247 Ref T335 --- .../fscommon/aircraftcfgentrieslist.cpp | 24 +++++++++++++++---- .../fscommon/aircraftcfgentrieslist.h | 6 +++++ .../simulator/fsxcommon/simconnectobject.cpp | 2 ++ .../simulator/fsxcommon/simconnectobject.h | 3 +++ 4 files changed, 30 insertions(+), 5 deletions(-) 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(); }