diff --git a/src/blackmisc/aviation/aircraftpartslist.cpp b/src/blackmisc/aviation/aircraftpartslist.cpp index 44c11423f..08194b0a6 100644 --- a/src/blackmisc/aviation/aircraftpartslist.cpp +++ b/src/blackmisc/aviation/aircraftpartslist.cpp @@ -25,5 +25,17 @@ namespace BlackMisc CAircraftPartsList::CAircraftPartsList(std::initializer_list il) : CSequence(il) { } + + int CAircraftPartsList::setOnGround(bool onGround) + { + int c = 0; + for (CAircraftParts &p : *this) + { + if (p.isOnGround() == onGround) { continue; } + p.setOnGround(onGround); + c++; + } + return c; + } } // namespace } // namespace diff --git a/src/blackmisc/aviation/aircraftpartslist.h b/src/blackmisc/aviation/aircraftpartslist.h index 80f31582c..6f7a2b0bc 100644 --- a/src/blackmisc/aviation/aircraftpartslist.h +++ b/src/blackmisc/aviation/aircraftpartslist.h @@ -29,7 +29,7 @@ namespace BlackMisc class BLACKMISC_EXPORT CAircraftPartsList : public CSequence, public ITimestampWithOffsetObjectList, - public BlackMisc::Mixin::MetaType + public Mixin::MetaType { public: BLACKMISC_DECLARE_USING_MIXIN_METATYPE(CAircraftPartsList) @@ -42,8 +42,10 @@ namespace BlackMisc //! Construct from initializer list. CAircraftPartsList(std::initializer_list il); - }; + //! Set on ground for all entries + int setOnGround(bool onGround); + }; } //namespace } // namespace diff --git a/src/blackmisc/timestampbased.cpp b/src/blackmisc/timestampbased.cpp index d7a135b2a..f8e9cf039 100644 --- a/src/blackmisc/timestampbased.cpp +++ b/src/blackmisc/timestampbased.cpp @@ -310,7 +310,7 @@ namespace BlackMisc return (i >= static_cast(IndexOffsetMs)) && (i <= static_cast(IndexOffsetWithUnit)); } - bool ITimestampWithOffsetBased::hasOffsetTime() const + bool ITimestampWithOffsetBased::hasNonZeroOffsetTime() const { return m_timeOffsetMs != 0; } diff --git a/src/blackmisc/timestampbased.h b/src/blackmisc/timestampbased.h index 512434a12..943bb773e 100644 --- a/src/blackmisc/timestampbased.h +++ b/src/blackmisc/timestampbased.h @@ -162,7 +162,7 @@ namespace BlackMisc qint64 getTimeOffsetMs() const { return m_timeOffsetMs; } //! Having a valid offset time - bool hasOffsetTime() const; + bool hasNonZeroOffsetTime() const; //! Offset with unit QString getTimeOffsetWithUnit() const; diff --git a/src/blackmisc/timestampobjectlist.cpp b/src/blackmisc/timestampobjectlist.cpp index 2af700c96..f078f5a3a 100644 --- a/src/blackmisc/timestampobjectlist.cpp +++ b/src/blackmisc/timestampobjectlist.cpp @@ -293,6 +293,16 @@ namespace BlackMisc return false; } + template + bool ITimestampWithOffsetObjectList::containsNegativeOffsetTime() const + { + for (const ITimestampWithOffsetBased &obj : this->container()) + { + if (obj.getTimeOffsetMs() < 0) { return true; } + } + return false; + } + template ITimestampWithOffsetObjectList::ITimestampWithOffsetObjectList() : ITimestampObjectList() { diff --git a/src/blackmisc/timestampobjectlist.h b/src/blackmisc/timestampobjectlist.h index abfe95319..5138f5736 100644 --- a/src/blackmisc/timestampobjectlist.h +++ b/src/blackmisc/timestampobjectlist.h @@ -128,6 +128,9 @@ namespace BlackMisc //! Any negative or zero offset time? bool containsZeroOrNegativeOffsetTime() const; + //! Any negative offset time? + bool containsNegativeOffsetTime() const; + //! Insert as first element by keeping maxElements and the latest first void push_frontKeepLatestAdjustedFirst(const OBJ &value, int maxElements = -1);