File indexing completed on 2024-05-12 04:42:37
0001 /* 0002 SPDX-FileCopyrightText: 2023 Jonah BrĂ¼chert <jbb@kaidan.im> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include <QPointer> 0010 0011 #include "abstractbackend.h" 0012 0013 #include <map> 0014 0015 namespace KPublicTransport { 0016 0017 namespace LTGLink { 0018 struct Station { 0019 int id; 0020 QString name; 0021 QString searchableName; 0022 float latitude; 0023 float longitude; 0024 }; 0025 } 0026 0027 class LTGLinkBackend : public QObject, public AbstractBackend 0028 { 0029 Q_OBJECT 0030 0031 public: 0032 static inline constexpr const char* type() { return "ltglink"; } 0033 Capabilities capabilities() const override; 0034 bool needsLocationQuery(const Location &loc, AbstractBackend::QueryType type) const override; 0035 bool queryJourney(const JourneyRequest &req, JourneyReply *reply, QNetworkAccessManager *nam) const override; 0036 bool queryLocation(const LocationRequest &req, LocationReply *reply, QNetworkAccessManager *nam) const override; 0037 0038 private: 0039 AsyncTask<void> *downloadStationData(Reply *reply, QNetworkAccessManager *nam); 0040 0041 static Location stationToLocation(const LTGLink::Station &station); 0042 Location lookupStation(int ltglinkint) const; 0043 0044 std::map<int, LTGLink::Station> m_stations; 0045 QPointer<AsyncTask<void>> m_stationDataTask = nullptr; 0046 }; 0047 0048 }