From c518c3d0b0f5d408d335d9465abba61b0bec20eb Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sat, 2 Jun 2018 01:52:12 +0200 Subject: [PATCH] Ref T270, made lights comparable and use it with parts --- .../models/aircraftpartslistmodel.cpp | 4 ++-- src/blackmisc/aviation/aircraftlights.cpp | 19 +++++++++++++++++++ src/blackmisc/aviation/aircraftlights.h | 7 +++++-- src/blackmisc/aviation/aircraftparts.cpp | 8 ++++++-- src/blackmisc/aviation/aircraftparts.h | 3 ++- src/blackmisc/nullable.h | 2 +- 6 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/blackgui/models/aircraftpartslistmodel.cpp b/src/blackgui/models/aircraftpartslistmodel.cpp index d973d470f..faafd09af 100644 --- a/src/blackgui/models/aircraftpartslistmodel.cpp +++ b/src/blackgui/models/aircraftpartslistmodel.cpp @@ -28,12 +28,12 @@ namespace BlackGui { this->addTimestampOffsetColumns(); - m_columns.addColumn(CColumn("gnd.", CAircraftParts::IndexOnGround, new CBoolIconFormatter("on gnd.", "not on gnd."))); + m_columns.addColumn(CColumn("gnd.", CAircraftParts::IndexIsOnGround, new CBoolIconFormatter("on gnd.", "not on gnd."))); m_columns.addColumn(CColumn("gear", CAircraftParts::IndexGearDown, new CBoolIconFormatter("gear down", "gear up"))); m_columns.addColumn(CColumn("spoilers", CAircraftParts::IndexSpoilersOut, new CBoolIconFormatter("spoilers", "no spoilers"))); m_columns.addColumn(CColumn("flaps", CAircraftParts::IndexFlapsPercentage, new CIntegerFormatter())); - m_columns.addColumn(CColumn::standardString("engines", { CAircraftParts::IndexEngines, CAircraftParts::IndexString })); + m_columns.addColumn(CColumn::standardString("engines", CAircraftParts::IndexEnginesAsString)); m_columns.addColumn(CColumn::standardString("lights", { CAircraftParts::IndexLights, CAircraftParts::IndexString })); } } // namespace diff --git a/src/blackmisc/aviation/aircraftlights.cpp b/src/blackmisc/aviation/aircraftlights.cpp index f82fa8fa6..ff40aae92 100644 --- a/src/blackmisc/aviation/aircraftlights.cpp +++ b/src/blackmisc/aviation/aircraftlights.cpp @@ -10,6 +10,7 @@ #include "blackmisc/aviation/aircraftlights.h" #include "blackmisc/aviation/aircraftsituation.h" #include "blackmisc/stringutils.h" +#include "blackmisc/comparefunctions.h" #include "blackmisc/variant.h" #include @@ -137,6 +138,24 @@ namespace BlackMisc } } + int CAircraftLights::comparePropertyByIndex(const CPropertyIndex &index, const CAircraftLights &compareValue) const + { + const ColumnIndex i = index.frontCasted(); + switch (i) + { + case IndexBeacon: return Compare::compare(m_beaconOn, compareValue.isBeaconOn()); + case IndexLanding: return Compare::compare(m_landingOn, compareValue.isLandingOn()); + case IndexLogo: return Compare::compare(m_logoOn, compareValue.isLogoOn()); + case IndexNav: return Compare::compare(m_navOn, compareValue.isNavOn()); + case IndexStrobe: return Compare::compare(m_strobeOn, compareValue.isStrobeOn()); + case IndexTaxi: return Compare::compare(m_taxiOn, compareValue.isTaxiOn()); + case IndexCabin: return Compare::compare(m_cabin, compareValue.isCabinOn()); + case IndexRecognition: return Compare::compare(m_recognition, compareValue.isRecognitionOn()); + default: break; + } + return INullable::comparePropertyByIndex(index.copyFrontRemoved(), compareValue); + } + void CAircraftLights::setAllOn() { m_beaconOn = true; diff --git a/src/blackmisc/aviation/aircraftlights.h b/src/blackmisc/aviation/aircraftlights.h index d9a042fc0..07cd6e57c 100644 --- a/src/blackmisc/aviation/aircraftlights.h +++ b/src/blackmisc/aviation/aircraftlights.h @@ -117,10 +117,13 @@ namespace BlackMisc void guessLights(const CAircraftSituation &situation); //! \copydoc BlackMisc::Mixin::Index::propertyByIndex - CVariant propertyByIndex(const BlackMisc::CPropertyIndex &index) const; + CVariant propertyByIndex(const CPropertyIndex &index) const; //! \copydoc BlackMisc::Mixin::Index::setPropertyByIndex - void setPropertyByIndex(const BlackMisc::CPropertyIndex &index, const CVariant &variant); + void setPropertyByIndex(const CPropertyIndex &index, const CVariant &variant); + + //! Compare by index + int comparePropertyByIndex(const CPropertyIndex &index, const CAircraftLights &compareValue) const; //! \copydoc BlackMisc::Mixin::String::toQString QString convertToQString(bool i18n = false) const; diff --git a/src/blackmisc/aviation/aircraftparts.cpp b/src/blackmisc/aviation/aircraftparts.cpp index 8e1f8b99b..009661107 100644 --- a/src/blackmisc/aviation/aircraftparts.cpp +++ b/src/blackmisc/aviation/aircraftparts.cpp @@ -223,10 +223,12 @@ namespace BlackMisc switch (i) { case IndexEngines: return CVariant::fromValue(m_engines); + case IndexEnginesAsString: return CVariant::fromValue(m_engines.toQString(true)); case IndexFlapsPercentage: return CVariant::fromValue(m_flapsPercentage); case IndexGearDown: return CVariant::fromValue(m_gearDown); case IndexLights: return m_lights.propertyByIndex(index.copyFrontRemoved()); case IndexSpoilersOut: return CVariant::fromValue(m_spoilersOut); + case IndexIsOnGround: return CVariant::fromValue(m_isOnGround); default: return CValueObject::propertyByIndex(index); } } @@ -239,11 +241,12 @@ namespace BlackMisc const ColumnIndex i = index.frontCasted(); switch (i) { - case IndexEngines: m_engines = variant.to < decltype(m_engines) > (); break; + case IndexEngines: m_engines = variant.to (); break; case IndexFlapsPercentage: m_flapsPercentage = variant.toInt(); break; case IndexGearDown: m_gearDown = variant.toBool(); break; case IndexLights: m_lights.setPropertyByIndex(index.copyFrontRemoved(), variant); break; case IndexSpoilersOut: m_spoilersOut = variant.toBool(); break; + case IndexIsOnGround: m_isOnGround = variant.toBool(); break; default: CValueObject::setPropertyByIndex(index, variant); break; } } @@ -260,7 +263,8 @@ namespace BlackMisc case IndexFlapsPercentage: return Compare::compare(m_flapsPercentage, compareValue.getFlapsPercent()); case IndexGearDown: return Compare::compare(m_gearDown, compareValue.isGearDown()); case IndexSpoilersOut: return Compare::compare(m_spoilersOut, compareValue.isSpoilersOut()); - case IndexLights: + case IndexIsOnGround: return Compare::compare(m_isOnGround, compareValue.isOnGround()); + case IndexLights: return m_lights.comparePropertyByIndex(index.copyFrontRemoved(), compareValue.getLights()); default: break; } Q_ASSERT_X(false, Q_FUNC_INFO, "No comparison"); diff --git a/src/blackmisc/aviation/aircraftparts.h b/src/blackmisc/aviation/aircraftparts.h index 0d3f02af3..347e333f7 100644 --- a/src/blackmisc/aviation/aircraftparts.h +++ b/src/blackmisc/aviation/aircraftparts.h @@ -46,7 +46,8 @@ namespace BlackMisc IndexFlapsPercentage, IndexSpoilersOut, IndexEngines, - IndexOnGround + IndexEnginesAsString, + IndexIsOnGround }; //! Parts Details diff --git a/src/blackmisc/nullable.h b/src/blackmisc/nullable.h index dea3238e3..13f7c1366 100644 --- a/src/blackmisc/nullable.h +++ b/src/blackmisc/nullable.h @@ -25,7 +25,7 @@ namespace BlackMisc //! Properties by index enum ColumnIndex { - IndexIsNull = BlackMisc::CPropertyIndex::GlobalIndexINullable, + IndexIsNull = CPropertyIndex::GlobalIndexINullable, }; //! Constructor, init to null