From c675ef5c32d844c7016740d1cff2fb851c13a8b7 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 12 Sep 2018 16:18:56 +0200 Subject: [PATCH] Ref T335, misc. improvements of value classes/list - verifyModelData - setModelType - getCallsignsAsString --- src/blackmisc/aviation/callsignset.cpp | 6 +++++ src/blackmisc/aviation/callsignset.h | 3 +++ src/blackmisc/simulation/aircraftmodel.cpp | 22 ++++++++++++++++++- src/blackmisc/simulation/aircraftmodel.h | 3 +++ .../simulation/aircraftmodellist.cpp | 12 ++++++++++ src/blackmisc/simulation/aircraftmodellist.h | 5 ++++- .../simulation/simulatedaircraft.cpp | 12 +++++++++- src/blackmisc/simulation/simulatedaircraft.h | 2 +- 8 files changed, 61 insertions(+), 4 deletions(-) diff --git a/src/blackmisc/aviation/callsignset.cpp b/src/blackmisc/aviation/callsignset.cpp index b21dbce5e..66cc1c241 100644 --- a/src/blackmisc/aviation/callsignset.cpp +++ b/src/blackmisc/aviation/callsignset.cpp @@ -48,6 +48,12 @@ namespace BlackMisc return callsigns; } + QString CCallsignSet::getCallsignsAsString(bool sorted, const QString &separator) const + { + if (this->isEmpty()) { return QStringLiteral(""); } + return this->getCallsignStrings(sorted).join(separator); + } + void CCallsignSet::registerMetadata() { qRegisterMetaType>(); diff --git a/src/blackmisc/aviation/callsignset.h b/src/blackmisc/aviation/callsignset.h index 428409be9..69bf50d95 100644 --- a/src/blackmisc/aviation/callsignset.h +++ b/src/blackmisc/aviation/callsignset.h @@ -47,6 +47,9 @@ namespace BlackMisc //! The callsign strings QStringList getCallsignStrings(bool sorted = false) const; + //! Callsigns as string + QString getCallsignsAsString(bool sorted = false, const QString &separator = ", ") const; + //! Register metadata static void registerMetadata(); }; diff --git a/src/blackmisc/simulation/aircraftmodel.cpp b/src/blackmisc/simulation/aircraftmodel.cpp index 08dce16bb..4e2066ba3 100644 --- a/src/blackmisc/simulation/aircraftmodel.cpp +++ b/src/blackmisc/simulation/aircraftmodel.cpp @@ -136,6 +136,26 @@ namespace BlackMisc .arg(this->getLivery().asHtmlSummary(" ")).replace(" ", " "); } + CStatusMessageList CAircraftModel::verifyModelData() const + { + CStatusMessageList msgs; + const ModelType t = this->getModelType(); + if (t == TypeOwnSimulatorModel || t == TypeManuallySet || t == TypeDatabaseEntry) + { + if (!this->existsCorrespondingFile()) + { + const CStatusMessage m = CStatusMessage(this).validationError("File '%1' not readable") << this->getFileName(); + msgs.push_back(m); + } + } + else + { + const CStatusMessage m = CStatusMessage(this).validationError("Invalid model type to check: '%1'") << this->getModelTypeAsString(); + msgs.push_back(m); + } + return msgs; + } + bool CAircraftModel::canInitializeFromFsd() const { const bool nw = this->getModelType() == CAircraftModel::TypeQueriedFromNetwork || @@ -721,7 +741,7 @@ namespace BlackMisc static const QString db("database"); static const QString def("map.default"); static const QString ownSim("own simulator"); - static const QString set("set"); + static const QString set("manually set"); static const QString fsinn("FSInn"); static const QString probe("probe"); static const QString unknown("unknown"); diff --git a/src/blackmisc/simulation/aircraftmodel.h b/src/blackmisc/simulation/aircraftmodel.h index 55f78d3ea..9d416ac50 100644 --- a/src/blackmisc/simulation/aircraftmodel.h +++ b/src/blackmisc/simulation/aircraftmodel.h @@ -424,6 +424,9 @@ namespace BlackMisc // ---------------- end file related functions -------------- + //! Verify the model data + CStatusMessageList verifyModelData() const; + //! Model type static const QString &modelTypeToString(ModelType type); diff --git a/src/blackmisc/simulation/aircraftmodellist.cpp b/src/blackmisc/simulation/aircraftmodellist.cpp index c1d2ee613..d9780ad5d 100644 --- a/src/blackmisc/simulation/aircraftmodellist.cpp +++ b/src/blackmisc/simulation/aircraftmodellist.cpp @@ -474,6 +474,18 @@ namespace BlackMisc return c; } + int CAircraftModelList::setModelType(CAircraftModel::ModelType type) + { + int c = 0; + for (CAircraftModel &model : (*this)) + { + if (model.getModelType() == type) { continue; } + model.setModelType(type); + c++; + } + return c; + } + int CAircraftModelList::setCG(const CLength &cg) { int c = 0; diff --git a/src/blackmisc/simulation/aircraftmodellist.h b/src/blackmisc/simulation/aircraftmodellist.h index d8f3834c7..a484ccf95 100644 --- a/src/blackmisc/simulation/aircraftmodellist.h +++ b/src/blackmisc/simulation/aircraftmodellist.h @@ -215,7 +215,10 @@ namespace BlackMisc CSimulatorInfo simulatorsSupported() const; //! Set mode for all elements - int setModelMode(Simulation::CAircraftModel::ModelMode mode); + int setModelMode(CAircraftModel::ModelMode mode); + + //! Set type for all elements + int setModelType(CAircraftModel::ModelType type); //! Set center of gravity int setCG(const PhysicalQuantities::CLength &cg); diff --git a/src/blackmisc/simulation/simulatedaircraft.cpp b/src/blackmisc/simulation/simulatedaircraft.cpp index bc33b5577..664391efa 100644 --- a/src/blackmisc/simulation/simulatedaircraft.cpp +++ b/src/blackmisc/simulation/simulatedaircraft.cpp @@ -117,6 +117,13 @@ namespace BlackMisc return m_enabled; } + bool CSimulatedAircraft::setEnabled(bool enabled) + { + if (m_enabled == enabled) { return false; } + m_enabled = enabled; + return true; + } + bool CSimulatedAircraft::setFastPositionUpdates(bool useFastPositions) { if (m_fastPositionUpdates == useFastPositions) { return false; } @@ -494,7 +501,10 @@ namespace BlackMisc const CLivery livery(this->getModel().getLivery()); const CLivery liveryNw(this->getNetworkModel().getLivery()); - if (livery.isDbEqual(liveryNw) || livery == liveryNw) { return QStringLiteral("[=] ") + livery.getCombinedCodePlusInfo(); } + if (livery.isDbEqual(liveryNw) || livery == liveryNw) { return QStringLiteral("[==] ") + livery.getCombinedCodePlusInfo(); } + if (livery.getCombinedCode() == liveryNw.getCombinedCode()) { return QStringLiteral("[=] ") + livery.getCombinedCodePlusInfo(); } + if (livery.isAirlineLivery() && liveryNw.isAirlineLivery()) { return this->getNetworkModelAirlineIcaoDifference(); } + static const QString diff("%1 -> %2"); return diff.arg(liveryNw.getCombinedCodePlusInfo(), livery.getCombinedCodePlusInfo()); } diff --git a/src/blackmisc/simulation/simulatedaircraft.h b/src/blackmisc/simulation/simulatedaircraft.h index 4e6781e06..f96bda744 100644 --- a/src/blackmisc/simulation/simulatedaircraft.h +++ b/src/blackmisc/simulation/simulatedaircraft.h @@ -412,7 +412,7 @@ namespace BlackMisc bool isEnabled() const; //! Enabled / disabled - void setEnabled(bool enabled) { m_enabled = enabled; } + bool setEnabled(bool enabled); //! Rendered? bool isRendered() const { return m_rendered; }