mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-04-23 13:55:36 +08:00
Improved ATIS update in ATC station component
* signal for ATIS received * reload ATC statiosns when ATIS changes
This commit is contained in:
committed by
Roland Winklmeier
parent
0b7706471c
commit
ae8d9abf0d
@@ -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
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user