mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 07:15:35 +08:00
Ref T261, Ref T251 gnd flag support in context/client provider
* allow to set gnd.flag capability via context/client * utility functions in client provider
This commit is contained in:
@@ -140,6 +140,9 @@ namespace BlackCore
|
||||
//! Aircraft enabled / disabled
|
||||
void changedFastPositionUpdates(const BlackMisc::Simulation::CSimulatedAircraft &aircraft);
|
||||
|
||||
//! Changed gnd. flag capability
|
||||
void changedGndFlagCapability(const BlackMisc::Simulation::CSimulatedAircraft &aircraft);
|
||||
|
||||
//! Connection status changed for online station
|
||||
void changedAtcStationOnlineConnectionStatus(const BlackMisc::Aviation::CAtcStation &atcStation, bool connected);
|
||||
|
||||
@@ -261,7 +264,10 @@ namespace BlackCore
|
||||
virtual void requestAtisUpdates() = 0;
|
||||
|
||||
//! Enable/disable rendering
|
||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering) = 0;
|
||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) = 0;
|
||||
|
||||
//! Enable/disable support of gnd. flag
|
||||
virtual bool updateAircraftSupportingGndFLag(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) = 0;
|
||||
|
||||
//! Change model
|
||||
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) = 0;
|
||||
|
||||
@@ -299,10 +299,19 @@ namespace BlackCore
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::updateAircraftEnabled
|
||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering) override
|
||||
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override
|
||||
{
|
||||
Q_UNUSED(callsign);
|
||||
Q_UNUSED(enabledForRedering);
|
||||
Q_UNUSED(enabledForRendering);
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return false;
|
||||
}
|
||||
|
||||
//! \copydoc IContextNetwork::updateAircraftSupportingGndFLag
|
||||
virtual bool updateAircraftSupportingGndFLag(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) override
|
||||
{
|
||||
Q_UNUSED(callsign);
|
||||
Q_UNUSED(supportGndFlag);
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -422,6 +422,11 @@ namespace BlackCore
|
||||
return m_airspace->addClientGndCapability(callsign);
|
||||
}
|
||||
|
||||
bool CContextNetwork::setClientGndCapability(const Aviation::CCallsign &callsign, bool supportGndFlag)
|
||||
{
|
||||
return m_airspace->setClientGndCapability(callsign, supportGndFlag);
|
||||
}
|
||||
|
||||
CServerList CContextNetwork::getVatsimFsdServers() const
|
||||
{
|
||||
Q_ASSERT_X(sApp->getWebDataServices(), Q_FUNC_INFO, "Missing data reader");
|
||||
@@ -700,7 +705,7 @@ namespace BlackCore
|
||||
{
|
||||
Q_ASSERT(m_airspace);
|
||||
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign << enabledForRendering; }
|
||||
bool c = m_airspace->updateAircraftEnabled(callsign, enabledForRendering);
|
||||
const bool c = m_airspace->updateAircraftEnabled(callsign, enabledForRendering);
|
||||
if (c)
|
||||
{
|
||||
CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign));
|
||||
@@ -742,13 +747,26 @@ namespace BlackCore
|
||||
const bool c = m_airspace->updateFastPositionEnabled(callsign, enableFastPositonUpdates);
|
||||
if (c)
|
||||
{
|
||||
CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign));
|
||||
const CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign));
|
||||
CLogMessage(this).info("Callsign %1 sets fast positions ") << aircraft.getCallsign() << BlackMisc::boolToOnOff(aircraft.fastPositionUpdates());
|
||||
emit this->changedFastPositionUpdates(aircraft);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
bool CContextNetwork::updateAircraftSupportingGndFLag(const CCallsign &callsign, bool supportGndFlag)
|
||||
{
|
||||
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign << supportGndFlag; }
|
||||
const bool c = m_airspace->setClientGndCapability(callsign, supportGndFlag);
|
||||
if (c)
|
||||
{
|
||||
const CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign));
|
||||
CLogMessage(this).info("Callsign %1 set gnd.capability ") << aircraft.getCallsign() << BlackMisc::boolToOnOff(aircraft.fastPositionUpdates());
|
||||
emit this->changedGndFlagCapability(aircraft);
|
||||
}
|
||||
return c;
|
||||
}
|
||||
|
||||
bool CContextNetwork::updateCG(const Aviation::CCallsign &callsign, const CLength &cg)
|
||||
{
|
||||
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign << cg.valueRoundedWithUnit(1); }
|
||||
|
||||
@@ -121,6 +121,7 @@ namespace BlackCore
|
||||
virtual int removeClient(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual bool autoAdjustCientGndCapability(const BlackMisc::Aviation::CAircraftSituation &situation) override;
|
||||
virtual bool addClientGndCapability(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual bool setClientGndCapability(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) override;
|
||||
//! @}
|
||||
|
||||
public slots:
|
||||
@@ -131,6 +132,7 @@ namespace BlackCore
|
||||
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual bool updateAircraftNetworkModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual bool updateFastPositionEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enableFastPositonUpdates) override;
|
||||
virtual bool updateAircraftSupportingGndFLag(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) override;
|
||||
virtual bool updateCG(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CLength &cg) override;
|
||||
virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override;
|
||||
virtual BlackMisc::Aviation::CCallsignSet getAircraftInRangeCallsigns() const override;
|
||||
|
||||
@@ -87,6 +87,9 @@ namespace BlackCore
|
||||
s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(),
|
||||
"changedFastPositionUpdates", this, SIGNAL(changedFastPositionUpdates(BlackMisc::Simulation::CSimulatedAircraft)));
|
||||
Q_ASSERT(s);
|
||||
s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(),
|
||||
"changedGndFlagCapability", this, SIGNAL(changedGndFlagCapability(BlackMisc::Simulation::CSimulatedAircraft)));
|
||||
Q_ASSERT(s);
|
||||
s = connection.connect(serviceName, IContextNetwork::ObjectPath(), IContextNetwork::InterfaceName(),
|
||||
"addedAircraft", this, SIGNAL(addedAircraft(BlackMisc::Simulation::CSimulatedAircraft)));
|
||||
Q_ASSERT(s);
|
||||
@@ -225,6 +228,11 @@ namespace BlackCore
|
||||
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateFastPositionEnabled"), callsign, enableFastPositionSending);
|
||||
}
|
||||
|
||||
bool CContextNetworkProxy::updateAircraftSupportingGndFLag(const CCallsign &callsign, bool supportGndFlag)
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateAircraftSupportingGndFLag"), callsign, supportGndFlag);
|
||||
}
|
||||
|
||||
void CContextNetworkProxy::setFastPositionEnabledCallsigns(CCallsignSet &callsigns)
|
||||
{
|
||||
m_dBusInterface->callDBus(QLatin1String("setFastPositionEnabledCallsigns"), callsigns);
|
||||
|
||||
@@ -109,6 +109,7 @@ namespace BlackCore
|
||||
virtual bool updateAircraftModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual bool updateAircraftNetworkModel(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Simulation::CAircraftModel &model, const BlackMisc::CIdentifier &originator) override;
|
||||
virtual bool updateFastPositionEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enableFastPositionSending) override;
|
||||
virtual bool updateAircraftSupportingGndFLag(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) override;
|
||||
virtual void setFastPositionEnabledCallsigns(BlackMisc::Aviation::CCallsignSet &callsigns) override;
|
||||
virtual BlackMisc::Aviation::CCallsignSet getFastPositionEnabledCallsigns() const override;
|
||||
virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
|
||||
#include "blackcore/context/contextsimulator.h"
|
||||
#include "blackcore/application/applicationsettings.h"
|
||||
#include "blackcore/simulator.h"
|
||||
#include "blackcore/corefacadeconfig.h"
|
||||
#include "blackcore/aircraftmatcher.h"
|
||||
#include "blackcore/blackcoreexport.h"
|
||||
@@ -130,6 +131,9 @@ namespace BlackCore
|
||||
//! Access to simulator (i.e. the plugin)
|
||||
ISimulator *simulator() const;
|
||||
|
||||
//! Simulator available?
|
||||
bool hasSimulator() const { return this->simulator(); }
|
||||
|
||||
//! Register dot commands
|
||||
static void registerHelp()
|
||||
{
|
||||
|
||||
@@ -100,14 +100,25 @@ namespace BlackMisc
|
||||
}
|
||||
|
||||
bool CClientProvider::addClientGndCapability(const CCallsign &callsign)
|
||||
{
|
||||
return this->setClientGndCapability(callsign, true);
|
||||
}
|
||||
|
||||
bool CClientProvider::setClientGndCapability(const CCallsign &callsign, bool supportGndFlag)
|
||||
{
|
||||
CClient client = this->getClientOrDefaultForCallsign(callsign);
|
||||
|
||||
// need to change?
|
||||
if (!client.isValid()) { return false; } // no client
|
||||
if (client.hasGndFlagCapability()) { return true; } // already set, but set
|
||||
|
||||
client.addCapability(CClient::FsdWithGroundFlag);
|
||||
if (client.hasGndFlagCapability() == supportGndFlag) { return true; } // already set, but set
|
||||
if (supportGndFlag)
|
||||
{
|
||||
client.addCapability(CClient::FsdWithGroundFlag);
|
||||
}
|
||||
else
|
||||
{
|
||||
client.removeCapability(CClient::FsdWithGroundFlag);
|
||||
}
|
||||
QWriteLocker l(&m_lockClient);
|
||||
m_clients.replaceOrAddObjectByCallsign(client);
|
||||
return true;
|
||||
|
||||
@@ -73,6 +73,10 @@ namespace BlackMisc
|
||||
//! Add gnd.flag capability
|
||||
//! \threadsafe
|
||||
virtual bool addClientGndCapability(const Aviation::CCallsign &callsign) = 0;
|
||||
|
||||
//! Set gnd.flag capability
|
||||
//! \threadsafe
|
||||
virtual bool setClientGndCapability(const Aviation::CCallsign &callsign, bool supportGndFlag) = 0;
|
||||
};
|
||||
|
||||
//! Direct in memory access to client (network client) data
|
||||
@@ -93,6 +97,7 @@ namespace BlackMisc
|
||||
virtual int removeClient(const Aviation::CCallsign &callsign) override;
|
||||
virtual bool autoAdjustCientGndCapability(const Aviation::CAircraftSituation &situation) override;
|
||||
virtual bool addClientGndCapability(const Aviation::CCallsign &callsign) override;
|
||||
virtual bool setClientGndCapability(const Aviation::CCallsign &callsign, bool supportGndFlag) override;
|
||||
//! @}
|
||||
|
||||
private:
|
||||
|
||||
Reference in New Issue
Block a user