File indexing completed on 2024-04-21 05:36:33

0001 /*
0002  * SPDX-FileCopyrightText: 2013 Abdurrahman AVCI <abdurrahmanavci@gmail.com>
0003  * SPDX-License-Identifier: GPL-2.0-or-later
0004  */
0005 #ifndef SDDM_SESSIONMODEL_H
0006 #define SDDM_SESSIONMODEL_H
0007 
0008 #include <QAbstractListModel>
0009 #include <QHash>
0010 
0011 class SessionModelPrivate;
0012 
0013 class SessionModel : public QAbstractListModel
0014 {
0015     Q_OBJECT
0016     Q_DISABLE_COPY(SessionModel)
0017 
0018     enum SessionType {
0019         SessionTypeX,
0020         SessionTypeWayland,
0021     };
0022 
0023 public:
0024     enum SessionRole {
0025         NameRole = Qt::DisplayRole,
0026         FileRole = Qt::UserRole,
0027         ExecRole,
0028         CommentRole,
0029     };
0030 
0031     explicit SessionModel(QObject *parent = nullptr);
0032     ~SessionModel() Q_DECL_OVERRIDE;
0033 
0034     void loadDir(const QString &path, SessionType type);
0035 
0036     QHash<int, QByteArray> roleNames() const override;
0037 
0038     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0039     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0040 
0041     int indexOf(const QString &sessionId) const;
0042 
0043 private:
0044     SessionModelPrivate *d{nullptr};
0045 };
0046 
0047 #endif // SDDM_SESSIONMODEL_H