1 /*
2 KWin - the KDE window manager
3 This file is part of the KDE project.
4
5 SPDX-FileCopyrightText: 2007 Christian Nitschkowski <christian.nitschkowski@kdemail.net>
6
7 SPDX-License-Identifier: GPL-2.0-or-later
8 */
9
10 #include "lookingglass_config.h"
11
12 // KConfigSkeleton
13 #include "lookingglassconfig.h"
14 #include <config-kwin.h>
15 #include <kwineffects_interface.h>
16
17 #include <QAction>
18
19 #include <KGlobalAccel>
20 #include <KLocalizedString>
21 #include <kconfiggroup.h>
22 #include <KActionCollection>
23 #include <KAboutData>
24 #include <KPluginFactory>
25
26 #include <QDebug>
27 #include <QWidget>
28 #include <QVBoxLayout>
29
30 K_PLUGIN_FACTORY_WITH_JSON(LookingGlassEffectConfigFactory,
31 "lookingglass_config.json",
32 registerPlugin<KWin::LookingGlassEffectConfig>();)
33
34 namespace KWin
35 {
36
LookingGlassEffectConfigForm(QWidget * parent)37 LookingGlassEffectConfigForm::LookingGlassEffectConfigForm(QWidget* parent) : QWidget(parent)
38 {
39 setupUi(this);
40 }
41
LookingGlassEffectConfig(QWidget * parent,const QVariantList & args)42 LookingGlassEffectConfig::LookingGlassEffectConfig(QWidget* parent, const QVariantList& args) :
43 KCModule(parent, args)
44 {
45 m_ui = new LookingGlassEffectConfigForm(this);
46
47 QVBoxLayout* layout = new QVBoxLayout(this);
48
49 layout->addWidget(m_ui);
50
51 LookingGlassConfig::instance(KWIN_CONFIG);
52 addConfig(LookingGlassConfig::self(), m_ui);
53 connect(m_ui->editor, &KShortcutsEditor::keyChange, this, &LookingGlassEffectConfig::markAsChanged);
54
55 // Shortcut config. The shortcut belongs to the component "kwin"!
56 m_actionCollection = new KActionCollection(this, QStringLiteral("kwin"));
57
58 m_actionCollection->setComponentDisplayName(i18n("KWin"));
59 m_actionCollection->setConfigGroup(QStringLiteral("LookingGlass"));
60 m_actionCollection->setConfigGlobal(true);
61
62 QAction* a;
63 a = m_actionCollection->addAction(KStandardAction::ZoomIn);
64 a->setProperty("isConfigurationAction", true);
65 KGlobalAccel::self()->setDefaultShortcut(a, QList<QKeySequence>() << Qt::META + Qt::Key_Equal);
66 KGlobalAccel::self()->setShortcut(a, QList<QKeySequence>() << Qt::META + Qt::Key_Equal);
67
68 a = m_actionCollection->addAction(KStandardAction::ZoomOut);
69 a->setProperty("isConfigurationAction", true);
70 KGlobalAccel::self()->setDefaultShortcut(a, QList<QKeySequence>() << Qt::META + Qt::Key_Minus);
71 KGlobalAccel::self()->setShortcut(a, QList<QKeySequence>() << Qt::META + Qt::Key_Minus);
72
73 a = m_actionCollection->addAction(KStandardAction::ActualSize);
74 a->setProperty("isConfigurationAction", true);
75 KGlobalAccel::self()->setDefaultShortcut(a, QList<QKeySequence>() << Qt::META + Qt::Key_0);
76 KGlobalAccel::self()->setShortcut(a, QList<QKeySequence>() << Qt::META + Qt::Key_0);
77
78 m_ui->editor->addCollection(m_actionCollection);
79 }
80
~LookingGlassEffectConfig()81 LookingGlassEffectConfig::~LookingGlassEffectConfig()
82 {
83 // Undo (only) unsaved changes to global key shortcuts
84 m_ui->editor->undo();
85 }
86
save()87 void LookingGlassEffectConfig::save()
88 {
89 qDebug() << "Saving config of LookingGlass" ;
90 KCModule::save();
91
92 m_ui->editor->save(); // undo() will restore to this state from now on
93
94 OrgKdeKwinEffectsInterface interface(QStringLiteral("org.kde.KWin"),
95 QStringLiteral("/Effects"),
96 QDBusConnection::sessionBus());
97 interface.reconfigureEffect(QStringLiteral("lookingglass"));
98 }
99
defaults()100 void LookingGlassEffectConfig::defaults()
101 {
102 m_ui->editor->allDefault();
103 KCModule::defaults();
104 }
105
106 } // namespace
107
108 #include "lookingglass_config.moc"
109