From c882c64824030405e388b70e0e4c168666069ee8 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Tue, 10 Oct 2017 20:59:01 +0200 Subject: [PATCH] Ref T171, count of aircraft supporting parts * added functions in providers, aware class * some utility functions in aircraft list --- src/blackcore/airspacemonitor.cpp | 6 ++++ src/blackcore/airspacemonitor.h | 1 + src/blackcore/context/contextnetworkimpl.cpp | 6 ++++ src/blackcore/context/contextnetworkimpl.h | 1 + .../simulation/remoteaircraftprovider.cpp | 6 ++++ .../simulation/remoteaircraftprovider.h | 7 +++++ .../simulation/simulatedaircraftlist.cpp | 30 +++++++++++++++++++ .../simulation/simulatedaircraftlist.h | 9 ++++++ 8 files changed, 66 insertions(+) diff --git a/src/blackcore/airspacemonitor.cpp b/src/blackcore/airspacemonitor.cpp index 937fad0df..a00d96c1d 100644 --- a/src/blackcore/airspacemonitor.cpp +++ b/src/blackcore/airspacemonitor.cpp @@ -192,6 +192,12 @@ namespace BlackCore return m_aircraftSupportingParts.contains(callsign); } + int CAirspaceMonitor::getRemoteAircraftSupportingPartsCount() const + { + QReadLocker l(&m_lockParts); + return m_aircraftSupportingParts.size(); + } + CCallsignSet CAirspaceMonitor::remoteAircraftSupportingParts() const { QReadLocker l(&m_lockParts); diff --git a/src/blackcore/airspacemonitor.h b/src/blackcore/airspacemonitor.h index 5564ac377..adae729a1 100644 --- a/src/blackcore/airspacemonitor.h +++ b/src/blackcore/airspacemonitor.h @@ -95,6 +95,7 @@ namespace BlackCore virtual int remoteAircraftSituationsCount(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAircraftPartsList remoteAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, qint64 cutoffTimeValuesBefore = -1) const override; virtual bool isRemoteAircraftSupportingParts(const BlackMisc::Aviation::CCallsign &callsign) const override; + virtual int getRemoteAircraftSupportingPartsCount() const override; virtual BlackMisc::Aviation::CCallsignSet remoteAircraftSupportingParts() const override; virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering) override; virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override; diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index d2a28a607..3ce8f7626 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -553,6 +553,12 @@ namespace BlackCore return m_airspace->remoteAircraftParts(callsign, cutoffTimeValuesBefore); } + int CContextNetwork::getRemoteAircraftSupportingPartsCount() const + { + if (this->isDebugEnabled()) { CLogMessage(this, BlackMisc::CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } + return m_airspace->getRemoteAircraftSupportingPartsCount(); + } + bool CContextNetwork::isAircraftPartsHistoryEnabled() const { if (this->isDebugEnabled()) { CLogMessage(this, BlackMisc::CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } diff --git a/src/blackcore/context/contextnetworkimpl.h b/src/blackcore/context/contextnetworkimpl.h index 12b3087e0..fefffcd6d 100644 --- a/src/blackcore/context/contextnetworkimpl.h +++ b/src/blackcore/context/contextnetworkimpl.h @@ -124,6 +124,7 @@ namespace BlackCore virtual void enableReverseLookupMessages(bool enabled) override; virtual BlackMisc::CStatusMessageList getAircraftPartsHistory(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAircraftPartsList getRemoteAircraftParts(const BlackMisc::Aviation::CCallsign &callsign, qint64 cutoffTimeValuesBefore) const override; + virtual int getRemoteAircraftSupportingPartsCount() const override; virtual bool isAircraftPartsHistoryEnabled() const override; virtual void enableAircraftPartsHistory(bool enabled) override; //! @} diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index 940f3fd9f..7fcbe64a3 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -118,6 +118,12 @@ namespace BlackMisc return m_remoteAircraftProvider->isRemoteAircraftSupportingParts(callsign); } + int CRemoteAircraftAware::getRemoteAircraftSupportingPartsCount() const + { + Q_ASSERT_X(m_remoteAircraftProvider, Q_FUNC_INFO, "No object available"); + return m_remoteAircraftProvider->getRemoteAircraftSupportingPartsCount(); + } + bool CRemoteAircraftAware::updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRedering) { Q_ASSERT_X(m_remoteAircraftProvider, Q_FUNC_INFO, "No object available"); diff --git a/src/blackmisc/simulation/remoteaircraftprovider.h b/src/blackmisc/simulation/remoteaircraftprovider.h index 0e5b4c15c..74fa6f9f3 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.h +++ b/src/blackmisc/simulation/remoteaircraftprovider.h @@ -100,6 +100,10 @@ namespace BlackMisc //! \threadsafe virtual bool isRemoteAircraftSupportingParts(const BlackMisc::Aviation::CCallsign &callsign) const = 0; + //! Number of aircraft supporting parts + //! \threadsafe + virtual int getRemoteAircraftSupportingPartsCount() const = 0; + //! Remote aircraft supporting parts. //! \threadsafe virtual BlackMisc::Aviation::CCallsignSet remoteAircraftSupportingParts() const = 0; @@ -214,6 +218,9 @@ namespace BlackMisc //! \copydoc IRemoteAircraftProvider::isRemoteAircraftSupportingParts bool isRemoteAircraftSupportingParts(const BlackMisc::Aviation::CCallsign &callsign) const; + //! \copydoc IRemoteAircraftProvider::getRemoteAircraftSupportingPartsCount + int getRemoteAircraftSupportingPartsCount() const; + //! \copydoc IRemoteAircraftProvider::updateAircraftEnabled bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering); diff --git a/src/blackmisc/simulation/simulatedaircraftlist.cpp b/src/blackmisc/simulation/simulatedaircraftlist.cpp index 17a90e5c9..da4625a56 100644 --- a/src/blackmisc/simulation/simulatedaircraftlist.cpp +++ b/src/blackmisc/simulation/simulatedaircraftlist.cpp @@ -195,5 +195,35 @@ namespace BlackMisc this->push_back(aircraft); return true; } + + int CSimulatedAircraftList::countEnabled() const + { + int c = 0; + for (const CSimulatedAircraft &aircraft : (*this)) + { + if (aircraft.isEnabled()) { c++; } + } + return c; + } + + int CSimulatedAircraftList::countRendered() const + { + int c = 0; + for (const CSimulatedAircraft &aircraft : (*this)) + { + if (aircraft.isRendered()) { c++; } + } + return c; + } + + int CSimulatedAircraftList::countAircraftPartsSyncronized() const + { + int c = 0; + for (const CSimulatedAircraft &aircraft : (*this)) + { + if (aircraft.isPartsSynchronized()) { c++; } + } + return c; + } } // namespace } // namespace diff --git a/src/blackmisc/simulation/simulatedaircraftlist.h b/src/blackmisc/simulation/simulatedaircraftlist.h index d49c638d5..0ec46be96 100644 --- a/src/blackmisc/simulation/simulatedaircraftlist.h +++ b/src/blackmisc/simulation/simulatedaircraftlist.h @@ -100,6 +100,15 @@ namespace BlackMisc //! Replace or add by callsign bool replaceOrAddByCallsign(const CSimulatedAircraft &aircraft); + + //! Number of enabled aircraft + int countEnabled() const; + + //! Number of rendered aircraft + int countRendered() const; + + //! Number of aircraft with parts + int countAircraftPartsSyncronized() const; }; } //namespace } // namespace