File indexing completed on 2024-05-12 05:35:54
0001 /* 0002 SPDX-FileCopyrightText: 2018 <furkantokac34@gmail.com> 0003 SPDX-FileCopyrightText: 2019 Cyril Rossi <cyril.rossi@enioka.com> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 #include "workspaceoptions.h" 0009 0010 #include <KLocalizedString> 0011 #include <KPluginFactory> 0012 0013 #include <QDBusConnection> 0014 #include <QDBusMessage> 0015 #include <QDBusPendingCall> 0016 0017 #include "workspaceoptions_kdeglobalssettings.h" 0018 #include "workspaceoptions_kwinsettings.h" 0019 #include "workspaceoptions_plasmasettings.h" 0020 #include "workspaceoptionsdata.h" 0021 0022 K_PLUGIN_FACTORY_WITH_JSON(KCMWorkspaceOptionsFactory, "kcm_workspace.json", registerPlugin<KCMWorkspaceOptions>(); registerPlugin<WorkspaceOptionsData>();) 0023 0024 KCMWorkspaceOptions::KCMWorkspaceOptions(QObject *parent, const KPluginMetaData &metaData) 0025 : KQuickManagedConfigModule(parent, metaData) 0026 , m_data(new WorkspaceOptionsData(this)) 0027 { 0028 qmlRegisterAnonymousType<WorkspaceOptionsGlobalsSettings>("org.kde.plasma.workspaceoptions.kcm", 0); 0029 qmlRegisterAnonymousType<WorkspaceOptionsPlasmaSettings>("org.kde.plasma.workspaceoptions.kcm", 0); 0030 qmlRegisterAnonymousType<WorkspaceOptionsKwinSettings>("org.kde.plasma.workspaceoptions.kcm", 0); 0031 0032 setButtons(Apply | Default | Help); 0033 } 0034 0035 WorkspaceOptionsGlobalsSettings *KCMWorkspaceOptions::globalsSettings() const 0036 { 0037 return m_data->workspaceOptionsGlobalsSettings(); 0038 } 0039 0040 WorkspaceOptionsPlasmaSettings *KCMWorkspaceOptions::plasmaSettings() const 0041 { 0042 return m_data->workspaceOptionsPlasmaSettings(); 0043 } 0044 0045 WorkspaceOptionsKwinSettings *KCMWorkspaceOptions::kwinSettings() const 0046 { 0047 return m_data->workspaceOptionsKwinSettings(); 0048 } 0049 0050 void KCMWorkspaceOptions::save() 0051 { 0052 const bool primarySelectionSaved = m_data->workspaceOptionsKwinSettings()->findItem(QStringLiteral("primarySelection"))->isSaveNeeded(); 0053 0054 KQuickManagedConfigModule::save(); 0055 0056 { 0057 QDBusMessage message = QDBusMessage::createSignal("/KGlobalSettings", "org.kde.KGlobalSettings", "notifyChange"); 0058 QList<QVariant> args; 0059 args.append(3 /*KGlobalSettings::SettingsChanged*/); 0060 args.append(0 /*GlobalSettings::SettingsCategory::SETTINGS_MOUSE*/); 0061 message.setArguments(args); 0062 QDBusConnection::sessionBus().send(message); 0063 } 0064 0065 { 0066 QDBusMessage message = QDBusMessage::createSignal(QStringLiteral("/kwinrc"), QStringLiteral("org.kde.kconfig.notify"), QStringLiteral("ConfigChanged")); 0067 QHash<QString, QByteArrayList> changes = { 0068 {QStringLiteral("Wayland"), {"EnablePrimarySelection"}}, 0069 }; 0070 message.setArguments({QVariant::fromValue(std::move(changes))}); 0071 QDBusConnection::sessionBus().send(message); 0072 } 0073 0074 if (primarySelectionSaved) { 0075 Q_EMIT primarySelectionOptionSaved(); 0076 } 0077 } 0078 0079 void KCMWorkspaceOptions::requestReboot() 0080 { 0081 QDBusMessage msg = QDBusMessage::createMethodCall(QStringLiteral("org.kde.LogoutPrompt"), 0082 QStringLiteral("/LogoutPrompt"), 0083 QStringLiteral("org.kde.LogoutPrompt"), 0084 QStringLiteral("promptReboot")); 0085 QDBusConnection::sessionBus().asyncCall(msg); 0086 } 0087 0088 #include "moc_workspaceoptions.cpp" 0089 #include "workspaceoptions.moc"