diff --git a/src/blackcore/context/contextnetwork.h b/src/blackcore/context/contextnetwork.h index db99f2fb7..1196ac014 100644 --- a/src/blackcore/context/contextnetwork.h +++ b/src/blackcore/context/contextnetwork.h @@ -203,6 +203,9 @@ namespace BlackCore //! Online station for callsign virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const = 0; + //! Online station for callsign? + virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const = 0; + //! Get all users virtual BlackMisc::Network::CUserList getUsers() const = 0; diff --git a/src/blackcore/context/contextnetworkempty.h b/src/blackcore/context/contextnetworkempty.h index 389e064cb..7f188637c 100644 --- a/src/blackcore/context/contextnetworkempty.h +++ b/src/blackcore/context/contextnetworkempty.h @@ -105,6 +105,14 @@ namespace BlackCore return BlackMisc::Aviation::CAtcStation(); } + //! \copydoc IContextNetwork::isOnlineStation + virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override + { + Q_UNUSED(callsign); + logEmptyContextWarning(Q_FUNC_INFO); + return false; + } + //! \copydoc IContextNetwork::connectToNetwork virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, BlackCore::INetwork::LoginMode mode) override { diff --git a/src/blackcore/context/contextnetworkimpl.cpp b/src/blackcore/context/contextnetworkimpl.cpp index e19e39380..cb577d55a 100644 --- a/src/blackcore/context/contextnetworkimpl.cpp +++ b/src/blackcore/context/contextnetworkimpl.cpp @@ -764,6 +764,12 @@ namespace BlackCore return m_airspace->getAtcStationsOnline().findFirstByCallsign(callsign); } + bool CContextNetwork::isOnlineStation(const CCallsign &callsign) const + { + if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign; } + return m_airspace->getAtcStationsOnline().containsCallsign(callsign); + } + void CContextNetwork::requestDataUpdates() { Q_ASSERT(m_airspace); diff --git a/src/blackcore/context/contextnetworkimpl.h b/src/blackcore/context/contextnetworkimpl.h index 064f1658f..bd54c0184 100644 --- a/src/blackcore/context/contextnetworkimpl.h +++ b/src/blackcore/context/contextnetworkimpl.h @@ -235,6 +235,7 @@ namespace BlackCore virtual BlackMisc::Aviation::CAtcStationList getAtcStationsOnline(bool recalculateDistance) const override; virtual BlackMisc::Aviation::CAtcStationList getClosestAtcStationsOnline(int number) const override; virtual BlackMisc::Aviation::CAtcStation getOnlineStationForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override; + virtual bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, BlackCore::INetwork::LoginMode mode) override; virtual BlackMisc::Network::CServer getConnectedServer() const override; virtual INetwork::LoginMode getLoginMode() const override; diff --git a/src/blackcore/context/contextnetworkproxy.cpp b/src/blackcore/context/contextnetworkproxy.cpp index c492b60a1..b75b9db49 100644 --- a/src/blackcore/context/contextnetworkproxy.cpp +++ b/src/blackcore/context/contextnetworkproxy.cpp @@ -153,6 +153,11 @@ namespace BlackCore return m_dBusInterface->callDBusRet(QLatin1String("getOnlineStationForCallsign"), callsign); } + bool CContextNetworkProxy::isOnlineStation(const CCallsign &callsign) const + { + return m_dBusInterface->callDBusRet(QLatin1String("isOnlineStation"), callsign); + } + CUserList CContextNetworkProxy::getUsers() const { return m_dBusInterface->callDBusRet(QLatin1String("getUsers")); diff --git a/src/blackcore/context/contextnetworkproxy.h b/src/blackcore/context/contextnetworkproxy.h index 33c0ddd55..525d76346 100644 --- a/src/blackcore/context/contextnetworkproxy.h +++ b/src/blackcore/context/contextnetworkproxy.h @@ -85,6 +85,7 @@ namespace BlackCore 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 bool isOnlineStation(const BlackMisc::Aviation::CCallsign &callsign) const override; virtual BlackMisc::CStatusMessage connectToNetwork(const BlackMisc::Network::CServer &server, BlackCore::INetwork::LoginMode mode) override; virtual BlackMisc::CStatusMessage disconnectFromNetwork() override; virtual bool isConnected() const override;