File indexing completed on 2024-05-12 05:35:38
0001 /* 0002 SPDX-FileCopyrightText: 2022 Méven Car <meven@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 #ifndef APPLICATION_MODEL_H 0008 #define APPLICATION_MODEL_H 0009 0010 #include <KService> 0011 #include <QAbstractItemModel> 0012 0013 #include <optional> 0014 0015 class ApplicationModel : public QAbstractItemModel 0016 { 0017 Q_OBJECT 0018 0019 public: 0020 explicit ApplicationModel(QObject *parent = nullptr); 0021 0022 enum Roles { 0023 Icon = Qt::UserRole + 1, 0024 StorageId = Qt::UserRole + 2, 0025 IsDefault = Qt::UserRole + 3, 0026 Selected = Qt::UserRole + 4, 0027 ExecLine = Qt::UserRole + 5, 0028 }; 0029 Q_ENUMS(Roles) 0030 0031 // Header: 0032 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const override; 0033 0034 // Basic functionality: 0035 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override; 0036 QModelIndex parent(const QModelIndex &index) const override; 0037 0038 int rowCount(const QModelIndex &parent = QModelIndex()) const override; 0039 int columnCount(const QModelIndex &parent = QModelIndex()) const override; 0040 0041 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; 0042 QVariant data(const int &row, int role = Qt::DisplayRole) const; 0043 0044 bool setData(const QModelIndex &index, const QVariant &value, int role) override; 0045 0046 QModelIndex findByStorageId(const QString &storageId) const; 0047 0048 QHash<int, QByteArray> roleNames() const override; 0049 0050 void load(const QString &mimeType, const QString &applicationCategory, const QString &defaultApplication, const KService::Ptr preferredService); 0051 Q_INVOKABLE int currentIndex() const; 0052 0053 std::optional<int> defaultIndex() const; 0054 0055 int addApplicationBeforeLast(const KServicePtr service); 0056 void addApplication(const QString &name, const QString &iconName, const QString &storageId, bool isSelected, const QString &execLine); 0057 0058 private: 0059 bool isValid(const QModelIndex &index) const; 0060 0061 QList<QVariantMap> m_applications; 0062 int m_defaultIndex = -1; 0063 }; 0064 0065 #endif // APPLICATION_MODEL_H