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 };