You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
229 lines
6.6 KiB
229 lines
6.6 KiB
/* |
|
SPDX-FileCopyrightText: 2001 Waldo Bastian <bastian@kde.org> |
|
|
|
SPDX-License-Identifier: GPL-2.0-or-later |
|
*/ |
|
|
|
#include "main.h" |
|
|
|
#include <QLayout> |
|
// Added by qt3to4: |
|
#include <QVBoxLayout> |
|
|
|
#include <QtDBus> |
|
|
|
#include <KLocalizedString> |
|
#include <KPluginFactory> |
|
#include <kconfig.h> |
|
|
|
#include "kwinoptions_kdeglobals_settings.h" |
|
#include "kwinoptions_settings.h" |
|
#include "kwinoptionsdata.h" |
|
#include "mouse.h" |
|
#include "windows.h" |
|
|
|
K_PLUGIN_CLASS_WITH_JSON(KWinOptions, "kcm_kwinoptions.json") |
|
|
|
class KFocusConfigStandalone : public KFocusConfig |
|
{ |
|
Q_OBJECT |
|
public: |
|
KFocusConfigStandalone(QWidget *parent, const QVariantList &) |
|
: KFocusConfig(true, nullptr, parent) |
|
{ |
|
initialize(new KWinOptionsSettings(this)); |
|
} |
|
}; |
|
|
|
class KMovingConfigStandalone : public KMovingConfig |
|
{ |
|
Q_OBJECT |
|
public: |
|
KMovingConfigStandalone(QWidget *parent, const QVariantList &) |
|
: KMovingConfig(true, nullptr, parent) |
|
{ |
|
initialize(new KWinOptionsSettings(this)); |
|
} |
|
}; |
|
|
|
class KAdvancedConfigStandalone : public KAdvancedConfig |
|
{ |
|
Q_OBJECT |
|
public: |
|
KAdvancedConfigStandalone(QWidget *parent, const QVariantList &) |
|
: KAdvancedConfig(true, nullptr, nullptr, parent) |
|
{ |
|
initialize(new KWinOptionsSettings(this), new KWinOptionsKDEGlobalsSettings(this)); |
|
} |
|
}; |
|
|
|
KWinOptions::KWinOptions(QObject *parent, const KPluginMetaData &data) |
|
: KCModule(parent, data) |
|
{ |
|
mSettings = new KWinOptionsSettings(this); |
|
|
|
QVBoxLayout *layout = new QVBoxLayout(widget()); |
|
layout->setContentsMargins(0, 0, 0, 0); |
|
tab = new QTabWidget(widget()); |
|
tab->setDocumentMode(true); |
|
tab->tabBar()->setExpanding(true); |
|
layout->addWidget(tab); |
|
|
|
const auto connectKCM = [this](KCModule *mod) { |
|
connect(mod, &KCModule::needsSaveChanged, this, &KWinOptions::updateUnmanagedState); |
|
connect(this, &KCModule::defaultsIndicatorsVisibleChanged, mod, [mod, this]() { |
|
mod->setDefaultsIndicatorsVisible(defaultsIndicatorsVisible()); |
|
}); |
|
}; |
|
|
|
mFocus = new KFocusConfig(false, mSettings, widget()); |
|
mFocus->setObjectName(QLatin1String("KWin Focus Config")); |
|
tab->addTab(mFocus->widget(), i18n("&Focus")); |
|
connectKCM(mFocus); |
|
|
|
mTitleBarActions = new KTitleBarActionsConfig(false, mSettings, widget()); |
|
mTitleBarActions->setObjectName(QLatin1String("KWin TitleBar Actions")); |
|
tab->addTab(mTitleBarActions->widget(), i18n("Titlebar A&ctions")); |
|
connectKCM(mTitleBarActions); |
|
|
|
mWindowActions = new KWindowActionsConfig(false, mSettings, widget()); |
|
mWindowActions->setObjectName(QLatin1String("KWin Window Actions")); |
|
tab->addTab(mWindowActions->widget(), i18n("W&indow Actions")); |
|
connectKCM(mWindowActions); |
|
|
|
mMoving = new KMovingConfig(false, mSettings, widget()); |
|
mMoving->setObjectName(QLatin1String("KWin Moving")); |
|
tab->addTab(mMoving->widget(), i18n("Mo&vement")); |
|
connectKCM(mMoving); |
|
|
|
mAdvanced = new KAdvancedConfig(false, mSettings, new KWinOptionsKDEGlobalsSettings(this), widget()); |
|
mAdvanced->setObjectName(QLatin1String("KWin Advanced")); |
|
tab->addTab(mAdvanced->widget(), i18n("Adva&nced")); |
|
connectKCM(mAdvanced); |
|
} |
|
|
|
void KWinOptions::load() |
|
{ |
|
KCModule::load(); |
|
|
|
mTitleBarActions->load(); |
|
mWindowActions->load(); |
|
mMoving->load(); |
|
mAdvanced->load(); |
|
// mFocus is last because it may send unmanagedWidgetStateChanged |
|
// that need to have the final word |
|
mFocus->load(); |
|
} |
|
|
|
void KWinOptions::save() |
|
{ |
|
KCModule::save(); |
|
|
|
mFocus->save(); |
|
mTitleBarActions->save(); |
|
mWindowActions->save(); |
|
mMoving->save(); |
|
mAdvanced->save(); |
|
|
|
// Send signal to all kwin instances |
|
QDBusMessage message = |
|
QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig"); |
|
QDBusConnection::sessionBus().send(message); |
|
} |
|
|
|
void KWinOptions::defaults() |
|
{ |
|
KCModule::defaults(); |
|
|
|
mTitleBarActions->defaults(); |
|
mWindowActions->defaults(); |
|
mMoving->defaults(); |
|
mAdvanced->defaults(); |
|
// mFocus is last because it may send unmanagedWidgetDefaulted |
|
// that need to have the final word |
|
mFocus->defaults(); |
|
} |
|
|
|
void KWinOptions::updateUnmanagedState() |
|
{ |
|
bool changed = false; |
|
changed |= mFocus->needsSave(); |
|
changed |= mTitleBarActions->needsSave(); |
|
changed |= mWindowActions->needsSave(); |
|
changed |= mMoving->needsSave(); |
|
changed |= mAdvanced->needsSave(); |
|
|
|
unmanagedWidgetChangeState(changed); |
|
|
|
bool isDefault = true; |
|
isDefault &= mFocus->representsDefaults(); |
|
isDefault &= mTitleBarActions->representsDefaults(); |
|
isDefault &= mWindowActions->representsDefaults(); |
|
isDefault &= mMoving->representsDefaults(); |
|
isDefault &= mAdvanced->representsDefaults(); |
|
|
|
unmanagedWidgetDefaultState(isDefault); |
|
} |
|
|
|
KActionsOptions::KActionsOptions(QObject *parent, const KPluginMetaData &data) |
|
: KCModule(parent, data) |
|
{ |
|
mSettings = new KWinOptionsSettings(this); |
|
|
|
QVBoxLayout *layout = new QVBoxLayout(widget()); |
|
layout->setContentsMargins(0, 0, 0, 0); |
|
tab = new QTabWidget(widget()); |
|
layout->addWidget(tab); |
|
|
|
mTitleBarActions = new KTitleBarActionsConfig(false, mSettings, widget()); |
|
mTitleBarActions->setObjectName(QLatin1String("KWin TitleBar Actions")); |
|
tab->addTab(mTitleBarActions->widget(), i18n("&Titlebar Actions")); |
|
connect(mTitleBarActions, &KCModule::needsSaveChanged, this, [this]() { |
|
setNeedsSave(mTitleBarActions->needsSave()); |
|
}); |
|
connect(mTitleBarActions, &KCModule::representsDefaultsChanged, this, [this]() { |
|
setRepresentsDefaults(mTitleBarActions->representsDefaults()); |
|
}); |
|
|
|
mWindowActions = new KWindowActionsConfig(false, mSettings, widget()); |
|
mWindowActions->setObjectName(QLatin1String("KWin Window Actions")); |
|
tab->addTab(mWindowActions->widget(), i18n("Window Actio&ns")); |
|
connect(mWindowActions, &KCModule::needsSaveChanged, this, [this]() { |
|
setNeedsSave(mWindowActions->needsSave()); |
|
}); |
|
connect(mWindowActions, &KCModule::representsDefaultsChanged, this, [this]() { |
|
setRepresentsDefaults(mWindowActions->representsDefaults()); |
|
}); |
|
} |
|
|
|
void KActionsOptions::load() |
|
{ |
|
mTitleBarActions->load(); |
|
mWindowActions->load(); |
|
} |
|
|
|
void KActionsOptions::save() |
|
{ |
|
mTitleBarActions->save(); |
|
mWindowActions->save(); |
|
|
|
setNeedsSave(false); |
|
// Send signal to all kwin instances |
|
QDBusMessage message = QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig"); |
|
QDBusConnection::sessionBus().send(message); |
|
} |
|
|
|
void KActionsOptions::defaults() |
|
{ |
|
mTitleBarActions->defaults(); |
|
mWindowActions->defaults(); |
|
} |
|
|
|
void KActionsOptions::moduleChanged(bool state) |
|
{ |
|
setNeedsSave(state); |
|
} |
|
|
|
#include "main.moc" |
|
|
|
#include "moc_main.cpp"
|
|
|