mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-03-23 15:25:35 +08:00
refs #793, added function to reset model (after it was manually changed)
* located in context since context owns matcher object * call from GUI * some code formatting to indicate the cross simulator slots connected in runtime refs #780
This commit is contained in:
@@ -157,11 +157,11 @@ namespace BlackCore
|
||||
|
||||
private slots:
|
||||
//! Station has been changed, needed to tune in/out voice room
|
||||
//! \note Connected in runtime
|
||||
//! \ingroup crosscontextslot
|
||||
void ps_changedAtcStationOnlineConnectionStatus(const BlackMisc::Aviation::CAtcStation &atcStation, bool connected);
|
||||
|
||||
//! Simulator model has been changed
|
||||
//! \note Connected in runtime
|
||||
//! \ingroup crosscontextslot
|
||||
void ps_changedSimulatorModel(const BlackMisc::Simulation::CAircraftModel &model);
|
||||
|
||||
//! Web data loaded
|
||||
|
||||
@@ -128,7 +128,7 @@ namespace BlackCore
|
||||
virtual int getSimulatorStatus() const = 0;
|
||||
|
||||
//! Get simulator status as enum
|
||||
//! \todo To be removed with Qt 5.5 when getSimualtorStatus directly provides the enum
|
||||
//! \fixme To be removed with Qt 5.5 when getSimualtorStatus directly provides the enum
|
||||
ISimulator::SimulatorStatus getSimulatorStatusEnum() const;
|
||||
|
||||
//! Simulator setup
|
||||
@@ -214,6 +214,9 @@ namespace BlackCore
|
||||
//! Highlight aircraft in simulator
|
||||
virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) = 0;
|
||||
|
||||
//! Reset model by matching it again
|
||||
virtual bool resetToModelMatchingAircraft(const BlackMisc::Aviation::CCallsign &callsign) = 0;
|
||||
|
||||
//! Request weather grid. Argument identifier is past in the signal to identify the requestor
|
||||
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) = 0;
|
||||
|
||||
|
||||
@@ -219,6 +219,13 @@ namespace BlackCore
|
||||
logEmptyContextWarning(Q_FUNC_INFO);
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::resetToModelMatchingAircraft
|
||||
virtual bool resetToModelMatchingAircraft(const BlackMisc::Aviation::CCallsign &callsign) override
|
||||
{
|
||||
Q_UNUSED(callsign);
|
||||
return false;
|
||||
}
|
||||
|
||||
//! \copydoc IContextSimulator::requestWeatherGrid
|
||||
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override
|
||||
{
|
||||
|
||||
@@ -483,7 +483,7 @@ namespace BlackCore
|
||||
}
|
||||
}
|
||||
|
||||
void CContextSimulator::ps_addRemoteAircraft(const CSimulatedAircraft &remoteAircraft)
|
||||
void CContextSimulator::ps_addedRemoteAircraft(const CSimulatedAircraft &remoteAircraft)
|
||||
{
|
||||
if (!isSimulatorSimulating()) { return; }
|
||||
Q_ASSERT(!remoteAircraft.getCallsign().isEmpty());
|
||||
@@ -522,7 +522,7 @@ namespace BlackCore
|
||||
for (const CSimulatedAircraft &simulatedAircraft : aircrafts)
|
||||
{
|
||||
Q_ASSERT(!simulatedAircraft.getCallsign().isEmpty());
|
||||
ps_addRemoteAircraft(simulatedAircraft);
|
||||
ps_addedRemoteAircraft(simulatedAircraft);
|
||||
}
|
||||
m_initallyAddAircrafts = false;
|
||||
}
|
||||
@@ -653,6 +653,15 @@ namespace BlackCore
|
||||
m_simulatorPlugin.second->highlightAircraft(aircraftToHighlight, enableHighlight, displayTime);
|
||||
}
|
||||
|
||||
bool CContextSimulator::resetToModelMatchingAircraft(const CCallsign &callsign)
|
||||
{
|
||||
CSimulatedAircraft aircraft = getAircraftInRangeForCallsign(callsign);
|
||||
if (aircraft.getCallsign() != callsign) { return false; } // not found
|
||||
aircraft.setModel(aircraft.getNetworkModel());
|
||||
ps_addedRemoteAircraft(aircraft);
|
||||
return true;
|
||||
}
|
||||
|
||||
void CContextSimulator::requestWeatherGrid(const Weather::CWeatherGrid &weatherGrid, const CIdentifier &identifier)
|
||||
{
|
||||
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << identifier; }
|
||||
|
||||
@@ -99,11 +99,12 @@ namespace BlackCore
|
||||
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;
|
||||
virtual bool resetToModelMatchingAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override;
|
||||
virtual void enableDebugMessages(bool driver, bool interpolator) override;
|
||||
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const;
|
||||
virtual bool isMatchingMessagesEnabled() const;
|
||||
virtual void enableMatchingMessages(bool enabled);
|
||||
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual bool isMatchingMessagesEnabled() const override;
|
||||
virtual void enableMatchingMessages(bool enabled) override;
|
||||
//! @}
|
||||
|
||||
protected:
|
||||
@@ -114,12 +115,30 @@ namespace BlackCore
|
||||
CContextSimulator *registerWithDBus(BlackMisc::CDBusServer *server);
|
||||
|
||||
private slots:
|
||||
|
||||
//
|
||||
// ------------ slots connected with network context and not to be used other by network contect ---------
|
||||
//
|
||||
//! \ingroup crosscontextslot
|
||||
//! @{
|
||||
|
||||
//! Remote aircraft added
|
||||
void ps_addRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft);
|
||||
void ps_addedRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft);
|
||||
|
||||
//! Remove remote aircraft
|
||||
void ps_removedRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign);
|
||||
|
||||
//! Changed remote aircraft model
|
||||
void ps_changedRemoteAircraftModel(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator);
|
||||
|
||||
//! Enable / disable aircraft
|
||||
void ps_changedRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft);
|
||||
|
||||
//! @}
|
||||
//
|
||||
// ------------ slots connected with network context and not to be used other by network contect ---------
|
||||
//
|
||||
|
||||
//! Handle new connection status of simulator
|
||||
void ps_onSimulatorStatusChanged(int status);
|
||||
|
||||
@@ -135,17 +154,11 @@ namespace BlackCore
|
||||
//! Simulator has changed cockpit
|
||||
void ps_cockpitChangedFromSimulator(const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft);
|
||||
|
||||
//! Changed remote aircraft model
|
||||
void ps_changedRemoteAircraftModel(const BlackMisc::Simulation::CSimulatedAircraft &aircraft, const BlackMisc::CIdentifier &originator);
|
||||
|
||||
//! Enable / disable aircraft
|
||||
void ps_changedRemoteAircraftEnabled(const BlackMisc::Simulation::CSimulatedAircraft &aircraft);
|
||||
|
||||
//! Failed adding remote aircraft
|
||||
void ps_addingRemoteAircraftFailed(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, const BlackMisc::CStatusMessage &message);
|
||||
|
||||
//! Update simulator cockpit from context, because someone else has changed cockpit (e.g. GUI, 3rd party)
|
||||
//! \remarks set by runtime, only to be used locally (not via DBus)
|
||||
//! \ingroup crosscontextslot
|
||||
void ps_updateSimulatorCockpitFromContext(const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft, const BlackMisc::CIdentifier &originator);
|
||||
|
||||
//! Relay status message to simulator under consideration of settings
|
||||
|
||||
@@ -63,7 +63,7 @@ namespace BlackCore
|
||||
"weatherGridReceived", this, SIGNAL(weatherGridReceived(BlackMisc::Weather::CWeatherGrid, BlackMisc::CIdentifier)));
|
||||
Q_ASSERT(s);
|
||||
s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
|
||||
"addingRemoteModelFailed", this, SIGNAL(addingRemoteModelFailed(BlackMisc::Simulation::CSimulatedAircraft,BlackMisc::CStatusMessage&)));
|
||||
"addingRemoteModelFailed", this, SIGNAL(addingRemoteModelFailed(BlackMisc::Simulation::CSimulatedAircraft, BlackMisc::CStatusMessage &)));
|
||||
Q_ASSERT(s);
|
||||
Q_UNUSED(s);
|
||||
this->relayBaseClassSignals(serviceName, connection, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName());
|
||||
@@ -199,6 +199,11 @@ namespace BlackCore
|
||||
m_dBusInterface->callDBus(QLatin1Literal("highlightAircraft"), aircraftToHighlight, enableHighlight, displayTime);
|
||||
}
|
||||
|
||||
bool CContextSimulatorProxy::resetToModelMatchingAircraft(const CCallsign &callsign)
|
||||
{
|
||||
return m_dBusInterface->callDBusRet<bool>(QLatin1Literal("resetToModelMatchingAircraft"), callsign, callsign);
|
||||
}
|
||||
|
||||
void CContextSimulatorProxy::requestWeatherGrid(const Weather::CWeatherGrid &weatherGrid, const CIdentifier &identifier)
|
||||
{
|
||||
m_dBusInterface->callDBus(QLatin1Literal("requestWeatherGrid"), weatherGrid, identifier);
|
||||
|
||||
@@ -79,11 +79,12 @@ namespace BlackCore
|
||||
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;
|
||||
virtual bool resetToModelMatchingAircraft(const BlackMisc::Aviation::CCallsign &callsign) override;
|
||||
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override;
|
||||
virtual void enableDebugMessages(bool driver, bool interpolator) override;
|
||||
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const;
|
||||
virtual bool isMatchingMessagesEnabled() const;
|
||||
virtual void enableMatchingMessages(bool enabled);
|
||||
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||
virtual bool isMatchingMessagesEnabled() const override;
|
||||
virtual void enableMatchingMessages(bool enabled) override;
|
||||
//! @}
|
||||
|
||||
private:
|
||||
|
||||
@@ -170,7 +170,7 @@ namespace BlackCore
|
||||
// use readyForModelMatching instead of CAirspaceMonitor::addedAircraft, as it contains client information
|
||||
// ready for model matching is sent delayed when all information are available
|
||||
c = connect(this->m_contextNetwork, &IContextNetwork::readyForModelMatching,
|
||||
this->getCContextSimulator(), &CContextSimulator::ps_addRemoteAircraft);
|
||||
this->getCContextSimulator(), &CContextSimulator::ps_addedRemoteAircraft);
|
||||
Q_ASSERT(c);
|
||||
c = connect(this->m_contextNetwork, &IContextNetwork::removedAircraft,
|
||||
this->getCContextSimulator(), &CContextSimulator::ps_removedRemoteAircraft);
|
||||
|
||||
@@ -305,13 +305,15 @@ namespace BlackGui
|
||||
if (!sGui->getIContextSimulator()->isSimulatorSimulating()) { return; }
|
||||
const CCallsign callsign(this->validateRenderedCallsign());
|
||||
if (callsign.isEmpty()) { return; }
|
||||
const CSimulatedAircraft aircraftFromBackend = sGui->getIContextNetwork()->getAircraftInRangeForCallsign(callsign);
|
||||
if (aircraftFromBackend.getCallsign() != callsign) { return; }
|
||||
bool changed = sGui->getIContextNetwork()->updateAircraftModel(callsign, aircraftFromBackend.getModel(), identifier());
|
||||
if (changed)
|
||||
bool reset = sGui->getIContextSimulator()->resetToModelMatchingAircraft(callsign);
|
||||
if (reset)
|
||||
{
|
||||
CLogMessage(this).info("Model reset for '%1'") << callsign.toQString();
|
||||
}
|
||||
else
|
||||
{
|
||||
CLogMessage(this).info("Reset failed for '%1'") << callsign.toQString();
|
||||
}
|
||||
}
|
||||
|
||||
void CMappingComponent::ps_onModelPreviewChanged(int state)
|
||||
|
||||
Reference in New Issue
Block a user