From a6fd2bdeb22a48080cfa5d28e374a284e8679b78 Mon Sep 17 00:00:00 2001 From: Mathew Sutcliffe Date: Fri, 22 Aug 2014 21:05:35 +0100 Subject: [PATCH] refs #283 CAirspaceMonitor: added signals to notify when an aircraft is added or removed --- src/blackcore/airspace_monitor.cpp | 12 +++++++++++- src/blackcore/airspace_monitor.h | 8 +++++++- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/blackcore/airspace_monitor.cpp b/src/blackcore/airspace_monitor.cpp index 172f4cbef..fbfdcfe83 100644 --- a/src/blackcore/airspace_monitor.cpp +++ b/src/blackcore/airspace_monitor.cpp @@ -484,6 +484,8 @@ namespace BlackCore this->m_network->sendServerQuery(callsign); this->sendFsipirCustomPacket(callsign); // own aircraft model } + + emit this->addedAircraft(callsign, situation); } else { @@ -495,18 +497,26 @@ namespace BlackCore vm.addValue(CAircraft::IndexSituation, situation); vm.addValue(CAircraft::IndexDistance, distance); this->m_aircraftsInRange.applyIf(BlackMisc::Predicates::MemberEqual(&CAircraft::getCallsign, callsign), vm); + + emit this->changedAircraftSituation(callsign, situation); } emit this->changedAircraftsInRange(); - emit changedAircraftSituation(callsign, situation); } void CAirspaceMonitor::ps_pilotDisconnected(const CCallsign &callsign) { Q_ASSERT(BlackCore::isCurrentThreadCreatingThread(this)); + bool contains = this->m_aircraftsInRange.contains(&CAircraft::getCallsign, callsign); + this->m_aircraftsInRange.removeIf(&CAircraft::getCallsign, callsign); this->m_otherClients.removeIf(&CClient::getCallsign, callsign); + + if (contains) + { + emit this->removedAircraft(callsign); + } } void CAirspaceMonitor::ps_frequencyReceived(const CCallsign &callsign, const CFrequency &frequency) diff --git a/src/blackcore/airspace_monitor.h b/src/blackcore/airspace_monitor.h index 2a83419c0..b6c6857bd 100644 --- a/src/blackcore/airspace_monitor.h +++ b/src/blackcore/airspace_monitor.h @@ -85,8 +85,14 @@ namespace BlackCore //! Aircrafts were changed void changedAircraftsInRange(); + //! A new aircraft appeared + void addedAircraft(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &initialSituation); + //! An aircraft's situation was changed - void changedAircraftSituation(const BlackMisc::Aviation::CCallsign, const BlackMisc::Aviation::CAircraftSituation &situation); + void changedAircraftSituation(const BlackMisc::Aviation::CCallsign &callsign, const BlackMisc::Aviation::CAircraftSituation &situation); + + //! An aircraft disappeared + void removedAircraft(const BlackMisc::Aviation::CCallsign &callsign); //! Sent a status message void statusMessage(const BlackMisc::CStatusMessage &msg);