Improved ATIS update in ATC station component

* signal for ATIS received
* reload ATC statiosns when ATIS changes
This commit is contained in:
Klaus Basan
2018-04-28 19:02:46 +02:00
committed by Roland Winklmeier
parent 0b7706471c
commit ae8d9abf0d
5 changed files with 30 additions and 13 deletions

View File

@@ -143,6 +143,9 @@ namespace BlackCore
//! Read for model matching //! Read for model matching
void readyForModelMatching(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft); void readyForModelMatching(const BlackMisc::Simulation::CSimulatedAircraft &remoteAircraft);
//! An ATIS has been received
void atisReceived(const BlackMisc::Aviation::CCallsign &callsign);
private: private:
//! Used to temporary store FsInn data //! Used to temporary store FsInn data
struct FsInnPacket struct FsInnPacket

View File

@@ -88,6 +88,7 @@ namespace BlackCore
connect(m_airspace, &CAirspaceMonitor::removedAircraft, this, &IContextNetwork::removedAircraft); // DBus connect(m_airspace, &CAirspaceMonitor::removedAircraft, this, &IContextNetwork::removedAircraft); // DBus
connect(m_airspace, &CAirspaceMonitor::readyForModelMatching, this, &CContextNetwork::readyForModelMatching); connect(m_airspace, &CAirspaceMonitor::readyForModelMatching, this, &CContextNetwork::readyForModelMatching);
connect(m_airspace, &CAirspaceMonitor::addedAircraft, this, &CContextNetwork::addedAircraft); connect(m_airspace, &CAirspaceMonitor::addedAircraft, this, &CContextNetwork::addedAircraft);
connect(m_airspace, &CAirspaceMonitor::atisReceived, this, &CContextNetwork::onAtisReceived);
} }
CContextNetwork *CContextNetwork::registerWithDBus(BlackMisc::CDBusServer *server) CContextNetwork *CContextNetwork::registerWithDBus(BlackMisc::CDBusServer *server)
@@ -489,6 +490,12 @@ namespace BlackCore
CLogMessage(this).info("%1 METARs updated") << metars.size(); CLogMessage(this).info("%1 METARs updated") << metars.size();
} }
void CContextNetwork::onAtisReceived(const CCallsign &callsign)
{
Q_UNUSED(callsign);
m_dsAtcStationsOnlineChanged.inputSignal(); // the ATIS data are stored in the station object
}
void CContextNetwork::checkForSupervisiorTextMessage(const CTextMessageList &messages) void CContextNetwork::checkForSupervisiorTextMessage(const CTextMessageList &messages)
{ {
if (messages.containsPrivateMessages()) if (messages.containsPrivateMessages())

View File

@@ -231,9 +231,9 @@ namespace BlackCore
QTimer *m_networkDataUpdateTimer = nullptr; //!< general updates such as ATIS, frequencies, see requestDataUpdates() QTimer *m_networkDataUpdateTimer = nullptr; //!< general updates such as ATIS, frequencies, see requestDataUpdates()
// Digest signals, only sending after some time // Digest signals, only sending after some time
BlackMisc::CDigestSignal m_dsAtcStationsBookedChanged { this, &IContextNetwork::changedAtcStationsBooked, &IContextNetwork::changedAtcStationsBookedDigest, 750, 2 }; BlackMisc::CDigestSignal m_dsAtcStationsBookedChanged { this, &IContextNetwork::changedAtcStationsBooked, &IContextNetwork::changedAtcStationsBookedDigest, 1000, 2 };
BlackMisc::CDigestSignal m_dsAtcStationsOnlineChanged { this, &IContextNetwork::changedAtcStationsOnline, &IContextNetwork::changedAtcStationsOnlineDigest, 750, 4 }; BlackMisc::CDigestSignal m_dsAtcStationsOnlineChanged { this, &IContextNetwork::changedAtcStationsOnline, &IContextNetwork::changedAtcStationsOnlineDigest, 1000, 4 };
BlackMisc::CDigestSignal m_dsAircraftsInRangeChanged { this, &IContextNetwork::changedAircraftInRange, &IContextNetwork::changedAircraftInRangeDigest, 750, 4 }; BlackMisc::CDigestSignal m_dsAircraftsInRangeChanged { this, &IContextNetwork::changedAircraftInRange, &IContextNetwork::changedAircraftInRangeDigest, 1000, 4 };
//! Own aircraft from \sa CContextOwnAircraft //! Own aircraft from \sa CContextOwnAircraft
const BlackMisc::Simulation::CSimulatedAircraft ownAircraft() const; const BlackMisc::Simulation::CSimulatedAircraft ownAircraft() const;
@@ -241,6 +241,9 @@ namespace BlackCore
//! Update METAR collection //! Update METAR collection
void updateMetars(const BlackMisc::Weather::CMetarList &metars); void updateMetars(const BlackMisc::Weather::CMetarList &metars);
//! An ATIS has been received
void onAtisReceived(const BlackMisc::Aviation::CCallsign &callsign);
//! Check if a supervisor message was received //! Check if a supervisor message was received
void checkForSupervisiorTextMessage(const BlackMisc::Network::CTextMessageList &messages); void checkForSupervisiorTextMessage(const BlackMisc::Network::CTextMessageList &messages);

View File

@@ -38,8 +38,8 @@
#include <QTimer> #include <QTimer>
#include <QTreeView> #include <QTreeView>
#include <QCompleter> #include <QCompleter>
#include <QPointer>
using namespace BlackGui;
using namespace BlackGui::Models; using namespace BlackGui::Models;
using namespace BlackGui::Views; using namespace BlackGui::Views;
using namespace BlackGui::Settings; using namespace BlackGui::Settings;
@@ -292,7 +292,12 @@ namespace BlackGui
if (this->isParentDockWidgetFloating()) { return; } if (this->isParentDockWidgetFloating()) { return; }
// here I know I am the selected widget, update, but keep GUI responsive (-> timer) // here I know I am the selected widget, update, but keep GUI responsive (-> timer)
QTimer::singleShot(1000, this, &CAtcStationComponent::update); const QPointer<CAtcStationComponent> myself(this);
QTimer::singleShot(1000, this, [ = ]
{
if (myself.isNull()) { return; }
this->update();
});
Q_UNUSED(index); Q_UNUSED(index);
} }

View File

@@ -61,6 +61,12 @@ namespace BlackGui
//! Number of online stations //! Number of online stations
int countOnlineStations() const; int countOnlineStations() const;
//! Update stations
void update();
//! Get METAR for given ICAO airport code
void getMetar(const QString &airportIcaoCode);
//! \copydoc CEnableForDockWidgetInfoArea::setParentDockWidgetInfoArea //! \copydoc CEnableForDockWidgetInfoArea::setParentDockWidgetInfoArea
virtual bool setParentDockWidgetInfoArea(BlackGui::CDockWidgetInfoArea *parentDockableWidget) override; virtual bool setParentDockWidgetInfoArea(BlackGui::CDockWidgetInfoArea *parentDockableWidget) override;
@@ -68,17 +74,10 @@ namespace BlackGui
//! Request a text message //! Request a text message
void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign); void requestTextMessageWidget(const BlackMisc::Aviation::CCallsign &callsign);
public slots: private:
//! Update stations
void update();
//! Get METAR for given ICAO airport code
void getMetar(const QString &airportIcaoCode);
//! \copydoc Models::CAtcStationListModel::changedAtcStationConnectionStatus //! \copydoc Models::CAtcStationListModel::changedAtcStationConnectionStatus
void changedAtcStationOnlineConnectionStatus(const BlackMisc::Aviation::CAtcStation &station, bool added); void changedAtcStationOnlineConnectionStatus(const BlackMisc::Aviation::CAtcStation &station, bool added);
private:
//! Get all METARs //! Get all METARs
void getMetarAsEntered(); void getMetarAsEntered();