mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-07 11:05:33 +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:
|
private slots:
|
||||||
//! Station has been changed, needed to tune in/out voice room
|
//! 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);
|
void ps_changedAtcStationOnlineConnectionStatus(const BlackMisc::Aviation::CAtcStation &atcStation, bool connected);
|
||||||
|
|
||||||
//! Simulator model has been changed
|
//! Simulator model has been changed
|
||||||
//! \note Connected in runtime
|
//! \ingroup crosscontextslot
|
||||||
void ps_changedSimulatorModel(const BlackMisc::Simulation::CAircraftModel &model);
|
void ps_changedSimulatorModel(const BlackMisc::Simulation::CAircraftModel &model);
|
||||||
|
|
||||||
//! Web data loaded
|
//! Web data loaded
|
||||||
|
|||||||
@@ -128,7 +128,7 @@ namespace BlackCore
|
|||||||
virtual int getSimulatorStatus() const = 0;
|
virtual int getSimulatorStatus() const = 0;
|
||||||
|
|
||||||
//! Get simulator status as enum
|
//! 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;
|
ISimulator::SimulatorStatus getSimulatorStatusEnum() const;
|
||||||
|
|
||||||
//! Simulator setup
|
//! Simulator setup
|
||||||
@@ -214,6 +214,9 @@ namespace BlackCore
|
|||||||
//! Highlight aircraft in simulator
|
//! Highlight aircraft in simulator
|
||||||
virtual void highlightAircraft(const BlackMisc::Simulation::CSimulatedAircraft &aircraftToHighlight, bool enableHighlight, const BlackMisc::PhysicalQuantities::CTime &displayTime) = 0;
|
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
|
//! 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;
|
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) = 0;
|
||||||
|
|
||||||
|
|||||||
@@ -219,6 +219,13 @@ namespace BlackCore
|
|||||||
logEmptyContextWarning(Q_FUNC_INFO);
|
logEmptyContextWarning(Q_FUNC_INFO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//! \copydoc IContextSimulator::resetToModelMatchingAircraft
|
||||||
|
virtual bool resetToModelMatchingAircraft(const BlackMisc::Aviation::CCallsign &callsign) override
|
||||||
|
{
|
||||||
|
Q_UNUSED(callsign);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
//! \copydoc IContextSimulator::requestWeatherGrid
|
//! \copydoc IContextSimulator::requestWeatherGrid
|
||||||
virtual void requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override
|
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; }
|
if (!isSimulatorSimulating()) { return; }
|
||||||
Q_ASSERT(!remoteAircraft.getCallsign().isEmpty());
|
Q_ASSERT(!remoteAircraft.getCallsign().isEmpty());
|
||||||
@@ -522,7 +522,7 @@ namespace BlackCore
|
|||||||
for (const CSimulatedAircraft &simulatedAircraft : aircrafts)
|
for (const CSimulatedAircraft &simulatedAircraft : aircrafts)
|
||||||
{
|
{
|
||||||
Q_ASSERT(!simulatedAircraft.getCallsign().isEmpty());
|
Q_ASSERT(!simulatedAircraft.getCallsign().isEmpty());
|
||||||
ps_addRemoteAircraft(simulatedAircraft);
|
ps_addedRemoteAircraft(simulatedAircraft);
|
||||||
}
|
}
|
||||||
m_initallyAddAircrafts = false;
|
m_initallyAddAircrafts = false;
|
||||||
}
|
}
|
||||||
@@ -653,6 +653,15 @@ namespace BlackCore
|
|||||||
m_simulatorPlugin.second->highlightAircraft(aircraftToHighlight, enableHighlight, displayTime);
|
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)
|
void CContextSimulator::requestWeatherGrid(const Weather::CWeatherGrid &weatherGrid, const CIdentifier &identifier)
|
||||||
{
|
{
|
||||||
if (m_debugEnabled) { CLogMessage(this, CLogCategory::contextSlot()).debug() << Q_FUNC_INFO << 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::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
||||||
virtual BlackMisc::CPixmap iconForModel(const QString &modelString) 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 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 requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override;
|
||||||
virtual void enableDebugMessages(bool driver, bool interpolator) override;
|
virtual void enableDebugMessages(bool driver, bool interpolator) override;
|
||||||
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const;
|
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||||
virtual bool isMatchingMessagesEnabled() const;
|
virtual bool isMatchingMessagesEnabled() const override;
|
||||||
virtual void enableMatchingMessages(bool enabled);
|
virtual void enableMatchingMessages(bool enabled) override;
|
||||||
//! @}
|
//! @}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
@@ -114,12 +115,30 @@ namespace BlackCore
|
|||||||
CContextSimulator *registerWithDBus(BlackMisc::CDBusServer *server);
|
CContextSimulator *registerWithDBus(BlackMisc::CDBusServer *server);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
|
//
|
||||||
|
// ------------ slots connected with network context and not to be used other by network contect ---------
|
||||||
|
//
|
||||||
|
//! \ingroup crosscontextslot
|
||||||
|
//! @{
|
||||||
|
|
||||||
//! Remote aircraft added
|
//! Remote aircraft added
|
||||||
void ps_addRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft);
|
void ps_addedRemoteAircraft(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft);
|
||||||
|
|
||||||
//! Remove remote aircraft
|
//! Remove remote aircraft
|
||||||
void ps_removedRemoteAircraft(const BlackMisc::Aviation::CCallsign &callsign);
|
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
|
//! Handle new connection status of simulator
|
||||||
void ps_onSimulatorStatusChanged(int status);
|
void ps_onSimulatorStatusChanged(int status);
|
||||||
|
|
||||||
@@ -135,17 +154,11 @@ namespace BlackCore
|
|||||||
//! Simulator has changed cockpit
|
//! Simulator has changed cockpit
|
||||||
void ps_cockpitChangedFromSimulator(const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft);
|
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
|
//! Failed adding remote aircraft
|
||||||
void ps_addingRemoteAircraftFailed(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft, const BlackMisc::CStatusMessage &message);
|
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)
|
//! 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);
|
void ps_updateSimulatorCockpitFromContext(const BlackMisc::Simulation::CSimulatedAircraft &ownAircraft, const BlackMisc::CIdentifier &originator);
|
||||||
|
|
||||||
//! Relay status message to simulator under consideration of settings
|
//! Relay status message to simulator under consideration of settings
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ namespace BlackCore
|
|||||||
"weatherGridReceived", this, SIGNAL(weatherGridReceived(BlackMisc::Weather::CWeatherGrid, BlackMisc::CIdentifier)));
|
"weatherGridReceived", this, SIGNAL(weatherGridReceived(BlackMisc::Weather::CWeatherGrid, BlackMisc::CIdentifier)));
|
||||||
Q_ASSERT(s);
|
Q_ASSERT(s);
|
||||||
s = connection.connect(serviceName, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName(),
|
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_ASSERT(s);
|
||||||
Q_UNUSED(s);
|
Q_UNUSED(s);
|
||||||
this->relayBaseClassSignals(serviceName, connection, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName());
|
this->relayBaseClassSignals(serviceName, connection, IContextSimulator::ObjectPath(), IContextSimulator::InterfaceName());
|
||||||
@@ -199,6 +199,11 @@ namespace BlackCore
|
|||||||
m_dBusInterface->callDBus(QLatin1Literal("highlightAircraft"), aircraftToHighlight, enableHighlight, displayTime);
|
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)
|
void CContextSimulatorProxy::requestWeatherGrid(const Weather::CWeatherGrid &weatherGrid, const CIdentifier &identifier)
|
||||||
{
|
{
|
||||||
m_dBusInterface->callDBus(QLatin1Literal("requestWeatherGrid"), weatherGrid, identifier);
|
m_dBusInterface->callDBus(QLatin1Literal("requestWeatherGrid"), weatherGrid, identifier);
|
||||||
|
|||||||
@@ -79,11 +79,12 @@ namespace BlackCore
|
|||||||
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
virtual BlackMisc::PhysicalQuantities::CTime getTimeSynchronizationOffset() const override;
|
||||||
virtual BlackMisc::CPixmap iconForModel(const QString &modelString) 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 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 requestWeatherGrid(const BlackMisc::Weather::CWeatherGrid &weatherGrid, const BlackMisc::CIdentifier &identifier) override;
|
||||||
virtual void enableDebugMessages(bool driver, bool interpolator) override;
|
virtual void enableDebugMessages(bool driver, bool interpolator) override;
|
||||||
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const;
|
virtual BlackMisc::CStatusMessageList getMatchingMessages(const BlackMisc::Aviation::CCallsign &callsign) const override;
|
||||||
virtual bool isMatchingMessagesEnabled() const;
|
virtual bool isMatchingMessagesEnabled() const override;
|
||||||
virtual void enableMatchingMessages(bool enabled);
|
virtual void enableMatchingMessages(bool enabled) override;
|
||||||
//! @}
|
//! @}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -170,7 +170,7 @@ namespace BlackCore
|
|||||||
// use readyForModelMatching instead of CAirspaceMonitor::addedAircraft, as it contains client information
|
// use readyForModelMatching instead of CAirspaceMonitor::addedAircraft, as it contains client information
|
||||||
// ready for model matching is sent delayed when all information are available
|
// ready for model matching is sent delayed when all information are available
|
||||||
c = connect(this->m_contextNetwork, &IContextNetwork::readyForModelMatching,
|
c = connect(this->m_contextNetwork, &IContextNetwork::readyForModelMatching,
|
||||||
this->getCContextSimulator(), &CContextSimulator::ps_addRemoteAircraft);
|
this->getCContextSimulator(), &CContextSimulator::ps_addedRemoteAircraft);
|
||||||
Q_ASSERT(c);
|
Q_ASSERT(c);
|
||||||
c = connect(this->m_contextNetwork, &IContextNetwork::removedAircraft,
|
c = connect(this->m_contextNetwork, &IContextNetwork::removedAircraft,
|
||||||
this->getCContextSimulator(), &CContextSimulator::ps_removedRemoteAircraft);
|
this->getCContextSimulator(), &CContextSimulator::ps_removedRemoteAircraft);
|
||||||
|
|||||||
@@ -305,13 +305,15 @@ namespace BlackGui
|
|||||||
if (!sGui->getIContextSimulator()->isSimulatorSimulating()) { return; }
|
if (!sGui->getIContextSimulator()->isSimulatorSimulating()) { return; }
|
||||||
const CCallsign callsign(this->validateRenderedCallsign());
|
const CCallsign callsign(this->validateRenderedCallsign());
|
||||||
if (callsign.isEmpty()) { return; }
|
if (callsign.isEmpty()) { return; }
|
||||||
const CSimulatedAircraft aircraftFromBackend = sGui->getIContextNetwork()->getAircraftInRangeForCallsign(callsign);
|
bool reset = sGui->getIContextSimulator()->resetToModelMatchingAircraft(callsign);
|
||||||
if (aircraftFromBackend.getCallsign() != callsign) { return; }
|
if (reset)
|
||||||
bool changed = sGui->getIContextNetwork()->updateAircraftModel(callsign, aircraftFromBackend.getModel(), identifier());
|
|
||||||
if (changed)
|
|
||||||
{
|
{
|
||||||
CLogMessage(this).info("Model reset for '%1'") << callsign.toQString();
|
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)
|
void CMappingComponent::ps_onModelPreviewChanged(int state)
|
||||||
|
|||||||
Reference in New Issue
Block a user