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