File indexing completed on 2024-05-12 04:42:55

0001 /*
0002     SPDX-FileCopyrightText: 2022 Volker Krause <vkrause@kde.org>
0003     SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005 
0006 #ifndef KPUBLICTRANSPORT_ABSTRACTONBOARDBACKEND_H
0007 #define KPUBLICTRANSPORT_ABSTRACTONBOARDBACKEND_H
0008 
0009 #include <QObject>
0010 
0011 class QNetworkAccessManager;
0012 
0013 namespace KPublicTransport {
0014 class Journey;
0015 class PositionData;
0016 
0017 /** Base class for backends interacting with the onboard API endpoints. */
0018 class AbstractOnboardBackend : public QObject
0019 {
0020     Q_OBJECT
0021 public:
0022     ~AbstractOnboardBackend();
0023 
0024     /** Whether the backend supports querying position information. */
0025     virtual bool supportsPosition() const = 0;
0026     /** Whether the backend supports querying journey information. */
0027     virtual bool supportsJourney() const = 0;
0028 
0029     /** Get the current position information. */
0030     virtual void requestPosition(QNetworkAccessManager *nam) = 0;
0031     /** Get the current journey information. */
0032     virtual void requestJourney(QNetworkAccessManager *nam) = 0;
0033 
0034 Q_SIGNALS:
0035     void positionReceived(const KPublicTransport::PositionData &pos);
0036     void journeyReceived(const KPublicTransport::Journey &journey);
0037 
0038 protected:
0039     explicit AbstractOnboardBackend(QObject *parent);
0040 };
0041 
0042 }
0043 
0044 #endif // KPUBLICTRANSPORT_ABSTRACTONBOARDBACKEND_H