Changeset View
Changeset View
Standalone View
Standalone View
kcmkwin/kwindesktop/virtualdesktops.cpp
Show All 26 Lines | |||||
27 | #include <KLocalizedString> | 27 | #include <KLocalizedString> | ||
28 | 28 | | |||
29 | K_PLUGIN_FACTORY_WITH_JSON(VirtualDesktopsFactory, "kcm_kwin_virtualdesktops.json", registerPlugin<KWin::VirtualDesktops>();) | 29 | K_PLUGIN_FACTORY_WITH_JSON(VirtualDesktopsFactory, "kcm_kwin_virtualdesktops.json", registerPlugin<KWin::VirtualDesktops>();) | ||
30 | 30 | | |||
31 | namespace KWin | 31 | namespace KWin | ||
32 | { | 32 | { | ||
33 | 33 | | |||
34 | VirtualDesktops::VirtualDesktops(QObject *parent, const QVariantList &args) | 34 | VirtualDesktops::VirtualDesktops(QObject *parent, const QVariantList &args) | ||
35 | : KQuickAddons::ConfigModule(parent, args) | 35 | : KQuickAddons::ManagedConfigModule(parent, args) | ||
36 | , m_settings(new VirtualDesktopsSettings(this)) | 36 | , m_settings(new VirtualDesktopsSettings(this)) | ||
37 | , m_desktopsModel(new KWin::DesktopsModel(this)) | 37 | , m_desktopsModel(new KWin::DesktopsModel(this)) | ||
38 | , m_navWraps(true) | | |||
39 | , m_osdEnabled(false) | | |||
40 | , m_osdDuration(1000) | | |||
41 | , m_osdTextOnly(false) | | |||
42 | , m_animationsModel(new AnimationsModel(this)) | 38 | , m_animationsModel(new AnimationsModel(this)) | ||
43 | { | 39 | { | ||
44 | KAboutData *about = new KAboutData(QStringLiteral("kcm_kwin_virtualdesktops"), | 40 | KAboutData *about = new KAboutData(QStringLiteral("kcm_kwin_virtualdesktops"), | ||
45 | i18n("Virtual Desktops"), | 41 | i18n("Virtual Desktops"), | ||
46 | QStringLiteral("2.0"), QString(), KAboutLicense::GPL); | 42 | QStringLiteral("2.0"), QString(), KAboutLicense::GPL); | ||
47 | setAboutData(about); | 43 | setAboutData(about); | ||
48 | 44 | | |||
45 | qmlRegisterType<VirtualDesktopsSettings>(); | ||||
46 | | ||||
49 | setButtons(Apply | Default); | 47 | setButtons(Apply | Default); | ||
50 | 48 | | |||
51 | QObject::connect(m_desktopsModel, &KWin::DesktopsModel::userModifiedChanged, | 49 | QObject::connect(m_desktopsModel, &KWin::DesktopsModel::userModifiedChanged, | ||
52 | this, &VirtualDesktops::updateNeedsSave); | 50 | this, &VirtualDesktops::settingsChanged); | ||
53 | connect(m_animationsModel, &AnimationsModel::enabledChanged, | 51 | connect(m_animationsModel, &AnimationsModel::enabledChanged, | ||
54 | this, &VirtualDesktops::updateNeedsSave); | 52 | this, &VirtualDesktops::settingsChanged); | ||
55 | connect(m_animationsModel, &AnimationsModel::currentIndexChanged, | 53 | connect(m_animationsModel, &AnimationsModel::currentIndexChanged, | ||
56 | this, &VirtualDesktops::updateNeedsSave); | 54 | this, &VirtualDesktops::settingsChanged); | ||
57 | } | 55 | } | ||
58 | 56 | | |||
59 | VirtualDesktops::~VirtualDesktops() | 57 | VirtualDesktops::~VirtualDesktops() | ||
60 | { | 58 | { | ||
61 | } | 59 | } | ||
62 | 60 | | |||
63 | QAbstractItemModel *VirtualDesktops::desktopsModel() const | 61 | QAbstractItemModel *VirtualDesktops::desktopsModel() const | ||
64 | { | 62 | { | ||
65 | return m_desktopsModel; | 63 | return m_desktopsModel; | ||
66 | } | 64 | } | ||
67 | 65 | | |||
68 | bool VirtualDesktops::navWraps() const | 66 | QAbstractItemModel *VirtualDesktops::animationsModel() const | ||
69 | { | | |||
70 | return m_navWraps; | | |||
71 | } | | |||
72 | | ||||
73 | void VirtualDesktops::setNavWraps(bool wraps) | | |||
74 | { | | |||
75 | if (m_navWraps != wraps) { | | |||
76 | m_navWraps = wraps; | | |||
77 | | ||||
78 | emit navWrapsChanged(); | | |||
79 | | ||||
80 | updateNeedsSave(); | | |||
81 | } | | |||
82 | } | | |||
83 | | ||||
84 | bool VirtualDesktops::osdEnabled() const | | |||
85 | { | | |||
86 | return m_osdEnabled; | | |||
87 | } | | |||
88 | | ||||
89 | void VirtualDesktops::setOsdEnabled(bool enabled) | | |||
90 | { | | |||
91 | if (m_osdEnabled != enabled) { | | |||
92 | m_osdEnabled = enabled; | | |||
93 | | ||||
94 | emit osdEnabledChanged(); | | |||
95 | | ||||
96 | updateNeedsSave(); | | |||
97 | } | | |||
98 | } | | |||
99 | | ||||
100 | int VirtualDesktops::osdDuration() const | | |||
101 | { | | |||
102 | return m_osdDuration; | | |||
103 | } | | |||
104 | | ||||
105 | void VirtualDesktops::setOsdDuration(int duration) | | |||
106 | { | | |||
107 | if (m_osdDuration != duration) { | | |||
108 | m_osdDuration = duration; | | |||
109 | | ||||
110 | emit osdDurationChanged(); | | |||
111 | | ||||
112 | updateNeedsSave(); | | |||
113 | } | | |||
114 | } | | |||
115 | | ||||
116 | int VirtualDesktops::osdTextOnly() const | | |||
117 | { | | |||
118 | return m_osdTextOnly; | | |||
119 | } | | |||
120 | | ||||
121 | void VirtualDesktops::setOsdTextOnly(bool textOnly) | | |||
122 | { | 67 | { | ||
123 | if (m_osdTextOnly != textOnly) { | 68 | return m_animationsModel; | ||
124 | m_osdTextOnly = textOnly; | | |||
125 | | ||||
126 | emit osdTextOnlyChanged(); | | |||
127 | | ||||
128 | updateNeedsSave(); | | |||
129 | } | | |||
130 | } | 69 | } | ||
131 | 70 | | |||
132 | QAbstractItemModel *VirtualDesktops::animationsModel() const | 71 | VirtualDesktopsSettings *VirtualDesktops::virtualDesktopsSettings() const | ||
133 | { | 72 | { | ||
134 | return m_animationsModel; | 73 | return m_settings; | ||
135 | } | 74 | } | ||
136 | 75 | | |||
137 | void VirtualDesktops::load() | 76 | void VirtualDesktops::load() | ||
ervin: The opening curly braces should be on their own line. | |||||
138 | { | 77 | { | ||
139 | setNavWraps(m_settings->rollOverDesktop()); | 78 | ManagedConfigModule::load(); | ||
140 | | ||||
141 | setOsdEnabled(m_settings->desktopChangeOsdEnabled()); | | |||
142 | | ||||
143 | setOsdDuration(m_settings->popupHideDelay()); | | |||
144 | setOsdTextOnly(m_settings->textOnly()); | | |||
145 | 79 | | |||
80 | m_desktopsModel->load(); | ||||
146 | m_animationsModel->load(); | 81 | m_animationsModel->load(); | ||
147 | } | 82 | } | ||
148 | 83 | | |||
149 | void VirtualDesktops::save() | 84 | void VirtualDesktops::save() | ||
150 | { | 85 | { | ||
86 | ManagedConfigModule::save(); | ||||
87 | | ||||
151 | m_desktopsModel->syncWithServer(); | 88 | m_desktopsModel->syncWithServer(); | ||
152 | m_animationsModel->save(); | 89 | m_animationsModel->save(); | ||
153 | 90 | | |||
154 | m_settings->setRollOverDesktop(m_navWraps); | | |||
155 | m_settings->setDesktopChangeOsdEnabled(m_osdEnabled); | | |||
156 | m_settings->setPopupHideDelay(m_osdDuration); | | |||
157 | m_settings->setTextOnly(m_osdTextOnly); | | |||
158 | | ||||
159 | m_settings->save(); | | |||
160 | | ||||
161 | QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/KWin"), | 91 | QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/KWin"), | ||
162 | QStringLiteral("org.kde.KWin"), QStringLiteral("reloadConfig")); | 92 | QStringLiteral("org.kde.KWin"), QStringLiteral("reloadConfig")); | ||
163 | QDBusConnection::sessionBus().send(message); | 93 | QDBusConnection::sessionBus().send(message); | ||
164 | | ||||
165 | setNeedsSave(false); | | |||
166 | } | 94 | } | ||
ervin: Likely not needed anymore. | |||||
167 | 95 | | |||
168 | void VirtualDesktops::defaults() | 96 | void VirtualDesktops::defaults() | ||
169 | { | 97 | { | ||
170 | m_desktopsModel->setRows(1); | 98 | ManagedConfigModule::defaults(); | ||
99 | | ||||
100 | m_desktopsModel->defaults(); | ||||
171 | m_animationsModel->defaults(); | 101 | m_animationsModel->defaults(); | ||
102 | } | ||||
172 | 103 | | |||
173 | setNavWraps(true); | 104 | bool VirtualDesktops::isDefaults() const | ||
174 | setOsdEnabled(false); | 105 | { | ||
175 | setOsdDuration(1000); | 106 | return m_animationsModel->isDefaults() && m_desktopsModel->isDefaults(); | ||
176 | setOsdTextOnly(false); | | |||
177 | } | 107 | } | ||
178 | 108 | | |||
179 | void VirtualDesktops::configureAnimation() | 109 | void VirtualDesktops::configureAnimation() | ||
180 | { | 110 | { | ||
181 | const QModelIndex index = m_animationsModel->index(m_animationsModel->currentIndex(), 0); | 111 | const QModelIndex index = m_animationsModel->index(m_animationsModel->currentIndex(), 0); | ||
182 | if (!index.isValid()) { | 112 | if (!index.isValid()) { | ||
183 | return; | 113 | return; | ||
184 | } | 114 | } | ||
▲ Show 20 Lines • Show All 45 Lines • ▼ Show 20 Line(s) | 120 | { | |||
230 | } | 160 | } | ||
231 | 161 | | |||
232 | QPointer<KAboutApplicationDialog> aboutPlugin = new KAboutApplicationDialog(aboutData); | 162 | QPointer<KAboutApplicationDialog> aboutPlugin = new KAboutApplicationDialog(aboutData); | ||
233 | aboutPlugin->exec(); | 163 | aboutPlugin->exec(); | ||
234 | 164 | | |||
235 | delete aboutPlugin; | 165 | delete aboutPlugin; | ||
236 | } | 166 | } | ||
237 | 167 | | |||
238 | void VirtualDesktops::updateNeedsSave() | 168 | bool VirtualDesktops::isSaveNeeded() const | ||
ervin: The whole function is likely unneeded now | |||||
It is needed m_animationsModel and m_desktopsModel are not handled by ManagedConfigModule (they are not KCoreConfigSkeleton but QAbstractItemModel and QAbstractListModel). meven: It is needed m_animationsModel and m_desktopsModel are not handled by ManagedConfigModule (they… | |||||
This is fragile still, please try to override isDefaults and isSaveNeeded instead. ervin: This is fragile still, please try to override isDefaults and isSaveNeeded instead. | |||||
239 | { | 169 | { | ||
240 | bool needsSave = false; | 170 | return m_animationsModel->needsSave() || m_desktopsModel->needsSave(); | ||
Could provide more simpler and nicer implementation like isDefaults() above, something like : return m_desktopsModel->needsSave() || m_animationsModel->needsSave(); crossi: Could provide more simpler and nicer implementation like `isDefaults()` above, something like… | |||||
I think we can simplify the whole method by return m_desktopsModel->needsSave() || m_animationsModel->needsSave(); bport: I think we can simplify the whole method by
return m_desktopsModel->needsSave() ||… | |||||
241 | | ||||
242 | if (m_desktopsModel->userModified()) { | | |||
243 | needsSave = true; | | |||
244 | } | | |||
245 | | ||||
246 | if (m_animationsModel->needsSave()) { | | |||
247 | needsSave = true; | | |||
248 | } | | |||
249 | | ||||
250 | if (m_navWraps != m_settings->rollOverDesktop()) { | | |||
251 | needsSave = true; | | |||
252 | } | | |||
253 | | ||||
254 | if (m_osdEnabled != m_settings->desktopChangeOsdEnabled()) { | | |||
255 | needsSave = true; | | |||
256 | } | | |||
257 | | ||||
258 | if (m_osdDuration != m_settings->popupHideDelay()) { | | |||
259 | needsSave = true; | | |||
260 | } | | |||
261 | | ||||
262 | if (m_osdTextOnly != m_settings->textOnly()) { | | |||
263 | needsSave = true; | | |||
264 | } | | |||
265 | | ||||
266 | setNeedsSave(needsSave); | | |||
267 | } | 171 | } | ||
268 | 172 | | |||
269 | } | 173 | } | ||
270 | 174 | | |||
271 | #include "virtualdesktops.moc" | 175 | #include "virtualdesktops.moc" |
The opening curly braces should be on their own line.