File indexing completed on 2024-05-05 05:01:22
0001 // SPDX-FileCopyrightText: 2024 Tobias Fella <tobias.fella@kde.org> 0002 // SPDX-License-Identifier: LGPL-2.0-or-later 0003 0004 #pragma once 0005 0006 #include <QAbstractListModel> 0007 #include <QPointer> 0008 #include <QQmlEngine> 0009 #include <QString> 0010 0011 #include "neochatconnection.h" 0012 0013 class ItineraryModel : public QAbstractListModel 0014 { 0015 Q_OBJECT 0016 QML_ELEMENT 0017 0018 Q_PROPERTY(NeoChatConnection *connection READ connection WRITE setConnection NOTIFY connectionChanged) 0019 Q_PROPERTY(QString path READ path WRITE setPath NOTIFY pathChanged) 0020 0021 public: 0022 enum Roles { 0023 NameRole = Qt::DisplayRole, 0024 TypeRole, 0025 DepartureStationRole, 0026 ArrivalStationRole, 0027 DepartureTimeRole, 0028 ArrivalTimeRole, 0029 AddressRole, 0030 StartTimeRole, 0031 EndTimeRole, 0032 DeparturePlatformRole, 0033 ArrivalPlatformRole, 0034 CoachRole, 0035 SeatRole, 0036 }; 0037 Q_ENUM(Roles) 0038 explicit ItineraryModel(QObject *parent = nullptr); 0039 0040 void setConnection(NeoChatConnection *connection); 0041 NeoChatConnection *connection() const; 0042 0043 QVariant data(const QModelIndex &index, int role) const override; 0044 int rowCount(const QModelIndex &parent = {}) const override; 0045 0046 QHash<int, QByteArray> roleNames() const override; 0047 0048 QString path() const; 0049 void setPath(const QString &path); 0050 0051 Q_INVOKABLE void sendToItinerary(); 0052 0053 Q_SIGNALS: 0054 void connectionChanged(); 0055 void pathChanged(); 0056 0057 private: 0058 QPointer<NeoChatConnection> m_connection; 0059 QJsonArray m_data; 0060 QString m_path; 0061 void loadData(); 0062 };