diff --git a/src/blackgui/editors/matchingform.cpp b/src/blackgui/editors/matchingform.cpp
index 4d1aa1070..ec22ce30e 100644
--- a/src/blackgui/editors/matchingform.cpp
+++ b/src/blackgui/editors/matchingform.cpp
@@ -27,12 +27,18 @@ namespace BlackGui
{
ui->setupUi(this);
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_ResetAlgorithm, &QPushButton::released, this, &CMatchingForm::resetByAlgorithm, Qt::QueuedConnection);
connect(ui->pb_ResetAll, &QPushButton::released, this, &CMatchingForm::resetAll, Qt::QueuedConnection);
connect(ui->pb_MsNetwork, &QPushButton::released, this, &CMatchingForm::fileDialog, Qt::QueuedConnection);
connect(ui->pb_MsMatching, &QPushButton::released, this, &CMatchingForm::fileDialog, 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->rb_AirlineGroupIfNoAirline, &QRadioButton::released, this, &CMatchingForm::onAirlineGroupChanged, Qt::QueuedConnection);
+ connect(ui->rb_AirlineGroupAsAirline, &QRadioButton::released, this, &CMatchingForm::onAirlineGroupChanged, Qt::QueuedConnection);
+ connect(ui->rb_AirlineGroupNo, &QRadioButton::released, this, &CMatchingForm::onAirlineGroupChanged, Qt::QueuedConnection);
}
CMatchingForm::~CMatchingForm()
@@ -62,7 +68,10 @@ namespace BlackGui
ui->rb_ScoreOnly->setEnabled(enabled);
ui->rb_ByIcaoDataAircraft1st->setEnabled(enabled);
ui->rb_ByIcaoDataAirline1st->setEnabled(enabled);
- ui->rb_PickFirst->setEnabled(enabled);
+ ui->rb_AirlineGroupAsAirline->setEnabled(enabled); ui->rb_PickFirst->setEnabled(enabled);
+ ui->rb_AirlineGroupNo->setEnabled(enabled);
+ ui->rb_AirlineGroupIfNoAirline->setEnabled(enabled);
+
ui->rb_PickByOrder->setEnabled(enabled);
ui->rb_PickRandom->setEnabled(enabled);
@@ -83,8 +92,21 @@ namespace BlackGui
const CAircraftMatcherSetup::MatchingMode mode = setup.getMatchingMode();
ui->cb_ByModelString->setChecked(mode.testFlag(CAircraftMatcherSetup::ByModelString));
ui->cb_ByCombinedCode->setChecked(mode.testFlag(CAircraftMatcherSetup::ByCombinedType));
+
ui->rb_ByIcaoDataAircraft1st->setChecked(mode.testFlag(CAircraftMatcherSetup::ByIcaoOrderAircraftFirst));
ui->rb_ByIcaoDataAirline1st->setChecked(mode.testFlag(CAircraftMatcherSetup::ByIcaoOrderAirlineFirst));
+
+ const bool nag = !mode.testFlag(CAircraftMatcherSetup::ByAirlineGroupSameAsAirline) && !mode.testFlag(CAircraftMatcherSetup::ByAirlineGroupIfNoAirline);
+ if (nag)
+ {
+ ui->rb_AirlineGroupNo->setChecked(nag);
+ }
+ else
+ {
+ ui->rb_AirlineGroupAsAirline->setChecked(mode.testFlag(CAircraftMatcherSetup::ByAirlineGroupSameAsAirline));
+ ui->rb_AirlineGroupIfNoAirline->setChecked(mode.testFlag(CAircraftMatcherSetup::CAircraftMatcherSetup::ByAirlineGroupIfNoAirline));
+ }
+
ui->cb_ByLivery->setChecked(mode.testFlag(CAircraftMatcherSetup::ByLivery));
ui->cb_ByFamily->setChecked(mode.testFlag(CAircraftMatcherSetup::ByFamily));
ui->cb_ByForceMilitary->setChecked(mode.testFlag(CAircraftMatcherSetup::ByForceMilitary));
@@ -113,6 +135,7 @@ namespace BlackGui
CAircraftMatcherSetup CMatchingForm::value() const
{
CAircraftMatcherSetup setup(algorithm(), matchingMode(), pickStrategy());
+ setup.setAirlineGroupBehaviour(ui->rb_AirlineGroupIfNoAirline->isChecked(), ui->rb_AirlineGroupAsAirline->isChecked());
setup.setMsNetworkEntryFile(ui->le_MsNetwork->text());
setup.setMsMatchingStageFile(ui->le_MsMatching->text());
setup.setMsNetworkEntryEnabled(ui->cb_MsNetwork->isChecked());
@@ -228,5 +251,11 @@ namespace BlackGui
const CAircraftMatcherSetup setup = this->value();
this->setValue(setup);
}
+
+ void CMatchingForm::onAirlineGroupChanged()
+ {
+ 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 a10493907..3dbee86d1 100644
--- a/src/blackgui/editors/matchingform.h
+++ b/src/blackgui/editors/matchingform.h
@@ -66,6 +66,9 @@ namespace BlackGui
//! Algorithm has been toggled
void onAlgorithmChanged();
+ //! Airline group changed
+ void onAirlineGroupChanged();
+
//! Reset @{
void resetByAlgorithm();
void resetAll();
diff --git a/src/blackgui/editors/matchingform.ui b/src/blackgui/editors/matchingform.ui
index b04e3e612..d3d4307b8 100644
--- a/src/blackgui/editors/matchingform.ui
+++ b/src/blackgui/editors/matchingform.ui
@@ -6,8 +6,8 @@
0
0
- 293
- 647
+ 323
+ 667
@@ -182,34 +182,28 @@
0
- 150
+ 165
Reduction
- -
-
-
- Vertical Takeoff or Landing
-
-
- VTOL (helicopters and such)
+
-
+
+
+ Qt::Horizontal
- -
-
-
- inbound military force matched military
-
+
-
+
- force military
+ livery
- -
+
-
inbound civilian force matched civilian
@@ -219,46 +213,55 @@
- -
-
+
-
+
- livery
+ family
- -
+
-
+
+
+ combined code
+
+
+
+ -
+
+
+ Vertical Takeoff or Landing
+
+
+ VTOL (helicopters and such)
+
+
+
+ -
model string
+ -
+
+
+ inbound military force matched military
+
+
+ force military
+
+
+
-
by ICAO: airline first
-
-
- -
-
-
- combined code
-
-
-
- -
-
-
- family
-
-
-
- -
-
-
- Qt::Horizontal
-
+
+ bg_ICAOfirst
+
-
@@ -266,6 +269,39 @@
by ICAO: aircraft first
+
+ bg_ICAOfirst
+
+
+
+ -
+
+
+ no airline group
+
+
+ bg_AirlineGroup
+
+
+
+ -
+
+
+ group if no airline
+
+
+ bg_AirlineGroup
+
+
+
+ -
+
+
+ group=airline
+
+
+ bg_AirlineGroup
+
@@ -411,6 +447,9 @@
rb_PickByOrder
rb_ByIcaoDataAircraft1st
rb_ByIcaoDataAirline1st
+ rb_AirlineGroupNo
+ rb_AirlineGroupIfNoAirline
+ rb_AirlineGroupAsAirline
cb_ByModelString
cb_ByLivery
cb_ByFamily
@@ -431,4 +470,8 @@
+
+
+
+
diff --git a/src/blackmisc/simulation/aircraftmatchersetup.cpp b/src/blackmisc/simulation/aircraftmatchersetup.cpp
index ad2e006d5..539aab48c 100644
--- a/src/blackmisc/simulation/aircraftmatchersetup.cpp
+++ b/src/blackmisc/simulation/aircraftmatchersetup.cpp
@@ -75,6 +75,16 @@ namespace BlackMisc
this->setMatchingMode(m);
}
+ void CAircraftMatcherSetup::setAirlineGroupBehaviour(bool ifNoAirline, bool sameAsAirline)
+ {
+ MatchingMode m = this->getMatchingMode();
+ const bool icao = m.testFlag(ByIcaoData);
+ m.setFlag(ByAirlineGroupIfNoAirline, ifNoAirline);
+ m.setFlag(ByAirlineGroupSameAsAirline, sameAsAirline);
+ m.setFlag(ByIcaoData, icao);
+ this->setMatchingMode(m);
+ }
+
QString CAircraftMatcherSetup::convertToQString(bool i18n) const
{
Q_UNUSED(i18n);
@@ -192,6 +202,8 @@ namespace BlackMisc
static const QString categoryGlider("glider categories");
static const QString categoryMilitary("military categories");
static const QString revModelString("reverse model lookup");
+ static const QString agSameAsAirline("group as airline");
+ static const QString agIfNoAirline("group if no airline");
switch (modeFlag)
{
@@ -214,6 +226,8 @@ namespace BlackMisc
case ExcludeNoExcluded: return exExcl;
case ModelSetRemoveFailedModel: return removeFromModelSet;
case ModelVerificationAtStartup: return verification;
+ case ByAirlineGroupIfNoAirline: return agIfNoAirline;
+ case ByAirlineGroupSameAsAirline: return agSameAsAirline;
case ModelVerificationOnlyWarnError: return verificationWarn;
case ModelFailoverIfNoModelCanBeAdded: return modelFailedAdded;
default: break;
@@ -243,9 +257,10 @@ namespace BlackMisc
if (mode.testFlag(ScorePreferColorLiveries)) { modes << modeFlagToString(ScorePreferColorLiveries); }
if (mode.testFlag(ModelSetRemoveFailedModel)) { modes << modeFlagToString(ModelSetRemoveFailedModel); }
if (mode.testFlag(ModelVerificationAtStartup)) { modes << modeFlagToString(ModelVerificationAtStartup); }
+ if (mode.testFlag(ByAirlineGroupIfNoAirline)) { modes << modeFlagToString(ByAirlineGroupIfNoAirline); }
+ if (mode.testFlag(ByAirlineGroupSameAsAirline)) { modes << modeFlagToString(ByAirlineGroupSameAsAirline); }
if (mode.testFlag(ModelVerificationOnlyWarnError)) { modes << modeFlagToString(ModelVerificationOnlyWarnError); }
if (mode.testFlag(ModelFailoverIfNoModelCanBeAdded)) { modes << modeFlagToString(ModelFailoverIfNoModelCanBeAdded); }
-
return modes.join(", ");
}
diff --git a/src/blackmisc/simulation/aircraftmatchersetup.h b/src/blackmisc/simulation/aircraftmatchersetup.h
index b5c08529a..aee6675a0 100644
--- a/src/blackmisc/simulation/aircraftmatchersetup.h
+++ b/src/blackmisc/simulation/aircraftmatchersetup.h
@@ -43,8 +43,10 @@ namespace BlackMisc
ByForceCivilian = 1 << 7, //!< civilian (in) will only search in civilian
ByMilitary = ByForceCivilian | ByForceMilitary,
ByVtol = 1 << 8,
- ByIcaoOrderAircraftFirst = (1 << 9) | ByIcaoData,
- ByIcaoOrderAirlineFirst = (1 << 10) | ByIcaoData,
+ ByIcaoOrderAircraftFirst = (1 << 9) | ByIcaoData,
+ ByIcaoOrderAirlineFirst = (1 << 10) | ByIcaoData,
+ ByAirlineGroupSameAsAirline = (1 << 11) | ByIcaoData,
+ ByAirlineGroupIfNoAirline = (1 << 12) | ByIcaoData,
ByCategoryGlider = 1 << 20,
ByCategoryMilitary = 1 << 21,
@@ -76,8 +78,8 @@ namespace BlackMisc
// default depending on algorithm
ModeDefaultScore = ScoreIgnoreZeros | ScorePreferColorLiveries | ExcludeDefault | ReverseLookupDefault,
- ModeDefaultReduce = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ByLivery | ExcludeDefault | ReverseLookupDefault,
- ModeDefaultReducePlusScore = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ModeDefaultScore | ExcludeDefault | ReverseLookupDefault,
+ ModeDefaultReduce = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ByAirlineGroupIfNoAirline | ReverseLookupDefault | ExcludeDefault | ByLivery,
+ ModeDefaultReducePlusScore = ModeByFLags | ByModelString | ByFamily | ByManufacturer | ByCombinedType | ByIcaoOrderAircraftFirst | ByAirlineGroupIfNoAirline | ReverseLookupDefault | ExcludeDefault | ModeDefaultScore,
};
Q_DECLARE_FLAGS(MatchingMode, MatchingModeFlag)
@@ -186,6 +188,9 @@ namespace BlackMisc
//! Set reverse lookup flags
void setReverseLookup(bool useModelLookup);
+ //! Airline group behaviour
+ void setAirlineGroupBehaviour(bool ifNoAirline, bool sameAsAirline);
+
//! \copydoc BlackMisc::Mixin::String::toQString
QString convertToQString(bool i18n = false) const;