Changeset View
Changeset View
Standalone View
Standalone View
applets/systemtray/systemtraymodel.h
Show All 15 Lines | |||||
16 | * Free Software Foundation, Inc., * | 16 | * Free Software Foundation, Inc., * | ||
17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * | 17 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . * | ||
18 | ***************************************************************************/ | 18 | ***************************************************************************/ | ||
19 | 19 | | |||
20 | #ifndef SYSTEMTRAYMODEL_H | 20 | #ifndef SYSTEMTRAYMODEL_H | ||
21 | #define SYSTEMTRAYMODEL_H | 21 | #define SYSTEMTRAYMODEL_H | ||
22 | 22 | | |||
23 | #include <QStandardItemModel> | 23 | #include <QStandardItemModel> | ||
24 | #include <QSortFilterProxyModel> | ||||
24 | 25 | | |||
25 | #include <KItemModels/KConcatenateRowsProxyModel> | 26 | #include <KItemModels/KConcatenateRowsProxyModel> | ||
26 | #include <Plasma/DataEngineConsumer> | 27 | #include <Plasma/DataEngineConsumer> | ||
27 | #include <Plasma/DataEngine> | 28 | #include <Plasma/DataEngine> | ||
28 | 29 | | |||
29 | namespace Plasma { | 30 | namespace Plasma { | ||
30 | class Applet; | 31 | class Applet; | ||
31 | } | 32 | } | ||
32 | 33 | | |||
34 | class BaseModel: public QStandardItemModel | ||||
35 | { | ||||
36 | Q_OBJECT | ||||
37 | public: | ||||
33 | enum class BaseRole { | 38 | enum class BaseRole { | ||
34 | ItemType = Qt::UserRole + 1, | 39 | ItemType = Qt::UserRole + 1, | ||
35 | ItemId, | 40 | ItemId, | ||
36 | CanRender, | 41 | CanRender, | ||
37 | Category, | 42 | Category, | ||
43 | Status, | ||||
44 | EffectiveStatus, | ||||
38 | LastBaseRole | 45 | LastBaseRole | ||
39 | }; | 46 | }; | ||
40 | 47 | | |||
41 | class PlasmoidModel: public QStandardItemModel | 48 | explicit BaseModel(QObject *parent = nullptr); | ||
49 | | ||||
50 | QHash<int, QByteArray> roleNames() const override; | ||||
51 | | ||||
52 | public slots: | ||||
53 | void onConfigurationChanged(const KConfigGroup &config); | ||||
54 | | ||||
55 | private slots: | ||||
56 | void onDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight, const QVector<int> &roles); | ||||
57 | | ||||
58 | private: | ||||
59 | void updateEffectiveStatus(QStandardItem *dataItem); | ||||
60 | Plasma::Types::ItemStatus calculateEffectiveStatus(QStandardItem *dataItem); | ||||
61 | Plasma::Types::ItemStatus readStatus(QStandardItem *dataItem) const; | ||||
62 | | ||||
63 | bool m_showAllItems; | ||||
64 | QStringList m_shownItems; | ||||
65 | QStringList m_hiddenItems; | ||||
66 | }; | ||||
67 | | ||||
68 | class PlasmoidModel: public BaseModel | ||||
42 | { | 69 | { | ||
43 | Q_OBJECT | 70 | Q_OBJECT | ||
44 | public: | 71 | public: | ||
45 | enum class Role { | 72 | enum class Role { | ||
46 | Applet = static_cast<int>(BaseRole::LastBaseRole) + 1, | 73 | Applet = static_cast<int>(BaseModel::BaseRole::LastBaseRole) + 1, | ||
47 | HasApplet | 74 | HasApplet | ||
48 | }; | 75 | }; | ||
49 | 76 | | |||
50 | explicit PlasmoidModel(QObject *parent = nullptr); | 77 | explicit PlasmoidModel(QObject *parent = nullptr); | ||
51 | 78 | | |||
52 | QHash<int, QByteArray> roleNames() const override; | 79 | QHash<int, QByteArray> roleNames() const override; | ||
53 | 80 | | |||
54 | public slots: | 81 | public slots: | ||
55 | void addApplet(Plasma::Applet *applet); | 82 | void addApplet(Plasma::Applet *applet); | ||
56 | void removeApplet(Plasma::Applet *applet); | 83 | void removeApplet(Plasma::Applet *applet); | ||
57 | }; | 84 | }; | ||
58 | 85 | | |||
59 | class StatusNotifierModel : public QStandardItemModel, public Plasma::DataEngineConsumer { | 86 | class StatusNotifierModel : public BaseModel, public Plasma::DataEngineConsumer { | ||
60 | Q_OBJECT | 87 | Q_OBJECT | ||
61 | public: | 88 | public: | ||
62 | enum class Role { | 89 | enum class Role { | ||
63 | DataEngineSource = static_cast<int>(BaseRole::LastBaseRole) + 100, | 90 | DataEngineSource = static_cast<int>(BaseModel::BaseRole::LastBaseRole) + 100, | ||
64 | AttentionIcon, | 91 | AttentionIcon, | ||
65 | AttentionIconName, | 92 | AttentionIconName, | ||
66 | AttentionMovieName, | 93 | AttentionMovieName, | ||
67 | Category, | 94 | Category, | ||
68 | Icon, | 95 | Icon, | ||
69 | IconName, | 96 | IconName, | ||
70 | IconThemePath, | 97 | IconThemePath, | ||
71 | IconsChanged, | 98 | IconsChanged, | ||
▲ Show 20 Lines • Show All 48 Lines • Show Last 20 Lines |