From da92f3885cfd89765bb00373eb92f578af40e54c Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 22 Jan 2019 21:27:57 +0100 Subject: [PATCH] Ref T515, settings for matching (run validation) --- src/blackgui/editors/matchingform.cpp | 8 +- src/blackgui/editors/matchingform.ui | 33 +++-- .../simulation/aircraftmatchersetup.cpp | 116 ++++++++++-------- .../simulation/aircraftmatchersetup.h | 26 ++-- 4 files changed, 115 insertions(+), 68 deletions(-) diff --git a/src/blackgui/editors/matchingform.cpp b/src/blackgui/editors/matchingform.cpp index 80c12ced6..a5fa7c614 100644 --- a/src/blackgui/editors/matchingform.cpp +++ b/src/blackgui/editors/matchingform.cpp @@ -28,7 +28,6 @@ namespace BlackGui connect(ui->rb_Reduction, &QRadioButton::released, this, &CMatchingForm::onAlgorithmChanged, Qt::QueuedConnection); connect(ui->rb_ScoreAndReduction, &QRadioButton::released, this, &CMatchingForm::onAlgorithmChanged, Qt::QueuedConnection); connect(ui->rb_ScoreOnly, &QRadioButton::released, this, &CMatchingForm::onAlgorithmChanged, Qt::QueuedConnection); - connect(ui->pb_Reset, &QPushButton::released, this, &CMatchingForm::clear, Qt::QueuedConnection); } @@ -47,6 +46,8 @@ namespace BlackGui CGuiUtility::checkBoxReadOnly(ui->cb_ScoreIgnoreZeros, readonly); CGuiUtility::checkBoxReadOnly(ui->cb_ScorePreferColorLiveries, readonly); CGuiUtility::checkBoxReadOnly(ui->cb_ModelSetRemoveFailed, readonly); + CGuiUtility::checkBoxReadOnly(ui->cb_ModelFailedFailover, readonly); + CGuiUtility::checkBoxReadOnly(ui->cb_ModelSetVerification, readonly); const bool enabled = !readonly; ui->rb_Reduction->setEnabled(enabled); @@ -82,6 +83,8 @@ namespace BlackGui ui->cb_ExclNoExcludedModels->setChecked(mode.testFlag(CAircraftMatcherSetup::ExcludeNoExcluded)); ui->cb_ExclNoDbData->setChecked(mode.testFlag(CAircraftMatcherSetup::ExcludeNoDbData)); ui->cb_ModelSetRemoveFailed->setChecked(mode.testFlag(CAircraftMatcherSetup::ModelSetRemoveFailedModel)); + ui->cb_ModelFailedFailover->setChecked(mode.testFlag(CAircraftMatcherSetup::ModelFailoverWhenNoModelCanBeLoaded)); + ui->cb_ModelSetVerification->setChecked(mode.testFlag(CAircraftMatcherSetup::ModelVerificationAtStartup)); this->setMatchingAlgorithm(setup); this->setPickStrategy(setup); @@ -118,7 +121,8 @@ namespace BlackGui ui->cb_ByVtol->isChecked(), ui->cb_ScoreIgnoreZeros->isChecked(), ui->cb_ScorePreferColorLiveries->isChecked(), ui->cb_ExclNoDbData->isChecked(), ui->cb_ExclNoExcludedModels->isChecked(), - ui->cb_ModelSetRemoveFailed->isChecked() + ui->cb_ModelSetVerification->isChecked(), ui->cb_ModelSetRemoveFailed->isChecked(), + ui->cb_ModelFailedFailover->isChecked() ); } diff --git a/src/blackgui/editors/matchingform.ui b/src/blackgui/editors/matchingform.ui index 7f533d41f..018e8667f 100644 --- a/src/blackgui/editors/matchingform.ui +++ b/src/blackgui/editors/matchingform.ui @@ -7,7 +7,7 @@ 0 0 293 - 453 + 465 @@ -190,13 +190,30 @@ - Failure handling + Failure handling and verification - - + + + + temp.remove failed from model set + - removed failed from set + temp.remove failed + + + + + + + verify set on startup + + + + + + + use other model if failed @@ -215,7 +232,7 @@ models marked as excluded are ignored - Excluded models + excluded models @@ -225,7 +242,7 @@ models without DB data are ignored - Exclude if no DB data + exclude if no DB data @@ -274,7 +291,9 @@ cb_ByVtol cb_ByForceMilitary cb_ByForceCivilian + cb_ModelSetVerification cb_ModelSetRemoveFailed + cb_ModelFailedFailover cb_ExclNoExcludedModels cb_ExclNoDbData cb_ScorePreferColorLiveries diff --git a/src/blackmisc/simulation/aircraftmatchersetup.cpp b/src/blackmisc/simulation/aircraftmatchersetup.cpp index fc66256c6..7f0781bc3 100644 --- a/src/blackmisc/simulation/aircraftmatchersetup.cpp +++ b/src/blackmisc/simulation/aircraftmatchersetup.cpp @@ -45,6 +45,13 @@ namespace BlackMisc return true; } + void CAircraftMatcherSetup::setVerificationAtStartup(bool verify) + { + MatchingMode m = this->getMatchingMode(); + m.setFlag(ModelVerificationAtStartup, verify); + this->setMatchingMode(m); + } + QString CAircraftMatcherSetup::convertToQString(bool i18n) const { Q_UNUSED(i18n); @@ -61,8 +68,8 @@ namespace BlackMisc switch (i) { case IndexMatchingAlgorithm: return CVariant::fromValue(m_algorithm); - case IndexMatchingMode: return CVariant::fromValue(m_mode); - case IndexPickStrategy: return CVariant::fromValue(m_strategy); + case IndexMatchingMode: return CVariant::fromValue(m_mode); + case IndexPickStrategy: return CVariant::fromValue(m_strategy); default: break; } return CValueObject::propertyByIndex(index); @@ -75,8 +82,8 @@ namespace BlackMisc switch (i) { case IndexMatchingAlgorithm: m_algorithm = variant.toInt(); break; - case IndexMatchingMode: m_mode = variant.toInt(); break; - case IndexPickStrategy: m_strategy = variant.toInt(); break; + case IndexMatchingMode: m_mode = variant.toInt(); break; + case IndexPickStrategy: m_strategy = variant.toInt(); break; default: break; } CValueObject::setPropertyByIndex(index, variant); @@ -88,12 +95,8 @@ namespace BlackMisc MatchingMode mode = ModeNone; switch (algorithm) { - case MatchingStepwiseReduce: - mode = ModeDefaultReduce; - break; - case MatchingScoreBased: - mode = ModeDefaultScore; - break; + case MatchingStepwiseReduce: mode = ModeDefaultReduce; break; + case MatchingScoreBased: mode = ModeDefaultScore; break; case MatchingStepwiseReducePlusScoreBased: default: mode = ModeDefaultReducePlusScore; @@ -134,25 +137,29 @@ namespace BlackMisc static const QString preferColorLiveries("scoring, prefer color liveries"); static const QString exNoDb("excl.without DB data"); static const QString exExcl("excl.excluded"); - static const QString remModelSet("rem.from model set"); + static const QString removeFromModelSet("rem.from model set"); + static const QString verification("Verify models at startup"); + static const QString modelFailedLoad("Replace models failed to load"); switch (modeFlag) { - case ByModelString: return ms; - case ByIcaoData: return icao; - case ByFamily: return family; - case ByLivery: return livery; - case ByCombinedType: return combined; - case ByIcaoOrderAircraftFirst: return icaoAircraft; - case ByIcaoOrderAirlineFirst: return icaoAirline; - case ByForceCivilian: return forceCiv; - case ByForceMilitary: return forceMil; - case ByVtol: return vtol; - case ScoreIgnoreZeros: return noZeros; - case ScorePreferColorLiveries: return preferColorLiveries; - case ExcludeNoDbData: return exNoDb; - case ExcludeNoExcluded: return exExcl; - case ModelSetRemoveFailedModel: return remModelSet; + case ByModelString: return ms; + case ByIcaoData: return icao; + case ByFamily: return family; + case ByLivery: return livery; + case ByCombinedType: return combined; + case ByIcaoOrderAircraftFirst: return icaoAircraft; + case ByIcaoOrderAirlineFirst: return icaoAirline; + case ByForceCivilian: return forceCiv; + case ByForceMilitary: return forceMil; + case ByVtol: return vtol; + case ScoreIgnoreZeros: return noZeros; + case ScorePreferColorLiveries: return preferColorLiveries; + case ExcludeNoDbData: return exNoDb; + case ExcludeNoExcluded: return exExcl; + case ModelSetRemoveFailedModel: return removeFromModelSet; + case ModelVerificationAtStartup: return verification; + case ModelFailoverWhenNoModelCanBeLoaded: return modelFailedLoad; default: break; } @@ -163,19 +170,22 @@ namespace BlackMisc QString CAircraftMatcherSetup::modeToString(MatchingMode mode) { QStringList modes; - if (mode.testFlag(ByModelString)) { modes << modeFlagToString(ByModelString); } - if (mode.testFlag(ByIcaoData)) { modes << modeFlagToString(ByIcaoData); } - if (mode.testFlag(ByIcaoOrderAircraftFirst)) { modes << modeFlagToString(ByIcaoOrderAircraftFirst); } - if (mode.testFlag(ByIcaoOrderAirlineFirst)) { modes << modeFlagToString(ByIcaoOrderAirlineFirst); } - if (mode.testFlag(ByFamily)) { modes << modeFlagToString(ByFamily); } - if (mode.testFlag(ByLivery)) { modes << modeFlagToString(ByLivery); } - if (mode.testFlag(ByCombinedType)) { modes << modeFlagToString(ByCombinedType); } - if (mode.testFlag(ByForceCivilian)) { modes << modeFlagToString(ByForceCivilian); } - if (mode.testFlag(ByForceMilitary)) { modes << modeFlagToString(ByForceMilitary); } - if (mode.testFlag(ByVtol)) { modes << modeFlagToString(ByVtol); } - if (mode.testFlag(ScoreIgnoreZeros)) { modes << modeFlagToString(ScoreIgnoreZeros); } - if (mode.testFlag(ScorePreferColorLiveries)) { modes << modeFlagToString(ScorePreferColorLiveries); } - if (mode.testFlag(ModelSetRemoveFailedModel)) { modes << modeFlagToString(ModelSetRemoveFailedModel); } + if (mode.testFlag(ByModelString)) { modes << modeFlagToString(ByModelString); } + if (mode.testFlag(ByIcaoData)) { modes << modeFlagToString(ByIcaoData); } + if (mode.testFlag(ByIcaoOrderAircraftFirst)) { modes << modeFlagToString(ByIcaoOrderAircraftFirst); } + if (mode.testFlag(ByIcaoOrderAirlineFirst)) { modes << modeFlagToString(ByIcaoOrderAirlineFirst); } + if (mode.testFlag(ByFamily)) { modes << modeFlagToString(ByFamily); } + if (mode.testFlag(ByLivery)) { modes << modeFlagToString(ByLivery); } + if (mode.testFlag(ByCombinedType)) { modes << modeFlagToString(ByCombinedType); } + if (mode.testFlag(ByForceCivilian)) { modes << modeFlagToString(ByForceCivilian); } + if (mode.testFlag(ByForceMilitary)) { modes << modeFlagToString(ByForceMilitary); } + if (mode.testFlag(ByVtol)) { modes << modeFlagToString(ByVtol); } + if (mode.testFlag(ScoreIgnoreZeros)) { modes << modeFlagToString(ScoreIgnoreZeros); } + if (mode.testFlag(ScorePreferColorLiveries)) { modes << modeFlagToString(ScorePreferColorLiveries); } + if (mode.testFlag(ModelSetRemoveFailedModel)) { modes << modeFlagToString(ModelSetRemoveFailedModel); } + if (mode.testFlag(ModelVerificationAtStartup)) { modes << modeFlagToString(ModelVerificationAtStartup); } + if (mode.testFlag(ModelFailoverWhenNoModelCanBeLoaded)) { modes << modeFlagToString(ModelFailoverWhenNoModelCanBeLoaded); } + return modes.join(", "); } @@ -202,22 +212,24 @@ namespace BlackMisc bool byVtol, bool scoreIgnoreZeros, bool scorePreferColorLiveries, bool excludeNoDbData, bool excludeNoExcluded, - bool modelSetRemoveFailedModel) + bool modelVerification, bool modelSetRemoveFailedModel, bool modelFailover) { MatchingMode mode = byModelString ? ByModelString : ModeNone; - if (byIcaoDataAircraft1st) { mode |= ByIcaoOrderAircraftFirst; } - if (byIcaoDataAirline1st) { mode |= ByIcaoOrderAirlineFirst; } - if (byFamily) { mode |= ByFamily; } - if (byLivery) { mode |= ByLivery; } - if (byCombinedType) { mode |= ByCombinedType; } - if (byForceMilitary) { mode |= ByForceMilitary; } - if (byForceCivilian) { mode |= ByForceCivilian; } - if (byVtol) { mode |= ByVtol; } - if (scoreIgnoreZeros) { mode |= ScoreIgnoreZeros; } - if (scorePreferColorLiveries) { mode |= ScorePreferColorLiveries; } - if (excludeNoDbData) { mode |= ExcludeNoDbData; } - if (excludeNoExcluded) { mode |= ExcludeNoExcluded; } + if (byIcaoDataAircraft1st) { mode |= ByIcaoOrderAircraftFirst; } + if (byIcaoDataAirline1st) { mode |= ByIcaoOrderAirlineFirst; } + if (byFamily) { mode |= ByFamily; } + if (byLivery) { mode |= ByLivery; } + if (byCombinedType) { mode |= ByCombinedType; } + if (byForceMilitary) { mode |= ByForceMilitary; } + if (byForceCivilian) { mode |= ByForceCivilian; } + if (byVtol) { mode |= ByVtol; } + if (scoreIgnoreZeros) { mode |= ScoreIgnoreZeros; } + if (scorePreferColorLiveries) { mode |= ScorePreferColorLiveries; } + if (excludeNoDbData) { mode |= ExcludeNoDbData; } + if (excludeNoExcluded) { mode |= ExcludeNoExcluded; } if (modelSetRemoveFailedModel) { mode |= ModelSetRemoveFailedModel; } + if (modelVerification) { mode |= ModelVerificationAtStartup; } + if (modelFailover) { mode |= ModelFailoverWhenNoModelCanBeLoaded; } return mode; } } // namespace diff --git a/src/blackmisc/simulation/aircraftmatchersetup.h b/src/blackmisc/simulation/aircraftmatchersetup.h index faa29f4a1..fd12adc94 100644 --- a/src/blackmisc/simulation/aircraftmatchersetup.h +++ b/src/blackmisc/simulation/aircraftmatchersetup.h @@ -55,13 +55,18 @@ namespace BlackMisc ExcludeNoExcluded = 1 << 14, ExcludeDefault = ExcludeNoExcluded | ExcludeNoDbData, // --- model set --- - ModelSetRemoveFailedModel = 1 << 15, + ModelSetRemoveFailedModel = 1 << 15, + ModelVerificationAtStartup = 1 << 16, + ModelFailoverWhenNoModelCanBeLoaded = 1 << 17, // --- others --- ModeNone = 0, ModeByFLags = ByMilitary | ByVtol, + // ModeDefaultSet = ModelSetRemoveFailedModel | ModelVerificationAtStartup | ModelFailoverWhenNoModelCanBeLoaded, + ModeDefaultSet = ModelSetRemoveFailedModel | ModelFailoverWhenNoModelCanBeLoaded, ModeDefaultScore = ScoreIgnoreZeros | ScorePreferColorLiveries | ExcludeDefault, ModeDefaultReduce = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ByLivery | ExcludeDefault, - ModeDefaultReducePlusScore = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ModeDefaultScore | ExcludeDefault + ModeDefaultReducePlusScore = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ModeDefaultScore | ExcludeDefault, + ModeDefault = ModeDefaultReducePlusScore | ModeDefaultSet }; Q_DECLARE_FLAGS(MatchingMode, MatchingModeFlag) @@ -102,6 +107,13 @@ namespace BlackMisc //! Matching mode MatchingMode getMatchingMode() const { return static_cast(m_mode); } + //! Verification at startup? + //! \sa ModelVerificationOnStartup + bool doVerificationAtStartup() const { return this->getMatchingMode().testFlag(ModelVerificationAtStartup); } + + //! Set startup verification + void setVerificationAtStartup(bool verify); + //! Matching mode as string QString getMatchingModeAsString() const { return modeToString(this->getMatchingMode()); } @@ -149,13 +161,13 @@ namespace BlackMisc bool byFamily, bool byLivery, bool byCombinedType, bool byForceMilitary, bool byForceCivilian, bool byVtol, - bool scoreIgnoreZeros, bool scorePreferColorLiveries, bool excludeNoDbData, bool excludeNoExcluded, - bool modelSetRemoveFailedModel); + bool scoreIgnoreZeros, bool scorePreferColorLiveries, bool excludeNoDbData, bool excludeNoExcluded, + bool modelVerification, bool modelSetRemoveFailedModel, bool modelFailover); private: - int m_algorithm = static_cast(MatchingStepwiseReducePlusScoreBased); - int m_mode = static_cast(ModeDefaultReducePlusScore); - int m_strategy = static_cast(PickByOrder); + int m_algorithm = static_cast(ModeDefault); + int m_mode = static_cast(ModeDefaultReducePlusScore); + int m_strategy = static_cast(PickByOrder); BLACK_METACLASS( CAircraftMatcherSetup,