#pragma once #include "DesktopEntry.hpp" #include #include #include class ApplicationModel : public QAbstractListModel { Q_OBJECT QML_ELEMENT QML_UNCREATABLE("Obtained from ApplicationService") Q_PROPERTY(int count READ count NOTIFY countChanged) public: enum Roles { DesktopIdRole = Qt::UserRole + 1, NameRole, GenericNameRole, CommentRole, IconNameRole, CategoriesRole, TerminalRole }; Q_ENUM(Roles) explicit ApplicationModel(QObject *parent = nullptr); int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override; QHash roleNames() const override; int count() const; void setEntries(QVector entries); const DesktopEntry *entryAt(int row) const; const DesktopEntry *entryById(const QString &desktopId) const; const DesktopEntry *entryMatchingWindow(const QString &appId, const QString &windowClass) const; signals: void countChanged(); private: QVector m_entries; };