diff --git a/src/blackcore/airspacemonitor.h b/src/blackcore/airspacemonitor.h index ccd387d82..6acb442ca 100644 --- a/src/blackcore/airspacemonitor.h +++ b/src/blackcore/airspacemonitor.h @@ -89,6 +89,7 @@ namespace BlackCore virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftInRangeForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Simulation::CAircraftModel getAircraftInRangeModelForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual int getAircraftInRangeCount() const override; + virtual bool isAircraftInRange(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Simulation::CAirspaceAircraftSnapshot getLatestAirspaceAircraftSnapshot() const override; virtual BlackMisc::Aviation::CAircraftSituationList remoteAircraftSituations(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual int remoteAircraftSituationsCount(const BlackMisc::Aviation::CCallsign &callsign) const override; @@ -142,10 +143,6 @@ namespace BlackCore //! \threadsafe bool hasClientInfo(const BlackMisc::Aviation::CCallsign &callsign) const; - //! Is aircraft in range? - //! \threadsafe - bool isAircraftInRange(const BlackMisc::Aviation::CCallsign &callsign) const; - //! Returns the current online ATC stations (consolidated with booked stations) BlackMisc::Aviation::CAtcStationList getAtcStationsOnline() const { return m_atcStationsOnline; } diff --git a/src/blackcore/context/contextnetwork.h b/src/blackcore/context/contextnetwork.h index 1c5da184b..049273d0d 100644 --- a/src/blackcore/context/contextnetwork.h +++ b/src/blackcore/context/contextnetwork.h @@ -184,6 +184,9 @@ namespace BlackCore //! Aircraft count virtual int getAircraftInRangeCount() const = 0; + //! Aircraft in range + virtual bool isAircraftInRange(const BlackMisc::Aviation::CCallsign &callsign) const = 0; + //! Get METAR, if not available request it (code such as EDDF, KLAX) virtual BlackMisc::Weather::CMetar getMetarForAirport(const BlackMisc::Aviation::CAirportIcaoCode &airportIcaoCode) const = 0; diff --git a/src/blackcore/context/contextnetworkempty.h b/src/blackcore/context/contextnetworkempty.h index 959bba376..ff2e6bca3 100644 --- a/src/blackcore/context/contextnetworkempty.h +++ b/src/blackcore/context/contextnetworkempty.h @@ -79,6 +79,14 @@ namespace BlackCore return 0; } + //! \copydoc IContextNetwork::isAircraftInRange + virtual bool isAircraftInRange(const BlackMisc::Aviation::CCallsign &callsign) const override + { + Q_UNUSED(callsign); + logEmptyContextWarning(Q_FUNC_INFO); + return false; + } + //! \copydoc IContextNetwork::getOnlineStationForCallsign virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override { diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index 9cc5471d3..59d9512f4 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -502,6 +502,12 @@ namespace BlackCore return this->m_airspace->getAircraftInRangeCount(); } + bool CContextNetwork::isAircraftInRange(const CCallsign &callsign) const + { + if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; } + return this->m_airspace->isAircraftInRange(callsign); + } + CSimulatedAircraft CContextNetwork::getAircraftInRangeForCallsign(const CCallsign &callsign) const { if (this->isDebugEnabled()) { CLogMessage(this, BlackMisc::CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign; } diff --git a/src/blackcore/context/contextnetworkimpl.h b/src/blackcore/context/contextnetworkimpl.h index 0beb96958..5acbaf892 100644 --- a/src/blackcore/context/contextnetworkimpl.h +++ b/src/blackcore/context/contextnetworkimpl.h @@ -116,6 +116,7 @@ namespace BlackCore virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override; virtual BlackMisc::Aviation::CCallsignSet getAircraftInRangeCallsigns() const override; virtual int getAircraftInRangeCount() const override; + virtual bool isAircraftInRange(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftInRangeForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Simulation::CAircraftModel getAircraftInRangeModelForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const override; diff --git a/src/blackcore/context/contextnetworkproxy.cpp b/src/blackcore/context/contextnetworkproxy.cpp index 0171064df..8162b41ce 100644 --- a/src/blackcore/context/contextnetworkproxy.cpp +++ b/src/blackcore/context/contextnetworkproxy.cpp @@ -131,6 +131,11 @@ namespace BlackCore return this->m_dBusInterface->callDBusRet(QLatin1String("getAircraftInRangeCount")); } + bool CContextNetworkProxy::isAircraftInRange(const CCallsign &callsign) const + { + return this->m_dBusInterface->callDBusRet(QLatin1String("isAircraftInRange"), callsign); + } + CSimulatedAircraft CContextNetworkProxy::getAircraftInRangeForCallsign(const CCallsign &callsign) const { return this->m_dBusInterface->callDBusRet(QLatin1String("getAircraftInRangeForCallsign"), callsign); diff --git a/src/blackcore/context/contextnetworkproxy.h b/src/blackcore/context/contextnetworkproxy.h index 2cf9445bf..5188b9eba 100644 --- a/src/blackcore/context/contextnetworkproxy.h +++ b/src/blackcore/context/contextnetworkproxy.h @@ -81,6 +81,7 @@ namespace BlackCore virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override; virtual BlackMisc::Aviation::CCallsignSet getAircraftInRangeCallsigns() const override; virtual int getAircraftInRangeCount() const override; + virtual bool isAircraftInRange(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Simulation::CSimulatedAircraft getAircraftInRangeForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, BlackCore::INetwork::LoginMode mode) override; diff --git a/src/blackmisc/simulation/remoteaircraftprovider.cpp b/src/blackmisc/simulation/remoteaircraftprovider.cpp index 91a55c1d5..6dd38d6fc 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.cpp +++ b/src/blackmisc/simulation/remoteaircraftprovider.cpp @@ -16,12 +16,6 @@ namespace BlackMisc { namespace Simulation { - bool IRemoteAircraftProvider::isAircraftInRange(const CCallsign &callsign) const - { - if (callsign.isEmpty()) { return false; } - return this->getAircraftInRange().containsCallsign(callsign); - } - CSimulatedAircraftList CRemoteAircraftAware::getAircraftInRange() const { Q_ASSERT_X(this->m_remoteAircraftProvider, Q_FUNC_INFO, "No object available"); diff --git a/src/blackmisc/simulation/remoteaircraftprovider.h b/src/blackmisc/simulation/remoteaircraftprovider.h index 83e057353..bd06432db 100644 --- a/src/blackmisc/simulation/remoteaircraftprovider.h +++ b/src/blackmisc/simulation/remoteaircraftprovider.h @@ -69,9 +69,8 @@ namespace BlackMisc virtual BlackMisc::Aviation::CCallsignSet getAircraftInRangeCallsigns() const = 0; //! Is aircraft in range? - //! \remark convenience function with default implementation //! \threadsafe - virtual bool isAircraftInRange(const BlackMisc::Aviation::CCallsign &callsign) const; + virtual bool isAircraftInRange(const BlackMisc::Aviation::CCallsign &callsign) const = 0; //! Current snapshot //! \threadsafe