From 68b72d9c5ca9d50c42b4a11b4672954bb3084557 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 12 Sep 2018 16:20:39 +0200 Subject: [PATCH] Ref T335, update "enabled/"rendered" for multiple callsigns --- src/blackcore/context/contextnetworkimpl.cpp | 12 +++++ src/blackcore/context/contextnetworkimpl.h | 2 + .../simulation/remoteaircraftprovider.cpp | 47 +++++++++++++++++-- .../simulation/remoteaircraftprovider.h | 8 ++++ 4 files changed, 64 insertions(+), 5 deletions(-) diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index 49c0e202c..a93aa8582 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -852,6 +852,18 @@ namespace BlackCore return c; } + int CContextNetwork::updateMultipleAircraftRendered(const CCallsignSet &callsigns, bool rendered) + { + const int c = m_airspace->updateMultipleAircraftRendered(callsigns, rendered); + return c; + } + + int CContextNetwork::updateMultipleAircraftEnabled(const CCallsignSet &callsigns, bool enabled) + { + const int c = m_airspace->updateMultipleAircraftEnabled(callsigns, enabled); + return c; + } + int CContextNetwork::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation, CAircraftSituation::GndElevationInfo info) { return m_airspace->updateAircraftGroundElevation(callsign, elevation, info); diff --git a/src/blackcore/context/contextnetworkimpl.h b/src/blackcore/context/contextnetworkimpl.h index ad2cc8a02..6ab16a414 100644 --- a/src/blackcore/context/contextnetworkimpl.h +++ b/src/blackcore/context/contextnetworkimpl.h @@ -103,6 +103,8 @@ namespace BlackCore virtual BlackMisc::Aviation::CAircraftSituationChangeList remoteAircraftSituationChanges(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual int remoteAircraftSituationChangesCount(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual bool updateAircraftRendered(const BlackMisc::Aviation::CCallsign &callsign, bool rendered) override; + virtual int updateMultipleAircraftRendered(const BlackMisc::Aviation::CCallsignSet &callsigns, bool rendered) override; + virtual int updateMultipleAircraftEnabled(const BlackMisc::Aviation::CCallsignSet &callsigns, bool enabled) override; virtual int updateAircraftGroundElevation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Geo::CElevationPlane &elevation, BlackMisc::Aviation::CAircraftSituation::GndElevationInfo info) override; virtual void updateMarkAllAsNotRendered() override; virtual BlackMisc::Simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const override; diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index 6358f86e7..4a5729b2e 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -453,9 +453,22 @@ namespace BlackMisc bool CRemoteAircraftProvider::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering) { - const CPropertyIndexVariantMap vm(CSimulatedAircraft::IndexEnabled, CVariant::fromValue(enabledForRendering)); - const int c = this->updateAircraftInRange(callsign, vm); - return c > 0; + QWriteLocker l(&m_lockAircraft); + if (!m_aircraftInRange.contains(callsign)) { return false; } + return m_aircraftInRange[callsign].setEnabled(enabledForRendering); + } + + int CRemoteAircraftProvider::updateMultipleAircraftEnabled(const CCallsignSet &callsigns, bool enabledForRendering) + { + if (callsigns.isEmpty()) { return 0; } + QWriteLocker l(&m_lockAircraft); + int c = 0; + for (const CCallsign &cs : callsigns) + { + if (!m_aircraftInRange.contains(cs)) { continue; } + if (m_aircraftInRange[cs].setEnabled(enabledForRendering)) { c++; } + } + return c; } bool CRemoteAircraftProvider::updateAircraftModel(const CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator) @@ -488,6 +501,18 @@ namespace BlackMisc return m_aircraftInRange[callsign].setRendered(rendered); } + int CRemoteAircraftProvider::updateMultipleAircraftRendered(const CCallsignSet &callsigns, bool rendered) + { + if (callsigns.isEmpty()) { return 0; } + int c = 0; + for (const CCallsign &cs : callsigns) + { + if (!m_aircraftInRange.contains(cs)) { continue; } + if (m_aircraftInRange[cs].setRendered(rendered)) { c++; } + } + return c; + } + int CRemoteAircraftProvider::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation, CAircraftSituation::GndElevationInfo info) { if (!this->isAircraftInRange(callsign)) { return 0; } @@ -885,6 +910,12 @@ namespace BlackMisc return this->provider()->updateAircraftRendered(callsign, rendered); } + bool CRemoteAircraftAware::updateMultipleAircraftRendered(const CCallsignSet &callsigns, bool rendered) + { + Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available"); + return this->provider()->updateMultipleAircraftRendered(callsigns, rendered); + } + int CRemoteAircraftAware::updateAircraftGroundElevation(const CCallsign &callsign, const CElevationPlane &elevation, CAircraftSituation::GndElevationInfo info) { Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available"); @@ -951,10 +982,16 @@ namespace BlackMisc return this->provider()->getRemoteAircraftSupportingPartsCount(); } - bool CRemoteAircraftAware::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRedering) + bool CRemoteAircraftAware::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering) { Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available"); - return this->provider()->updateAircraftEnabled(callsign, enabledForRedering); + return this->provider()->updateAircraftEnabled(callsign, enabledForRendering); + } + + bool CRemoteAircraftAware::updateMultipleAircraftEnabled(const CCallsignSet &callsigns, bool enabledForRendering) + { + Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available"); + return this->provider()->updateMultipleAircraftEnabled(callsigns, enabledForRendering); } CAircraftParts IRemoteAircraftProvider::getLatestAircraftParts(const CCallsign &callsign) const diff --git a/src/blackmisc/simulation/remoteaircraftprovider.h b/src/blackmisc/simulation/remoteaircraftprovider.h index 681645587..dffa008c0 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.h +++ b/src/blackmisc/simulation/remoteaircraftprovider.h @@ -302,10 +302,12 @@ namespace BlackMisc virtual Aviation::CAircraftSituationChangeList remoteAircraftSituationChanges(const Aviation::CCallsign &callsign) const override; virtual int remoteAircraftSituationChangesCount(const Aviation::CCallsign &callsign) const override; virtual bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRendering) override; + virtual int updateMultipleAircraftEnabled(const Aviation::CCallsignSet &callsigns, bool enabledForRendering) override; virtual bool updateAircraftModel(const Aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator) override; virtual bool updateAircraftNetworkModel(const Aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator) override; virtual bool updateFastPositionEnabled(const Aviation::CCallsign &callsign, bool enableFastPositonUpdates) override; virtual bool updateAircraftRendered(const Aviation::CCallsign &callsign, bool rendered) override; + virtual int updateMultipleAircraftRendered(const Aviation::CCallsignSet &callsigns, bool rendered) override; virtual int updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const Geo::CElevationPlane &elevation, Aviation::CAircraftSituation::GndElevationInfo info) override; virtual bool updateCG(const Aviation::CCallsign &callsign, const PhysicalQuantities::CLength &cg) override; virtual bool updateCGAndModelString(const Aviation::CCallsign &callsign, const PhysicalQuantities::CLength &cg, const QString &modelString) override; @@ -529,6 +531,9 @@ namespace BlackMisc //! \copydoc IRemoteAircraftProvider::updateAircraftEnabled bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRedering); + //! \copydoc IRemoteAircraftProvider::updateMultipleAircraftEnabled + bool updateMultipleAircraftEnabled(const Aviation::CCallsignSet &callsigns, bool enabledForRendering); + //! \copydoc IRemoteAircraftProvider::updateAircraftModel bool updateAircraftModel(const Aviation::CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator); @@ -538,6 +543,9 @@ namespace BlackMisc //! \copydoc IRemoteAircraftProvider::updateAircraftRendered bool updateAircraftRendered(const Aviation::CCallsign &callsign, bool rendered); + //! \copydoc IRemoteAircraftProvider::updateMultipleAircraftRendered + bool updateMultipleAircraftRendered(const Aviation::CCallsignSet &callsigns, bool rendered); + //! \copydoc IRemoteAircraftProvider::updateAircraftGroundElevation int updateAircraftGroundElevation(const Aviation::CCallsign &callsign, const Geo::CElevationPlane &elevation, Aviation::CAircraftSituation::GndElevationInfo info);