Warning, file /plasma/plasma-mobile/containments/homescreens/folio/applicationlistmodel.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001 // SPDX-FileCopyrightText: 2014 Antonis Tsiapaliokas <antonis.tsiapaliokas@kde.org> 0002 // SPDX-FileCopyrightText: 2022 Devin Lin <devin@kde.org> 0003 // SPDX-License-Identifier: GPL-2.0-or-later 0004 0005 #pragma once 0006 0007 #include <QAbstractListModel> 0008 #include <QList> 0009 #include <QObject> 0010 #include <QQuickItem> 0011 #include <QSet> 0012 0013 #include <KWayland/Client/connection_thread.h> 0014 #include <KWayland/Client/plasmawindowmanagement.h> 0015 #include <KWayland/Client/registry.h> 0016 #include <KWayland/Client/surface.h> 0017 0018 /** 0019 * @short The base application list, used directly by the app drawer. 0020 * 0021 * Items that are displayed on the desktop/pinned are done by DesktopModel, which is a subclass. 0022 */ 0023 class ApplicationListModel : public QAbstractListModel 0024 { 0025 Q_OBJECT 0026 0027 public: 0028 // this enum is solely used by DesktopModel 0029 enum LauncherLocation { None = 0, Favorites, Desktop }; 0030 Q_ENUM(LauncherLocation) 0031 0032 struct ApplicationData { 0033 QString uniqueId; 0034 QString name; 0035 QString icon; 0036 QString storageId; 0037 QString entryPath; 0038 bool startupNotify = true; 0039 KWayland::Client::PlasmaWindow *window = nullptr; 0040 LauncherLocation location = LauncherLocation::None; // only for DesktopModel 0041 }; 0042 0043 enum Roles { 0044 ApplicationNameRole = Qt::UserRole + 1, 0045 ApplicationIconRole, 0046 ApplicationStorageIdRole, 0047 ApplicationEntryPathRole, 0048 ApplicationStartupNotifyRole, 0049 ApplicationRunningRole, 0050 ApplicationUniqueIdRole, 0051 ApplicationLocationRole // only valid for DesktopModel 0052 }; 0053 0054 ApplicationListModel(QObject *parent = nullptr); 0055 ~ApplicationListModel() override; 0056 0057 int rowCount(const QModelIndex &parent = QModelIndex()) const Q_DECL_OVERRIDE; 0058 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; 0059 QHash<int, QByteArray> roleNames() const Q_DECL_OVERRIDE; 0060 0061 Q_INVOKABLE virtual void load(); 0062 0063 Q_INVOKABLE void setMinimizedDelegate(int row, QQuickItem *delegate); 0064 Q_INVOKABLE void unsetMinimizedDelegate(int row, QQuickItem *delegate); 0065 0066 public Q_SLOTS: 0067 void sycocaDbChanged(); 0068 void windowCreated(KWayland::Client::PlasmaWindow *window); 0069 0070 Q_SIGNALS: 0071 void launchError(const QString &msg); 0072 0073 protected: 0074 QList<ApplicationData> m_applicationList; 0075 0076 KWayland::Client::PlasmaWindowManagement *m_windowManagement = nullptr; 0077 };