File indexing completed on 2024-06-16 04:22:59

0001 /*
0002     SPDX-FileCopyrightText: 2020 Friedrich W. H. Kossebau <kossebau@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #ifndef SESSIONLISTMODEL_H
0008 #define SESSIONLISTMODEL_H
0009 
0010 // KDevelopSessionsWatch
0011 #include <kdevelopsessionsobserver.h>
0012 // Qt
0013 #include <QAbstractListModel>
0014 
0015 
0016 class SessionListModel : public QAbstractListModel
0017                        , public KDevelopSessionsObserver
0018 {
0019     Q_OBJECT
0020     Q_INTERFACES(KDevelopSessionsObserver)
0021 
0022 public:
0023     enum {
0024         SessionIdRole = Qt::UserRole,
0025     };
0026 
0027 public:
0028     explicit SessionListModel(QObject* parent = nullptr);
0029     ~SessionListModel() override;
0030 
0031 public: // QAbstractListModel API
0032     QVariant data(const QModelIndex& index, int role) const override;
0033     int rowCount(const QModelIndex& index) const override;
0034     QHash<int, QByteArray> roleNames() const override;
0035 
0036 public Q_SLOTS: // KDevelopSessionsObserver API
0037     void setSessionDataList(const QVector<KDevelopSessionData>& sessionDataList) override;
0038 
0039 public:
0040     Q_INVOKABLE void openSession(const QString& sessionId);
0041 
0042 private:
0043     // working copy of the list
0044     QVector<KDevelopSessionData> m_sessionDataList;
0045 };
0046 
0047 #endif