From d3796fc65aa35c514bbb849d3a997ed7105054bd Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Wed, 20 Jun 2018 00:56:14 +0200 Subject: [PATCH] Ref T275, added param "ignoreSameAsGlobal" in function "setInterpolationAndRenderingSetupsPerCallsign" --- src/blackcore/context/contextsimulator.h | 2 +- src/blackcore/context/contextsimulatorempty.h | 4 +++- src/blackcore/context/contextsimulatorimpl.cpp | 6 +++--- src/blackcore/context/contextsimulatorimpl.h | 2 +- src/blackcore/context/contextsimulatorproxy.cpp | 4 ++-- src/blackcore/context/contextsimulatorproxy.h | 2 +- .../simulation/interpolationsetupprovider.cpp | 15 +++++++++++---- .../simulation/interpolationsetupprovider.h | 2 +- .../simulation/simulationenvironmentprovider.cpp | 2 +- 9 files changed, 24 insertions(+), 15 deletions(-) diff --git a/src/blackcore/context/contextsimulator.h b/src/blackcore/context/contextsimulator.h index 47c91ffcd..4d0581fa6 100644 --- a/src/blackcore/context/contextsimulator.h +++ b/src/blackcore/context/contextsimulator.h @@ -199,7 +199,7 @@ namespace BlackCore virtual void setInterpolationAndRenderingSetupGlobal(const BlackMisc::Simulation::CInterpolationAndRenderingSetupGlobal &setup) = 0; //! \copydoc BlackMisc::Simulation::IInterpolationSetupProvider::setInterpolationSetupsPerCallsign - virtual void setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups) = 0; + virtual bool setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups, bool ignoreSameAsGlobal) = 0; //! Time synchronization offset virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const = 0; diff --git a/src/blackcore/context/contextsimulatorempty.h b/src/blackcore/context/contextsimulatorempty.h index aeba0af76..81d290805 100644 --- a/src/blackcore/context/contextsimulatorempty.h +++ b/src/blackcore/context/contextsimulatorempty.h @@ -191,10 +191,12 @@ namespace BlackCore } //! \copydoc ISimulator::setInterpolationSetupPerCallsign - virtual void setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups) override + virtual bool setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups, bool ignoreSameAsGlobal) override { Q_UNUSED(setups); + Q_UNUSED(ignoreSameAsGlobal); logEmptyContextWarning(Q_FUNC_INFO); + return false; } //! \copydoc IContextSimulator::getTimeSynchronizationOffset diff --git a/src/blackcore/context/contextsimulatorimpl.cpp b/src/blackcore/context/contextsimulatorimpl.cpp index 1d03b580c..eb6f837b1 100644 --- a/src/blackcore/context/contextsimulatorimpl.cpp +++ b/src/blackcore/context/contextsimulatorimpl.cpp @@ -304,12 +304,12 @@ namespace BlackCore return m_simulatorPlugin.second->getInterpolationSetupPerCallsignOrDefault(callsign); } - void CContextSimulator::setInterpolationAndRenderingSetupsPerCallsign(const CInterpolationSetupList &setups) + bool CContextSimulator::setInterpolationAndRenderingSetupsPerCallsign(const CInterpolationSetupList &setups, bool ignoreSameAsGlobal) { if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } - if (m_simulatorPlugin.first.isUnspecified()) { return; } + if (m_simulatorPlugin.first.isUnspecified()) { return false; } Q_ASSERT(m_simulatorPlugin.second); - return m_simulatorPlugin.second->setInterpolationSetupsPerCallsign(setups); + return m_simulatorPlugin.second->setInterpolationSetupsPerCallsign(setups, ignoreSameAsGlobal); } void CContextSimulator::setInterpolationAndRenderingSetupGlobal(const CInterpolationAndRenderingSetupGlobal &setup) diff --git a/src/blackcore/context/contextsimulatorimpl.h b/src/blackcore/context/contextsimulatorimpl.h index 7f236637c..e88ac6bb4 100644 --- a/src/blackcore/context/contextsimulatorimpl.h +++ b/src/blackcore/context/contextsimulatorimpl.h @@ -93,7 +93,7 @@ namespace BlackCore virtual BlackMisc::Simulation::CInterpolationAndRenderingSetupGlobal getInterpolationAndRenderingSetupGlobal() const override; virtual BlackMisc::Simulation::CInterpolationSetupList getInterpolationAndRenderingSetupsPerCallsign() const override; virtual BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign getInterpolationAndRenderingSetupPerCallsignOrDefault(const BlackMisc::Aviation::CCallsign &callsign) const override; - virtual void setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups) override; + virtual bool setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups, bool ignoreSameAsGlobal) override; virtual void setInterpolationAndRenderingSetupGlobal(const BlackMisc::Simulation::CInterpolationAndRenderingSetupGlobal &setup) override; virtual BlackMisc::CPixmap iconForModel(const QString &modelString) const override; virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override; diff --git a/src/blackcore/context/contextsimulatorproxy.cpp b/src/blackcore/context/contextsimulatorproxy.cpp index 5590e5899..14a322a6b 100644 --- a/src/blackcore/context/contextsimulatorproxy.cpp +++ b/src/blackcore/context/contextsimulatorproxy.cpp @@ -184,9 +184,9 @@ namespace BlackCore return m_dBusInterface->callDBusRet(QLatin1String("getInterpolationAndRenderingSetupsPerCallsign"), callsign); } - void CContextSimulatorProxy::setInterpolationAndRenderingSetupsPerCallsign(const CInterpolationSetupList &setups) + bool CContextSimulatorProxy::setInterpolationAndRenderingSetupsPerCallsign(const CInterpolationSetupList &setups, bool ignoreSameAsGlobal) { - m_dBusInterface->callDBus(QLatin1String("setInterpolationAndRenderingSetupsPerCallsign"), setups); + return m_dBusInterface->callDBusRet(QLatin1String("setInterpolationAndRenderingSetupsPerCallsign"), setups, ignoreSameAsGlobal); } void CContextSimulatorProxy::setInterpolationAndRenderingSetupGlobal(const CInterpolationAndRenderingSetupGlobal &setup) diff --git a/src/blackcore/context/contextsimulatorproxy.h b/src/blackcore/context/contextsimulatorproxy.h index 0183e8484..8cd9f6b21 100644 --- a/src/blackcore/context/contextsimulatorproxy.h +++ b/src/blackcore/context/contextsimulatorproxy.h @@ -79,7 +79,7 @@ namespace BlackCore virtual void setInterpolationAndRenderingSetupGlobal(const BlackMisc::Simulation::CInterpolationAndRenderingSetupGlobal &setup) override; virtual BlackMisc::Simulation::CInterpolationSetupList getInterpolationAndRenderingSetupsPerCallsign() const override; virtual BlackMisc::Simulation::CInterpolationAndRenderingSetupPerCallsign getInterpolationAndRenderingSetupPerCallsignOrDefault(const BlackMisc::Aviation::CCallsign &callsign) const override; - virtual void setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups) override; + virtual bool setInterpolationAndRenderingSetupsPerCallsign(const BlackMisc::Simulation::CInterpolationSetupList &setups, bool ignoreSameAsGlobal) override; virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override; virtual BlackMisc::CPixmap iconForModel(const QString &modelString) const override; virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) override; diff --git a/src/blackmisc/simulation/interpolationsetupprovider.cpp b/src/blackmisc/simulation/interpolationsetupprovider.cpp index 6bba93377..fb88f9923 100644 --- a/src/blackmisc/simulation/interpolationsetupprovider.cpp +++ b/src/blackmisc/simulation/interpolationsetupprovider.cpp @@ -28,16 +28,22 @@ namespace BlackMisc return CInterpolationSetupList(setups.values()); } - void IInterpolationSetupProvider::setInterpolationSetupsPerCallsign(const CInterpolationSetupList &setups) + bool IInterpolationSetupProvider::setInterpolationSetupsPerCallsign(const CInterpolationSetupList &setups, bool ignoreSameAsGlobal) { + const CInterpolationAndRenderingSetupGlobal gs = this->getInterpolationSetupGlobal(); SetupsPerCallsign setupsPerCs; for (const CInterpolationAndRenderingSetupPerCallsign &setup : setups) { + if (ignoreSameAsGlobal && setup.isEqualToGlobal(gs)) { continue; } setupsPerCs.insert(setup.getCallsign(), setup); } - QWriteLocker l(&m_lockSetup); - m_setups = setupsPerCs; + { + QWriteLocker l(&m_lockSetup); + if (m_setups.isEmpty() && setupsPerCs.isEmpty()) { return false; } + m_setups = setupsPerCs; + } + return true; } CInterpolationAndRenderingSetupGlobal IInterpolationSetupProvider::getInterpolationSetupGlobal() const @@ -91,7 +97,8 @@ namespace BlackMisc { if (removeGlobalSetup) { - if (setup.isEqualToGlobal(this->getInterpolationSetupGlobal())) + const CInterpolationAndRenderingSetupGlobal gs = this->getInterpolationSetupGlobal(); + if (setup.isEqualToGlobal(gs)) { QWriteLocker l(&m_lockSetup); m_setups.remove(callsign); diff --git a/src/blackmisc/simulation/interpolationsetupprovider.h b/src/blackmisc/simulation/interpolationsetupprovider.h index 7121812b6..f9e6d5bec 100644 --- a/src/blackmisc/simulation/interpolationsetupprovider.h +++ b/src/blackmisc/simulation/interpolationsetupprovider.h @@ -40,7 +40,7 @@ namespace BlackMisc //! Set all setups per callsign //! \threadsafe - virtual void setInterpolationSetupsPerCallsign(const CInterpolationSetupList &setups); + virtual bool setInterpolationSetupsPerCallsign(const CInterpolationSetupList &setups, bool ignoreSameAsGlobal = true); //! The global setup //! \threadsafe diff --git a/src/blackmisc/simulation/simulationenvironmentprovider.cpp b/src/blackmisc/simulation/simulationenvironmentprovider.cpp index 482545eb9..1a1bd1267 100644 --- a/src/blackmisc/simulation/simulationenvironmentprovider.cpp +++ b/src/blackmisc/simulation/simulationenvironmentprovider.cpp @@ -143,7 +143,7 @@ namespace BlackMisc QString ISimulationEnvironmentProvider::getElevationsFoundMissedInfo() const { - static const QString info("%1/%2 %3"); + static const QString info("%1/%2 %3%"); const QPair foundMissed = this->getElevationsFoundMissed(); const int f = foundMissed.first; const int m = foundMissed.second;