KWin
Loading...
Searching...
No Matches
desktopsmodel.h
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2018 Eike Hein <hein@kde.org>
3 SPDX-FileCopyrightText: 2018 Marco Martin <mart@kde.org>
4
5 SPDX-License-Identifier: GPL-2.0-or-later
6*/
7
8#pragma once
9
10#include <QAbstractListModel>
11
13
14class QDBusArgument;
15class QDBusMessage;
16class QDBusServiceWatcher;
17
18namespace KWin
19{
20
44class DesktopsModel : public QAbstractListModel
45{
46 Q_OBJECT
47 Q_PROPERTY(bool ready READ ready NOTIFY readyChanged)
48 Q_PROPERTY(QString error READ error NOTIFY errorChanged)
49 Q_PROPERTY(bool userModified READ userModified NOTIFY userModifiedChanged)
51 Q_PROPERTY(int rows READ rows WRITE setRows NOTIFY rowsChanged)
52 Q_PROPERTY(int desktopCount READ desktopCount NOTIFY desktopCountChanged)
53
54public:
56 Id = Qt::UserRole + 1,
59 };
60 Q_ENUM(AdditionalRoles)
61
62 explicit DesktopsModel(QObject *parent = nullptr);
63 ~DesktopsModel() override;
64
65 QHash<int, QByteArray> roleNames() const override;
66
67 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
68 int rowCount(const QModelIndex &parent = {}) const override;
69
70 bool ready() const;
71 QString error() const;
72
73 bool userModified() const;
74 bool serverModified() const;
75
76 int rows() const;
77 void setRows(int rows);
78
79 int desktopCount() const;
80
81 QString createDesktopName() const;
82 Q_INVOKABLE void createDesktop();
83 Q_INVOKABLE void removeDesktop(const QString &id);
84 Q_INVOKABLE void setDesktopName(const QString &id, const QString &name);
85
86 Q_INVOKABLE void syncWithServer();
87
88 bool needsSave() const;
89 void load();
90 void defaults();
91 bool isDefaults() const;
92
93Q_SIGNALS:
94 void readyChanged() const;
95 void errorChanged() const;
96 void userModifiedChanged() const;
98 void rowsChanged() const;
100
101protected Q_SLOTS:
102 void reset();
103 void getAllAndConnect(const QDBusMessage &msg);
104 void desktopCreated(const QString &id, const KWin::DBusDesktopDataStruct &data);
105 void desktopRemoved(const QString &id);
106 void desktopDataChanged(const QString &id, const KWin::DBusDesktopDataStruct &data);
107 void desktopRowsChanged(uint rows);
108 void updateModifiedState(bool server = false);
109 void handleCallError();
110
111private:
112 QDBusServiceWatcher *m_serviceWatcher;
113 QString m_error;
114 bool m_userModified;
115 bool m_serverModified;
116 QStringList m_serverSideDesktops;
117 QHash<QString, QString> m_serverSideNames;
118 int m_serverSideRows;
119 QStringList m_desktops;
120 QHash<QString, QString> m_names;
121 int m_rows;
122 int m_pendingCalls = 0;
123};
124
125}
An item model around KWin's D-Bus API for virtual desktops.
void updateModifiedState(bool server=false)
void setRows(int rows)
void serverModifiedChanged() const
void desktopRowsChanged(uint rows)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
void rowsChanged() const
void desktopCreated(const QString &id, const KWin::DBusDesktopDataStruct &data)
QString createDesktopName() const
Q_INVOKABLE void syncWithServer()
int rowCount(const QModelIndex &parent={}) const override
DesktopsModel(QObject *parent=nullptr)
void readyChanged() const
void desktopDataChanged(const QString &id, const KWin::DBusDesktopDataStruct &data)
Q_INVOKABLE void createDesktop()
void userModifiedChanged() const
QHash< int, QByteArray > roleNames() const override
void desktopRemoved(const QString &id)
Q_INVOKABLE void removeDesktop(const QString &id)
void getAllAndConnect(const QDBusMessage &msg)
Q_INVOKABLE void setDesktopName(const QString &id, const QString &name)
void errorChanged() const