Changeset View
Changeset View
Standalone View
Standalone View
kcmkwin/kwindesktop/virtualdesktops.cpp
Show All 13 Lines | |||||
14 | * | 14 | * | ||
15 | * You should have received a copy of the GNU General Public License | 15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | 16 | * along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | */ | 17 | */ | ||
18 | 18 | | |||
19 | #include "virtualdesktops.h" | 19 | #include "virtualdesktops.h" | ||
20 | #include "animationsmodel.h" | 20 | #include "animationsmodel.h" | ||
21 | #include "desktopsmodel.h" | 21 | #include "desktopsmodel.h" | ||
22 | #include "virtualdesktopssettings.h" | ||||
22 | 23 | | |||
23 | #include <KAboutApplicationDialog> | 24 | #include <KAboutApplicationDialog> | ||
24 | #include <KAboutData> | 25 | #include <KAboutData> | ||
25 | #include <KConfigGroup> | 26 | #include <KConfigGroup> | ||
26 | #include <KLocalizedString> | 27 | #include <KLocalizedString> | ||
27 | 28 | | |||
28 | 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>();) | ||
29 | 30 | | |||
30 | namespace KWin | 31 | namespace KWin | ||
31 | { | 32 | { | ||
32 | 33 | | |||
33 | VirtualDesktops::VirtualDesktops(QObject *parent, const QVariantList &args) | 34 | VirtualDesktops::VirtualDesktops(QObject *parent, const QVariantList &args) | ||
34 | : KQuickAddons::ConfigModule(parent, args) | 35 | : KQuickAddons::ConfigModule(parent, args) | ||
35 | , m_kwinConfig(KSharedConfig::openConfig("kwinrc")) | 36 | , m_settings(new VirtualDesktopsSettings(this)) | ||
36 | , m_desktopsModel(new KWin::DesktopsModel(this)) | 37 | , m_desktopsModel(new KWin::DesktopsModel(this)) | ||
37 | , m_navWraps(true) | 38 | , m_navWraps(true) | ||
38 | , m_osdEnabled(false) | 39 | , m_osdEnabled(false) | ||
39 | , m_osdDuration(1000) | 40 | , m_osdDuration(1000) | ||
40 | , m_osdTextOnly(false) | 41 | , m_osdTextOnly(false) | ||
41 | , m_animationsModel(new AnimationsModel(this)) | 42 | , m_animationsModel(new AnimationsModel(this)) | ||
42 | { | 43 | { | ||
43 | KAboutData *about = new KAboutData(QStringLiteral("kcm_kwin_virtualdesktops"), | 44 | KAboutData *about = new KAboutData(QStringLiteral("kcm_kwin_virtualdesktops"), | ||
▲ Show 20 Lines • Show All 86 Lines • ▼ Show 20 Line(s) | |||||
130 | 131 | | |||
131 | QAbstractItemModel *VirtualDesktops::animationsModel() const | 132 | QAbstractItemModel *VirtualDesktops::animationsModel() const | ||
132 | { | 133 | { | ||
133 | return m_animationsModel; | 134 | return m_animationsModel; | ||
134 | } | 135 | } | ||
135 | 136 | | |||
136 | void VirtualDesktops::load() | 137 | void VirtualDesktops::load() | ||
137 | { | 138 | { | ||
138 | KConfigGroup navConfig(m_kwinConfig, "Windows"); | 139 | setNavWraps(m_settings->rollOverDesktop()); | ||
139 | setNavWraps(navConfig.readEntry<bool>("RollOverDesktops", true)); | | |||
140 | 140 | | |||
141 | KConfigGroup osdConfig(m_kwinConfig, "Plugins"); | 141 | setOsdEnabled(m_settings->desktopChangeOsdEnabled()); | ||
142 | setOsdEnabled(osdConfig.readEntry("desktopchangeosdEnabled", false)); | | |||
143 | 142 | | |||
144 | KConfigGroup osdSettings(m_kwinConfig, "Script-desktopchangeosd"); | 143 | setOsdDuration(m_settings->popupHideDelay()); | ||
145 | setOsdDuration(osdSettings.readEntry("PopupHideDelay", 1000)); | 144 | setOsdTextOnly(m_settings->textOnly()); | ||
146 | setOsdTextOnly(osdSettings.readEntry("TextOnly", false)); | | |||
147 | 145 | | |||
148 | m_animationsModel->load(); | 146 | m_animationsModel->load(); | ||
149 | } | 147 | } | ||
150 | 148 | | |||
151 | void VirtualDesktops::save() | 149 | void VirtualDesktops::save() | ||
152 | { | 150 | { | ||
153 | m_desktopsModel->syncWithServer(); | 151 | m_desktopsModel->syncWithServer(); | ||
154 | m_animationsModel->save(); | 152 | m_animationsModel->save(); | ||
155 | 153 | | |||
156 | KConfigGroup navConfig(m_kwinConfig, "Windows"); | 154 | m_settings->setRollOverDesktop(m_navWraps); | ||
157 | navConfig.writeEntry("RollOverDesktops", m_navWraps); | 155 | m_settings->setDesktopChangeOsdEnabled(m_osdEnabled); | ||
156 | m_settings->setPopupHideDelay(m_osdDuration); | ||||
157 | m_settings->setTextOnly(m_osdTextOnly); | ||||
158 | 158 | | |||
159 | KConfigGroup osdConfig(m_kwinConfig, "Plugins"); | 159 | m_settings->save(); | ||
160 | osdConfig.writeEntry("desktopchangeosdEnabled", m_osdEnabled); | | |||
161 | | ||||
162 | KConfigGroup osdSettings(m_kwinConfig, "Script-desktopchangeosd"); | | |||
163 | osdSettings.writeEntry("PopupHideDelay", m_osdDuration); | | |||
164 | osdSettings.writeEntry("TextOnly", m_osdTextOnly); | | |||
165 | | ||||
166 | m_kwinConfig->sync(); | | |||
167 | 160 | | |||
168 | QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/KWin"), | 161 | QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/KWin"), | ||
169 | QStringLiteral("org.kde.KWin"), QStringLiteral("reloadConfig")); | 162 | QStringLiteral("org.kde.KWin"), QStringLiteral("reloadConfig")); | ||
170 | QDBusConnection::sessionBus().send(message); | 163 | QDBusConnection::sessionBus().send(message); | ||
171 | 164 | | |||
172 | setNeedsSave(false); | 165 | setNeedsSave(false); | ||
173 | } | 166 | } | ||
174 | 167 | | |||
175 | void VirtualDesktops::defaults() | 168 | void VirtualDesktops::defaults() | ||
176 | { | 169 | { | ||
177 | m_desktopsModel->setRows(1); | 170 | m_desktopsModel->setRows(1); | ||
178 | m_animationsModel->defaults(); | 171 | m_animationsModel->defaults(); | ||
179 | 172 | | |||
180 | setNavWraps(true); | 173 | setNavWraps(true); | ||
davidedmundson: I would like this to to take these settings from the kcfg defaults | |||||
ervin: Good point, definitely missing | |||||
This was going to be removed anyway : D25881 meven: This was going to be removed anyway : D25881 | |||||
181 | setOsdEnabled(false); | 174 | setOsdEnabled(false); | ||
182 | setOsdDuration(1000); | 175 | setOsdDuration(1000); | ||
183 | setOsdTextOnly(false); | 176 | setOsdTextOnly(false); | ||
184 | } | 177 | } | ||
185 | 178 | | |||
186 | void VirtualDesktops::configureAnimation() | 179 | void VirtualDesktops::configureAnimation() | ||
187 | { | 180 | { | ||
188 | const QModelIndex index = m_animationsModel->index(m_animationsModel->currentIndex(), 0); | 181 | const QModelIndex index = m_animationsModel->index(m_animationsModel->currentIndex(), 0); | ||
▲ Show 20 Lines • Show All 60 Lines • ▼ Show 20 Line(s) | 239 | { | |||
249 | if (m_desktopsModel->userModified()) { | 242 | if (m_desktopsModel->userModified()) { | ||
250 | needsSave = true; | 243 | needsSave = true; | ||
251 | } | 244 | } | ||
252 | 245 | | |||
253 | if (m_animationsModel->needsSave()) { | 246 | if (m_animationsModel->needsSave()) { | ||
254 | needsSave = true; | 247 | needsSave = true; | ||
255 | } | 248 | } | ||
256 | 249 | | |||
257 | KConfigGroup navConfig(m_kwinConfig, "Windows"); | 250 | if (m_navWraps != m_settings->rollOverDesktop()) { | ||
Out of curiosity, is there anything blocking us using KQuickAddons::ManagedConfigModule as the base? davidedmundson: Out of curiosity, is there anything blocking us using KQuickAddons::ManagedConfigModule as the… | |||||
ervin: Nothing, but Méven is going incremental here | |||||
258 | | ||||
259 | if (m_navWraps != navConfig.readEntry<bool>("RollOverDesktops", true)) { | | |||
260 | needsSave = true; | 251 | needsSave = true; | ||
261 | } | 252 | } | ||
262 | 253 | | |||
263 | KConfigGroup osdConfig(m_kwinConfig, "Plugins"); | 254 | if (m_osdEnabled != m_settings->desktopChangeOsdEnabled()) { | ||
264 | | ||||
265 | if (m_osdEnabled != osdConfig.readEntry("desktopchangeosdEnabled", false)) { | | |||
266 | needsSave = true; | 255 | needsSave = true; | ||
267 | } | 256 | } | ||
268 | 257 | | |||
269 | KConfigGroup osdSettings(m_kwinConfig, "Script-desktopchangeosd"); | 258 | if (m_osdDuration != m_settings->popupHideDelay()) { | ||
270 | | ||||
271 | if (m_osdDuration != osdSettings.readEntry("PopupHideDelay", 1000)) { | | |||
272 | needsSave = true; | 259 | needsSave = true; | ||
273 | } | 260 | } | ||
274 | 261 | | |||
275 | if (m_osdTextOnly != osdSettings.readEntry("TextOnly", false)) { | 262 | if (m_osdTextOnly != m_settings->textOnly()) { | ||
276 | needsSave = true; | 263 | needsSave = true; | ||
277 | } | 264 | } | ||
278 | 265 | | |||
279 | setNeedsSave(needsSave); | 266 | setNeedsSave(needsSave); | ||
280 | } | 267 | } | ||
281 | 268 | | |||
282 | } | 269 | } | ||
283 | 270 | | |||
284 | #include "virtualdesktops.moc" | 271 | #include "virtualdesktops.moc" |
I would like this to to take these settings from the kcfg defaults