Ref T379, to improve reset models added "setAircraftEnabledFlag" to just set the flag, not sending signals causing removed aircraft

This commit is contained in:
Klaus Basan
2018-09-30 23:25:42 +02:00
parent 2eb1316f80
commit 756ee18410
9 changed files with 71 additions and 11 deletions

View File

@@ -269,6 +269,9 @@ namespace BlackCore
//! Enable/disable rendering
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) = 0;
//! Set the enabled flag without any further logic like sending signals
virtual bool setAircraftEnabledFlag(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;

View File

@@ -354,6 +354,15 @@ namespace BlackCore
return false;
}
//! \copydoc IContextNetwork::setAircraftEnabledFlag
virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override
{
logEmptyContextWarning(Q_FUNC_INFO);
Q_UNUSED(callsign);
Q_UNUSED(enabledForRendering);
return false;
}
//! \copydoc IContextNetwork::reInitializeAllAircraft
virtual int reInitializeAllAircraft() override
{

View File

@@ -122,6 +122,12 @@ namespace BlackCore
return m_airspace->remoteAircraftSituation(callsign, index);
}
MillisecondsMinMaxMean CContextNetwork::remoteAircraftSituationsTimestampDifferenceMinMaxMean(const CCallsign &callsign) const
{
Q_ASSERT(m_airspace);
return m_airspace->remoteAircraftSituationsTimestampDifferenceMinMaxMean(callsign);
}
CAircraftSituationList CContextNetwork::latestRemoteAircraftSituations() const
{
Q_ASSERT(m_airspace);
@@ -774,6 +780,12 @@ namespace BlackCore
return c;
}
bool CContextNetwork::setAircraftEnabledFlag(const CCallsign &callsign, bool enabledForRendering)
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << callsign; }
return m_airspace->setAircraftEnabledFlag(callsign, enabledForRendering);
}
bool CContextNetwork::updateAircraftModel(const CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator)
{
Q_ASSERT(m_airspace);
@@ -807,7 +819,7 @@ namespace BlackCore
if (c)
{
const CSimulatedAircraft aircraft(this->getAircraftInRangeForCallsign(callsign));
CLogMessage(this).info("Callsign %1 sets fast positions ") << aircraft.getCallsign() << BlackMisc::boolToOnOff(aircraft.fastPositionUpdates());
CLogMessage(this).info("Callsign '%1' fast positions '%2'") << aircraft.getCallsign() << BlackMisc::boolToOnOff(aircraft.fastPositionUpdates());
emit this->changedFastPositionUpdates(aircraft);
}
return c;
@@ -876,6 +888,7 @@ namespace BlackCore
int CContextNetwork::reInitializeAllAircraft()
{
if (this->isDebugEnabled()) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO; }
return m_airspace->reInitializeAllAircraft();
}

View File

@@ -93,6 +93,7 @@ namespace BlackCore
//! @{
virtual BlackMisc::Aviation::CAircraftSituationList remoteAircraftSituations(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CAircraftSituation remoteAircraftSituation(const BlackMisc::Aviation::CCallsign &callsign, int index) const override;
virtual BlackMisc::MillisecondsMinMaxMean remoteAircraftSituationsTimestampDifferenceMinMaxMean(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CAircraftSituationList latestRemoteAircraftSituations() const override;
virtual BlackMisc::Aviation::CAircraftSituationList latestOnGroundProviderElevations() const override;
virtual int remoteAircraftSituationsCount(const BlackMisc::Aviation::CCallsign &callsign) const override;
@@ -153,12 +154,18 @@ namespace BlackCore
// from context and provider interface
//! \ingroup remoteaircraftprovider
//! @{
// emit signal when changed
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
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 int reInitializeAllAircraft() override;
virtual bool updateAircraftSupportingGndFLag(const BlackMisc::Aviation::CCallsign &callsign, bool supportGndFlag) override;
virtual void enableReverseLookupMessages(bool enabled) override;
// plain vanilla passing to airspace monitor
virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
virtual int reInitializeAllAircraft() override;
virtual bool updateCG(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CLength &cg) override;
virtual bool updateCGAndModelString(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::PhysicalQuantities::CLength &cg, const QString &modelString) override;
virtual BlackMisc::Simulation::CSimulatedAircraftList getAircraftInRange() const override;
@@ -170,7 +177,6 @@ namespace BlackCore
virtual BlackMisc::Simulation::CAircraftModel getAircraftInRangeModelForCallsign(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::CStatusMessageList getReverseLookupMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual bool isReverseLookupMessagesEnabled() const override;
virtual void enableReverseLookupMessages(bool enabled) override;
virtual BlackMisc::CStatusMessageList getAircraftPartsHistory(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual BlackMisc::Aviation::CAircraftPartsList getRemoteAircraftParts(const BlackMisc::Aviation::CCallsign &callsign) const override;
virtual int getRemoteAircraftSupportingPartsCount() const override;

View File

@@ -208,9 +208,14 @@ namespace BlackCore
m_dBusInterface->callDBus(QLatin1String("requestAtisUpdates"));
}
bool CContextNetworkProxy::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRedering)
bool CContextNetworkProxy::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateAircraftEnabled"), callsign, enabledForRedering);
return m_dBusInterface->callDBusRet<bool>(QLatin1String("updateAircraftEnabled"), callsign, enabledForRendering);
}
bool CContextNetworkProxy::setAircraftEnabledFlag(const CCallsign &callsign, bool enabledForRendering)
{
return m_dBusInterface->callDBusRet<bool>(QLatin1String("setEnabledFlag"), callsign, enabledForRendering);
}
bool CContextNetworkProxy::updateAircraftModel(const CCallsign &callsign, const CAircraftModel &model, const CIdentifier &originator)

View File

@@ -106,7 +106,8 @@ namespace BlackCore
virtual bool setOtherClient(const BlackMisc::Network::CClient &client) override;
virtual void requestDataUpdates()override;
virtual void requestAtisUpdates() override;
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRedering) override;
virtual bool updateAircraftEnabled(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) override;
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;

View File

@@ -870,9 +870,10 @@ namespace BlackCore
{
CSimulatedAircraft aircraft = this->getAircraftInRangeForCallsign(callsign);
if (aircraft.getCallsign() != callsign) { return false; } // not found
this->updateAircraftEnabled(callsign, true);
aircraft.setModel(aircraft.getNetworkModel());
xCtxAddedRemoteAircraftReadyForModelMatching(aircraft);
this->setAircraftEnabledFlag(callsign, true); // plain vanilla flag
this->updateAircraftRendered(callsign, false); // this is flag only anyway
aircraft.setModel(aircraft.getNetworkModel()); // like originally from network
this->xCtxAddedRemoteAircraftReadyForModelMatching(aircraft);
return true;
}

View File

@@ -472,6 +472,12 @@ namespace BlackMisc
}
bool CRemoteAircraftProvider::updateAircraftEnabled(const CCallsign &callsign, bool enabledForRendering)
{
// here just synonym
return this->setAircraftEnabledFlag(callsign, enabledForRendering);
}
bool CRemoteAircraftProvider::setAircraftEnabledFlag(const CCallsign &callsign, bool enabledForRendering)
{
QWriteLocker l(&m_lockAircraft);
if (!m_aircraftInRange.contains(callsign)) { return false; }
@@ -1008,6 +1014,12 @@ namespace BlackMisc
return this->provider()->updateAircraftEnabled(callsign, enabledForRendering);
}
bool CRemoteAircraftAware::setAircraftEnabledFlag(const CCallsign &callsign, bool enabledForRendering)
{
Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available");
return this->provider()->setAircraftEnabledFlag(callsign, enabledForRendering);
}
bool CRemoteAircraftAware::updateMultipleAircraftEnabled(const CCallsignSet &callsigns, bool enabledForRendering)
{
Q_ASSERT_X(this->provider(), Q_FUNC_INFO, "No object available");

View File

@@ -153,10 +153,15 @@ namespace BlackMisc
//! \threadsafe
virtual int remoteAircraftSituationChangesCount(const Aviation::CCallsign &callsign) const = 0;
//! Enable/disable aircraft
//! Enable/disable aircraft and follow up logic like sending signals
//! \threadsafe
//! \remark depending on implementation similar or more sophisticated as setEnabledFlag
virtual bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRendering) = 0;
//! Just set enable/disable aircraft flag, no further logic
//! \threadsafe
virtual bool setAircraftEnabledFlag(const BlackMisc::Aviation::CCallsign &callsign, bool enabledForRendering) = 0;
//! Enable/disable aircraft
//! \threadsafe
virtual int updateMultipleAircraftEnabled(const Aviation::CCallsignSet &callsigns, bool enabledForRendering) = 0;
@@ -295,6 +300,7 @@ namespace BlackMisc
virtual bool isVtolAircraft(const Aviation::CCallsign &callsign) const override;
virtual Aviation::CAircraftSituationList remoteAircraftSituations(const Aviation::CCallsign &callsign) const override;
virtual Aviation::CAircraftSituation remoteAircraftSituation(const Aviation::CCallsign &callsign, int index) const override;
virtual MillisecondsMinMaxMean remoteAircraftSituationsTimestampDifferenceMinMaxMean(const Aviation::CCallsign &callsign) const override;
virtual Aviation::CAircraftSituationList latestRemoteAircraftSituations() const override;
virtual Aviation::CAircraftSituationList latestOnGroundProviderElevations() const override;
virtual int remoteAircraftSituationsCount(const Aviation::CCallsign &callsign) const override;
@@ -306,6 +312,7 @@ 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 bool setAircraftEnabledFlag(const BlackMisc::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;
@@ -538,7 +545,10 @@ namespace BlackMisc
int getRemoteAircraftSupportingPartsCount() const;
//! \copydoc IRemoteAircraftProvider::updateAircraftEnabled
bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRedering);
bool updateAircraftEnabled(const Aviation::CCallsign &callsign, bool enabledForRendering);
//! \copydoc IRemoteAircraftProvider::setAircraftEnabledFlag
bool setAircraftEnabledFlag(const Aviation::CCallsign &callsign, bool enabledForRendering);
//! \copydoc IRemoteAircraftProvider::updateMultipleAircraftEnabled
bool updateMultipleAircraftEnabled(const Aviation::CCallsignSet &callsigns, bool enabledForRendering);