KWin
Loading...
Searching...
No Matches
main.cpp
Go to the documentation of this file.
1/*
2 SPDX-FileCopyrightText: 2001 Waldo Bastian <bastian@kde.org>
3
4 SPDX-License-Identifier: GPL-2.0-or-later
5*/
6
7#include "main.h"
8
9#include <QLayout>
10// Added by qt3to4:
11#include <QVBoxLayout>
12
13#include <QtDBus>
14
15#include <KLocalizedString>
16#include <KPluginFactory>
17#include <kconfig.h>
18
19#include "kwinoptions_kdeglobals_settings.h"
20#include "kwinoptions_settings.h"
21#include "kwinoptionsdata.h"
22#include "mouse.h"
23#include "windows.h"
24
25K_PLUGIN_CLASS_WITH_JSON(KWinOptions, "kcm_kwinoptions.json")
26
28{
29 Q_OBJECT
30public:
31 KFocusConfigStandalone(QWidget *parent, const QVariantList &)
32 : KFocusConfig(true, nullptr, parent)
33 {
34 initialize(new KWinOptionsSettings(this));
35 }
36};
37
39{
40 Q_OBJECT
41public:
42 KMovingConfigStandalone(QWidget *parent, const QVariantList &)
43 : KMovingConfig(true, nullptr, parent)
44 {
45 initialize(new KWinOptionsSettings(this));
46 }
47};
48
50{
51 Q_OBJECT
52public:
53 KAdvancedConfigStandalone(QWidget *parent, const QVariantList &)
54 : KAdvancedConfig(true, nullptr, nullptr, parent)
55 {
56 initialize(new KWinOptionsSettings(this), new KWinOptionsKDEGlobalsSettings(this));
57 }
58};
59
60KWinOptions::KWinOptions(QObject *parent, const KPluginMetaData &data)
61 : KCModule(parent, data)
62{
63 mSettings = new KWinOptionsSettings(this);
64
65 QVBoxLayout *layout = new QVBoxLayout(widget());
66 layout->setContentsMargins(0, 0, 0, 0);
67 tab = new QTabWidget(widget());
68 layout->addWidget(tab);
69
70 const auto connectKCM = [this](KCModule *mod) {
71 connect(mod, &KCModule::needsSaveChanged, this, &KWinOptions::updateUnmanagedState);
72 connect(this, &KCModule::defaultsIndicatorsVisibleChanged, mod, [mod, this]() {
73 mod->setDefaultsIndicatorsVisible(defaultsIndicatorsVisible());
74 });
75 };
76
77 mFocus = new KFocusConfig(false, mSettings, widget());
78 mFocus->setObjectName(QLatin1String("KWin Focus Config"));
79 tab->addTab(mFocus->widget(), i18n("&Focus"));
80 connectKCM(mFocus);
81
82 mTitleBarActions = new KTitleBarActionsConfig(false, mSettings, widget());
83 mTitleBarActions->setObjectName(QLatin1String("KWin TitleBar Actions"));
84 tab->addTab(mTitleBarActions->widget(), i18n("Titlebar A&ctions"));
85 connectKCM(mTitleBarActions);
86
87 mWindowActions = new KWindowActionsConfig(false, mSettings, widget());
88 mWindowActions->setObjectName(QLatin1String("KWin Window Actions"));
89 tab->addTab(mWindowActions->widget(), i18n("W&indow Actions"));
90 connectKCM(mWindowActions);
91
92 mMoving = new KMovingConfig(false, mSettings, widget());
93 mMoving->setObjectName(QLatin1String("KWin Moving"));
94 tab->addTab(mMoving->widget(), i18n("Mo&vement"));
95 connectKCM(mMoving);
96
97 mAdvanced = new KAdvancedConfig(false, mSettings, new KWinOptionsKDEGlobalsSettings(this), widget());
98 mAdvanced->setObjectName(QLatin1String("KWin Advanced"));
99 tab->addTab(mAdvanced->widget(), i18n("Adva&nced"));
100 connectKCM(mAdvanced);
101}
102
104{
105 KCModule::load();
106
107 mTitleBarActions->load();
108 mWindowActions->load();
109 mMoving->load();
110 mAdvanced->load();
111 // mFocus is last because it may send unmanagedWidgetStateChanged
112 // that need to have the final word
113 mFocus->load();
114}
115
117{
118 KCModule::save();
119
120 mFocus->save();
121 mTitleBarActions->save();
122 mWindowActions->save();
123 mMoving->save();
124 mAdvanced->save();
125
126 // Send signal to all kwin instances
127 QDBusMessage message =
128 QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig");
129 QDBusConnection::sessionBus().send(message);
130}
131
133{
134 KCModule::defaults();
135
136 mTitleBarActions->defaults();
137 mWindowActions->defaults();
138 mMoving->defaults();
139 mAdvanced->defaults();
140 // mFocus is last because it may send unmanagedWidgetDefaulted
141 // that need to have the final word
142 mFocus->defaults();
143}
144
146{
147 bool changed = false;
148 changed |= mFocus->needsSave();
149 changed |= mTitleBarActions->needsSave();
150 changed |= mWindowActions->needsSave();
151 changed |= mMoving->needsSave();
152 changed |= mAdvanced->needsSave();
153
154 unmanagedWidgetChangeState(changed);
155
156 bool isDefault = true;
157 isDefault &= mFocus->representsDefaults();
158 isDefault &= mTitleBarActions->representsDefaults();
159 isDefault &= mWindowActions->representsDefaults();
160 isDefault &= mMoving->representsDefaults();
161 isDefault &= mAdvanced->representsDefaults();
162
163 unmanagedWidgetDefaultState(isDefault);
164}
165
166KActionsOptions::KActionsOptions(QObject *parent, const KPluginMetaData &data)
167 : KCModule(parent, data)
168{
169 mSettings = new KWinOptionsSettings(this);
170
171 QVBoxLayout *layout = new QVBoxLayout(widget());
172 layout->setContentsMargins(0, 0, 0, 0);
173 tab = new QTabWidget(widget());
174 layout->addWidget(tab);
175
176 mTitleBarActions = new KTitleBarActionsConfig(false, mSettings, widget());
177 mTitleBarActions->setObjectName(QLatin1String("KWin TitleBar Actions"));
178 tab->addTab(mTitleBarActions->widget(), i18n("&Titlebar Actions"));
179 connect(mTitleBarActions, &KCModule::needsSaveChanged, this, [this]() {
180 setNeedsSave(mTitleBarActions->needsSave());
181 });
182 connect(mTitleBarActions, &KCModule::representsDefaultsChanged, this, [this]() {
183 setRepresentsDefaults(mTitleBarActions->representsDefaults());
184 });
185
186 mWindowActions = new KWindowActionsConfig(false, mSettings, widget());
187 mWindowActions->setObjectName(QLatin1String("KWin Window Actions"));
188 tab->addTab(mWindowActions->widget(), i18n("Window Actio&ns"));
189 connect(mWindowActions, &KCModule::needsSaveChanged, this, [this]() {
190 setNeedsSave(mWindowActions->needsSave());
191 });
192 connect(mWindowActions, &KCModule::representsDefaultsChanged, this, [this]() {
193 setRepresentsDefaults(mWindowActions->representsDefaults());
194 });
195}
196
198{
199 mTitleBarActions->load();
200 mWindowActions->load();
201}
202
204{
205 mTitleBarActions->save();
206 mWindowActions->save();
207
208 setNeedsSave(false);
209 // Send signal to all kwin instances
210 QDBusMessage message = QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig");
211 QDBusConnection::sessionBus().send(message);
212}
213
215{
216 mTitleBarActions->defaults();
217 mWindowActions->defaults();
218}
219
221{
222 setNeedsSave(state);
223}
224
225#include "main.moc"
226
227#include "moc_main.cpp"
void save() override
Definition main.cpp:203
KActionsOptions(QObject *parent, const KPluginMetaData &data)
Definition main.cpp:166
void defaults() override
Definition main.cpp:214
void load() override
Definition main.cpp:197
void moduleChanged(bool state)
Definition main.cpp:220
void save() override
Definition windows.cpp:264
void initialize(KWinOptionsSettings *settings, KWinOptionsKDEGlobalsSettings *globalSettings)
Definition windows.cpp:240
KAdvancedConfigStandalone(QWidget *parent, const QVariantList &)
Definition main.cpp:53
void defaults() override
Definition windows.cpp:218
void save() override
Definition windows.cpp:183
void load() override
Definition windows.cpp:158
KFocusConfigStandalone(QWidget *parent, const QVariantList &)
Definition main.cpp:31
void initialize(KWinOptionsSettings *settings)
Definition windows.cpp:292
void save() override
Definition windows.cpp:298
KMovingConfigStandalone(QWidget *parent, const QVariantList &)
Definition main.cpp:42
void save() override
Definition mouse.cpp:41
KWinOptions(QObject *parent, const KPluginMetaData &data)
Definition main.cpp:60
void updateUnmanagedState()
Definition main.cpp:145
void load() override
Definition main.cpp:103
void save() override
Definition main.cpp:116
void defaults() override
Definition main.cpp:132
void save() override
Definition mouse.cpp:69
K_PLUGIN_CLASS_WITH_JSON(KCMKWinRules, "kcm_kwinrules.json")