4 #include "core/afv/model/afvmapreader.h"
8 #include <QJsonDocument>
10 #include <QNetworkReply>
16 using namespace swift::misc::aviation;
18 namespace swift::core::afv::model
20 CAfvMapReader::CAfvMapReader(QObject *parent) : QObject(parent)
23 m_timer =
new QTimer(
this);
32 QEventLoop loop(
sApp);
39 const QByteArray jsonData = reply ? reply->readAll() : QByteArray {};
40 if (reply) { reply->deleteLater(); }
42 if (jsonData.isEmpty()) {
return; }
44 QJsonDocument jsonDoc = QJsonDocument::fromJson(jsonData);
45 if (jsonDoc.isArray())
47 const QJsonArray rootArray = jsonDoc.array();
48 QVector<CSampleAtcStation> transceivers;
51 for (
auto it = rootArray.begin(); it != rootArray.end(); ++it)
55 const QJsonObject stationObject = it->toObject();
57 if (stationObject.contains(
"callsign")) { callsign = stationObject.value(
"callsign").toString(); }
59 if (callsign.isEmpty() || !CCallsign::looksLikeAtcCallsign(callsign)) {
continue; }
61 if (stationObject.contains(
"transceivers"))
63 QJsonArray txArray = stationObject.value(
"transceivers").toArray();
64 for (
auto jt = txArray.begin(); jt != txArray.end(); ++jt)
67 transceivers.push_back({ callsign, transceiver });
73 if (transceivers.isEmpty()) {
return; }
75 std::remove_if(transceivers.begin(), transceivers.end(),
SWIFT_CORE_EXPORT swift::core::CApplication * sApp
Single instance of application object.
void aboutToShutdown()
About to shutdown.
const QNetworkAccessManager * getNetworkAccessManager() const
Access to access manager.
data::CGlobalSetup getGlobalSetup() const
Global setup.
bool isShuttingDown() const
Is application shutting down?
void updateFromMap()
Update ATC stations in model.
void updateAtcStations(const QVector< CSampleAtcStation > &atcStations)
Update the stations.
swift::misc::network::CUrl getAfvApiServerUrl() const
AFV voice server URL.
CUrl withAppendedPath(const QString &path) const
Append path.
static TransceiverDto fromJson(const QJsonObject &json)
From JSON.