mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-30 05:51:23 +08:00
Ref T171, Ref T136, not all functions need to bound in remote aircraft provider
This commit is contained in:
@@ -206,24 +206,25 @@ namespace BlackCore
|
|||||||
|
|
||||||
QList<QMetaObject::Connection> CAirspaceMonitor::connectRemoteAircraftProviderSignals(
|
QList<QMetaObject::Connection> CAirspaceMonitor::connectRemoteAircraftProviderSignals(
|
||||||
QObject *receiver,
|
QObject *receiver,
|
||||||
std::function<void(const CAircraftSituation &)> situationSlot,
|
std::function<void(const CAircraftSituation &)> situationFunction,
|
||||||
std::function<void(const BlackMisc::Aviation::CCallsign &, const CAircraftParts &)> partsSlot,
|
std::function<void(const BlackMisc::Aviation::CCallsign &, const CAircraftParts &)> partsFunction,
|
||||||
std::function<void(const CCallsign &)> removedAircraftSlot,
|
std::function<void(const CCallsign &)> removedAircraftFunction,
|
||||||
std::function<void(const CAirspaceAircraftSnapshot &)> aircraftSnapshotSlot
|
std::function<void(const CAirspaceAircraftSnapshot &)> aircraftSnapshotFunction
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Q_ASSERT_X(receiver, Q_FUNC_INFO, "Missing receiver");
|
Q_ASSERT_X(receiver, Q_FUNC_INFO, "Missing receiver");
|
||||||
|
|
||||||
// bind does not allow to define connection type, so we use receiver as workaround
|
// bind does not allow to define connection type, so we use receiver as workaround
|
||||||
const QMetaObject::Connection c1 = connect(this, &CAirspaceMonitor::addedAircraftSituation, receiver, situationSlot);
|
const QMetaObject::Connection uc; // unconnected
|
||||||
|
const QMetaObject::Connection c1 = situationFunction ? connect(this, &CAirspaceMonitor::addedAircraftSituation, receiver, situationFunction) : uc;
|
||||||
Q_ASSERT_X(c1, Q_FUNC_INFO, "connect failed");
|
Q_ASSERT_X(c1, Q_FUNC_INFO, "connect failed");
|
||||||
const QMetaObject::Connection c2 = connect(this, &CAirspaceMonitor::addedAircraftParts, receiver, partsSlot);
|
const QMetaObject::Connection c2 = partsFunction ? connect(this, &CAirspaceMonitor::addedAircraftParts, receiver, partsFunction) : uc;
|
||||||
Q_ASSERT_X(c2, Q_FUNC_INFO, "connect failed");
|
Q_ASSERT_X(c2, Q_FUNC_INFO, "connect failed");
|
||||||
const QMetaObject::Connection c3 = connect(this, &CAirspaceMonitor::removedAircraft, receiver, removedAircraftSlot);
|
const QMetaObject::Connection c3 = removedAircraftFunction ? connect(this, &CAirspaceMonitor::removedAircraft, receiver, removedAircraftFunction) : uc;
|
||||||
Q_ASSERT_X(c3, Q_FUNC_INFO, "connect failed");
|
Q_ASSERT_X(c3, Q_FUNC_INFO, "connect failed");
|
||||||
// trick is to use the Queued signal here
|
// trick is to use the Qt::QueuedConnection signal here
|
||||||
// analyzer (own thread) -> airspaceAircraftSnapshot -> AirspaceMonitor -> airspaceAircraftSnapshot queued in main thread
|
// analyzer (own thread) -> airspaceAircraftSnapshot -> AirspaceMonitor -> airspaceAircraftSnapshot queued in main thread
|
||||||
const QMetaObject::Connection c4 = connect(m_analyzer, &CAirspaceAnalyzer::airspaceAircraftSnapshot, receiver, aircraftSnapshotSlot, Qt::QueuedConnection);
|
const QMetaObject::Connection c4 = aircraftSnapshotFunction ? connect(m_analyzer, &CAirspaceAnalyzer::airspaceAircraftSnapshot, receiver, aircraftSnapshotFunction, Qt::QueuedConnection) : uc;
|
||||||
Q_ASSERT_X(c4, Q_FUNC_INFO, "connect failed");
|
Q_ASSERT_X(c4, Q_FUNC_INFO, "connect failed");
|
||||||
return QList<QMetaObject::Connection>({ c1, c2, c3, c4});
|
return QList<QMetaObject::Connection>({ c1, c2, c3, c4});
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -174,10 +174,10 @@ namespace BlackCore
|
|||||||
//! \copydoc BlackMisc::Simulation::IRemoteAircraftProvider::connectRemoteAircraftProviderSignals
|
//! \copydoc BlackMisc::Simulation::IRemoteAircraftProvider::connectRemoteAircraftProviderSignals
|
||||||
virtual QList<QMetaObject::Connection> connectRemoteAircraftProviderSignals(
|
virtual QList<QMetaObject::Connection> connectRemoteAircraftProviderSignals(
|
||||||
QObject *receiver,
|
QObject *receiver,
|
||||||
std::function<void(const BlackMisc::Aviation::CAircraftSituation &)> addedSituationSlot,
|
std::function<void(const BlackMisc::Aviation::CAircraftSituation &)> situationFunction,
|
||||||
std::function<void(const BlackMisc::Aviation::CCallsign &, const BlackMisc::Aviation::CAircraftParts &)> addedPartsSlot,
|
std::function<void(const BlackMisc::Aviation::CCallsign &, const BlackMisc::Aviation::CAircraftParts &)> partsFunction,
|
||||||
std::function<void(const BlackMisc::Aviation::CCallsign &)> removedAircraftSlot,
|
std::function<void(const BlackMisc::Aviation::CCallsign &)> removedAircraftFunction,
|
||||||
std::function<void(const BlackMisc::Simulation::CAirspaceAircraftSnapshot &)> aircraftSnapshotSlot
|
std::function<void(const BlackMisc::Simulation::CAirspaceAircraftSnapshot &)> aircraftSnapshotFunction
|
||||||
) override;
|
) override;
|
||||||
|
|
||||||
//! Analyzer
|
//! Analyzer
|
||||||
|
|||||||
Reference in New Issue
Block a user