File indexing completed on 2024-05-12 04:42:52
0001 /* 0002 SPDX-FileCopyrightText: 2019 Volker Krause <vkrause@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #ifndef KPUBLICTRANSPORT_VEHICLELAYOUTQUERYMODEL_H 0008 #define KPUBLICTRANSPORT_VEHICLELAYOUTQUERYMODEL_H 0009 0010 #include "kpublictransport_export.h" 0011 #include "abstractquerymodel.h" 0012 0013 #include <KPublicTransport/Platform> 0014 #include <KPublicTransport/Stopover> 0015 #include <KPublicTransport/Vehicle> 0016 #include <KPublicTransport/VehicleLayoutRequest> 0017 0018 namespace KPublicTransport { 0019 0020 class VehicleLayoutQueryModelPrivate; 0021 0022 /** Model for retrieving vehicle and platform layout query results. */ 0023 class KPUBLICTRANSPORT_EXPORT VehicleLayoutQueryModel : public AbstractQueryModel 0024 { 0025 Q_OBJECT 0026 Q_PROPERTY(KPublicTransport::VehicleLayoutRequest request READ request WRITE setRequest NOTIFY requestChanged) 0027 0028 /** The vehicle for which this model shows its sections. */ 0029 Q_PROPERTY(KPublicTransport::Vehicle vehicle READ vehicle NOTIFY contentChanged) 0030 /** The platform this vehicle is departing from. */ 0031 Q_PROPERTY(KPublicTransport::Platform platform READ platform NOTIFY contentChanged) 0032 /** The departure this vehicle layout belongs to. */ 0033 Q_PROPERTY(KPublicTransport::Stopover stopover READ stopover NOTIFY contentChanged) 0034 0035 public: 0036 explicit VehicleLayoutQueryModel(QObject *parent = nullptr); 0037 ~VehicleLayoutQueryModel() override; 0038 0039 VehicleLayoutRequest request() const; 0040 void setRequest(const VehicleLayoutRequest &req); 0041 0042 Vehicle vehicle() const; 0043 Platform platform() const; 0044 Stopover stopover() const; 0045 0046 enum Roles { 0047 VehicleSectionRole = Qt::UserRole 0048 }; 0049 Q_ENUM(Roles) 0050 0051 int rowCount(const QModelIndex &parent = {}) const override; 0052 QVariant data(const QModelIndex &index, int role) const override; 0053 QHash<int, QByteArray> roleNames() const override; 0054 Q_SIGNALS: 0055 void requestChanged(); 0056 void contentChanged(); 0057 0058 private: 0059 friend class VehicleLayoutQueryModelPrivate; 0060 Q_DECLARE_PRIVATE(VehicleLayoutQueryModel) 0061 }; 0062 0063 } 0064 0065 #endif // KPUBLICTRANSPORT_VEHICLELAYOUTQUERYMODEL_H