diff --git a/src/blackgui/components/settingsmatchingcomponent.ui b/src/blackgui/components/settingsmatchingcomponent.ui index d60192165..a8a177c6f 100644 --- a/src/blackgui/components/settingsmatchingcomponent.ui +++ b/src/blackgui/components/settingsmatchingcomponent.ui @@ -32,14 +32,6 @@ true - - - 0 - 0 - 296 - 450 - - 0 @@ -58,7 +50,7 @@ 0 - 450 + 550 diff --git a/src/blackgui/editors/matchingform.cpp b/src/blackgui/editors/matchingform.cpp index c5a48941d..4d9d68c5b 100644 --- a/src/blackgui/editors/matchingform.cpp +++ b/src/blackgui/editors/matchingform.cpp @@ -27,7 +27,8 @@ 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); + connect(ui->pb_ResetAlgorithm, &QPushButton::released, this, &CMatchingForm::resetByAlgorithm, Qt::QueuedConnection); + connect(ui->pb_ResetAll, &QPushButton::released, this, &CMatchingForm::resetAll, Qt::QueuedConnection); } CMatchingForm::~CMatchingForm() @@ -47,6 +48,8 @@ namespace BlackGui CGuiUtility::checkBoxReadOnly(ui->cb_ModelSetRemoveFailed, readonly); CGuiUtility::checkBoxReadOnly(ui->cb_ModelFailedFailover, readonly); CGuiUtility::checkBoxReadOnly(ui->cb_ModelSetVerification, readonly); + CGuiUtility::checkBoxReadOnly(ui->cb_CategoryGlider, readonly); + CGuiUtility::checkBoxReadOnly(ui->cb_CategoryMilitaryAircraft, readonly); const bool enabled = !readonly; ui->rb_Reduction->setEnabled(enabled); @@ -76,6 +79,8 @@ namespace BlackGui ui->cb_ByFamily->setChecked(mode.testFlag(CAircraftMatcherSetup::ByFamily)); ui->cb_ByForceMilitary->setChecked(mode.testFlag(CAircraftMatcherSetup::ByForceMilitary)); ui->cb_ByForceCivilian->setChecked(mode.testFlag(CAircraftMatcherSetup::ByForceCivilian)); + ui->cb_CategoryGlider->setChecked(mode.testFlag(CAircraftMatcherSetup::ByCategoryGlider)); + ui->cb_CategoryMilitaryAircraft->setChecked(mode.testFlag(CAircraftMatcherSetup::ByCategoryMilitary)); ui->cb_ByVtol->setChecked(mode.testFlag(CAircraftMatcherSetup::ByVtol)); ui->cb_ScoreIgnoreZeros->setChecked(mode.testFlag(CAircraftMatcherSetup::ScoreIgnoreZeros)); ui->cb_ScorePreferColorLiveries->setChecked(mode.testFlag(CAircraftMatcherSetup::ScorePreferColorLiveries)); @@ -97,7 +102,18 @@ namespace BlackGui void CMatchingForm::clear() { - const CAircraftMatcherSetup s(algorithm()); + this->resetAll(); + } + + void CMatchingForm::resetByAlgorithm() + { + const CAircraftMatcherSetup s(this->algorithm()); + this->setValue(s); + } + + void CMatchingForm::resetAll() + { + const CAircraftMatcherSetup s; this->setValue(s); } @@ -118,6 +134,8 @@ namespace BlackGui ui->cb_ByForceMilitary->isChecked(), ui->cb_ByForceCivilian->isChecked(), ui->cb_ByVtol->isChecked(), + ui->cb_CategoryGlider->isChecked(), + ui->cb_CategoryMilitaryAircraft->isChecked(), ui->cb_ScoreIgnoreZeros->isChecked(), ui->cb_ScorePreferColorLiveries->isChecked(), ui->cb_ExclNoDbData->isChecked(), ui->cb_ExclNoExcludedModels->isChecked(), ui->cb_ModelSetVerification->isChecked(), ui->cb_ModelSetRemoveFailed->isChecked(), @@ -172,5 +190,6 @@ namespace BlackGui const CAircraftMatcherSetup setup = this->value(); this->setValue(setup); } + } // ns } // ns diff --git a/src/blackgui/editors/matchingform.h b/src/blackgui/editors/matchingform.h index 0ad0f763a..cb987323a 100644 --- a/src/blackgui/editors/matchingform.h +++ b/src/blackgui/editors/matchingform.h @@ -66,6 +66,11 @@ namespace BlackGui //! Algorithm has been toggled void onAlgorithmChanged(); + //! Reset @{ + void resetByAlgorithm(); + void resetAll(); + //! } + QScopedPointer ui; }; } // ns diff --git a/src/blackgui/editors/matchingform.ui b/src/blackgui/editors/matchingform.ui index 018e8667f..3214d11b7 100644 --- a/src/blackgui/editors/matchingform.ui +++ b/src/blackgui/editors/matchingform.ui @@ -2,14 +2,6 @@ CMatchingForm - - - 0 - 0 - 293 - 465 - - Matching form @@ -26,6 +18,13 @@ 5 + + + + reset (all) + + + @@ -54,9 +53,9 @@ - + - reset + reset (by algorithm) @@ -187,6 +186,29 @@ + + + + Matching by categories + + + + + + Glider + + + + + + + military aircraft + + + + + + @@ -278,7 +300,7 @@ rb_Reduction rb_ScoreOnly rb_ScoreAndReduction - pb_Reset + pb_ResetAlgorithm rb_PickFirst rb_PickRandom rb_PickByOrder @@ -291,6 +313,8 @@ cb_ByVtol cb_ByForceMilitary cb_ByForceCivilian + cb_CategoryGlider + cb_CategoryMilitaryAircraft cb_ModelSetVerification cb_ModelSetRemoveFailed cb_ModelFailedFailover diff --git a/src/blackmisc/simulation/aircraftmatchersetup.cpp b/src/blackmisc/simulation/aircraftmatchersetup.cpp index 2869fa547..d723c4f8d 100644 --- a/src/blackmisc/simulation/aircraftmatchersetup.cpp +++ b/src/blackmisc/simulation/aircraftmatchersetup.cpp @@ -15,7 +15,7 @@ namespace BlackMisc { CAircraftMatcherSetup::CAircraftMatcherSetup() { - this->reset(MatchingStepwiseReducePlusScoreBased); + this->reset(); } CAircraftMatcherSetup::CAircraftMatcherSetup(CAircraftMatcherSetup::MatchingAlgorithm algorithm) @@ -88,6 +88,11 @@ namespace BlackMisc CValueObject::setPropertyByIndex(index, variant); } + void CAircraftMatcherSetup::reset() + { + this->reset(MatchingStepwiseReducePlusScoreBased); + } + void CAircraftMatcherSetup::reset(CAircraftMatcherSetup::MatchingAlgorithm algorithm) { m_algorithm = static_cast(algorithm); @@ -101,6 +106,8 @@ namespace BlackMisc mode = ModeDefaultReducePlusScore; break; } + mode |= ModeDefaultSet; // add set default + this->setMatchingMode(mode); this->setPickStrategy(PickByOrder); } @@ -139,6 +146,8 @@ namespace BlackMisc static const QString removeFromModelSet("rem.from model set"); static const QString verification("Verify models at startup"); static const QString modelFailedAdded("Replace models failed to be added"); + static const QString categoryGlider("glider categories"); + static const QString categoryMilitary("military categories"); switch (modeFlag) { @@ -152,6 +161,8 @@ namespace BlackMisc case ByForceCivilian: return forceCiv; case ByForceMilitary: return forceMil; case ByVtol: return vtol; + case ByCategoryGlider: return categoryGlider; + case ByCategoryMilitary: return categoryMilitary; case ScoreIgnoreZeros: return noZeros; case ScorePreferColorLiveries: return preferColorLiveries; case ExcludeNoDbData: return exNoDb; @@ -178,6 +189,8 @@ namespace BlackMisc if (mode.testFlag(ByCombinedType)) { modes << modeFlagToString(ByCombinedType); } if (mode.testFlag(ByForceCivilian)) { modes << modeFlagToString(ByForceCivilian); } if (mode.testFlag(ByForceMilitary)) { modes << modeFlagToString(ByForceMilitary); } + if (mode.testFlag(ByCategoryGlider)) { modes << modeFlagToString(ByCategoryGlider); } + if (mode.testFlag(ByCategoryMilitary)) { modes << modeFlagToString(ByCategoryMilitary); } if (mode.testFlag(ByVtol)) { modes << modeFlagToString(ByVtol); } if (mode.testFlag(ScoreIgnoreZeros)) { modes << modeFlagToString(ScoreIgnoreZeros); } if (mode.testFlag(ScorePreferColorLiveries)) { modes << modeFlagToString(ScorePreferColorLiveries); } @@ -206,12 +219,13 @@ namespace BlackMisc return unknown; } - CAircraftMatcherSetup::MatchingMode CAircraftMatcherSetup::matchingMode(bool byModelString, bool byIcaoDataAircraft1st, bool byIcaoDataAirline1st, bool byFamily, bool byLivery, bool byCombinedType, - bool byForceMilitary, bool byForceCivilian, - bool byVtol, - bool scoreIgnoreZeros, bool scorePreferColorLiveries, - bool excludeNoDbData, bool excludeNoExcluded, - bool modelVerification, bool modelSetRemoveFailedModel, bool modelFailover) + CAircraftMatcherSetup::MatchingMode CAircraftMatcherSetup::matchingMode( + bool byModelString, bool byIcaoDataAircraft1st, bool byIcaoDataAirline1st, bool byFamily, bool byLivery, bool byCombinedType, + bool byForceMilitary, bool byForceCivilian, bool byVtol, + bool byGliderCategory, bool byMilitaryCategory, + bool scoreIgnoreZeros, bool scorePreferColorLiveries, + bool excludeNoDbData, bool excludeNoExcluded, + bool modelVerification, bool modelSetRemoveFailedModel, bool modelFailover) { if (modelFailover) { modelSetRemoveFailedModel = true; } // otherwise this does not make sense @@ -224,6 +238,8 @@ namespace BlackMisc if (byForceMilitary) { mode |= ByForceMilitary; } if (byForceCivilian) { mode |= ByForceCivilian; } if (byVtol) { mode |= ByVtol; } + if (byGliderCategory) { mode |= ByCategoryGlider; } + if (byMilitaryCategory) { mode |= ByCategoryMilitary; } if (scoreIgnoreZeros) { mode |= ScoreIgnoreZeros; } if (scorePreferColorLiveries) { mode |= ScorePreferColorLiveries; } if (excludeNoDbData) { mode |= ExcludeNoDbData; } diff --git a/src/blackmisc/simulation/aircraftmatchersetup.h b/src/blackmisc/simulation/aircraftmatchersetup.h index 2f055fd5a..691ea0ecb 100644 --- a/src/blackmisc/simulation/aircraftmatchersetup.h +++ b/src/blackmisc/simulation/aircraftmatchersetup.h @@ -28,14 +28,14 @@ namespace BlackMisc { MatchingScoreBased, MatchingStepwiseReducePlusScoreBased, - MatchingStepwiseReduce + MatchingStepwiseReduce, }; //! Enabled matching mode flags enum MatchingModeFlag { ByModelString = 1 << 0, //!< allow exact model string match - ByIcaoData = 1 << 1, + ByIcaoData = 1 << 1, //!< ICAO airline and aircraft codes ByFamily = 1 << 2, ByLivery = 1 << 3, ByCombinedType = 1 << 4, @@ -46,6 +46,9 @@ namespace BlackMisc ByVtol = 1 << 8, ByIcaoOrderAircraftFirst = (1 << 9) | ByIcaoData, ByIcaoOrderAirlineFirst = (1 << 10) | ByIcaoData, + ByCategoryGlider = 1 << 20, + ByCategoryMilitary = 1 << 21, + // --- score based matching --- ScoreIgnoreZeros = 1 << 11, //!< zero scores are ignored ScorePreferColorLiveries = 1 << 12, //!< prefer color liveries @@ -57,15 +60,18 @@ namespace BlackMisc ModelSetRemoveFailedModel = 1 << 15, ModelVerificationAtStartup = 1 << 16, ModelFailoverIfNoModelCanBeAdded = 1 << 17, + // --- others --- ModeNone = 0, ModeByFLags = ByMilitary | ByVtol, + + // default mode for set handling ModeDefaultSet = ModelSetRemoveFailedModel | ModelVerificationAtStartup | ModelFailoverIfNoModelCanBeAdded, - // ModeDefaultSet = ModelSetRemoveFailedModel | ModelFailoverIfNoModelCanBeAdded, + + // default depending on algorithm ModeDefaultScore = ScoreIgnoreZeros | ScorePreferColorLiveries | ExcludeDefault, ModeDefaultReduce = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ByLivery | ExcludeDefault, ModeDefaultReducePlusScore = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ModeDefaultScore | ExcludeDefault, - ModeDefault = ModeDefaultReducePlusScore | ModeDefaultSet }; Q_DECLARE_FLAGS(MatchingMode, MatchingModeFlag) @@ -144,6 +150,9 @@ namespace BlackMisc //! \copydoc BlackMisc::Mixin::Index::setPropertyByIndex void setPropertyByIndex(const BlackMisc::CPropertyIndex &index, const BlackMisc::CVariant &variant); + //! Reset + void reset(); + //! Reset void reset(MatchingAlgorithm algorithm); @@ -163,12 +172,12 @@ namespace BlackMisc static MatchingMode matchingMode(bool byModelString, bool byIcaoDataAircraft1st, bool byIcaoDataAirline1st, bool byFamily, bool byLivery, bool byCombinedType, bool byForceMilitary, bool byForceCivilian, - bool byVtol, + bool byVtol, bool byGliderCategory, bool byMilitaryCategory, bool scoreIgnoreZeros, bool scorePreferColorLiveries, bool excludeNoDbData, bool excludeNoExcluded, bool modelVerification, bool modelSetRemoveFailedModel, bool modelFailover); private: - int m_algorithm = static_cast(ModeDefault); + int m_algorithm = static_cast(MatchingStepwiseReducePlusScoreBased); int m_mode = static_cast(ModeDefaultReducePlusScore); int m_strategy = static_cast(PickByOrder);