1fb9f6f13a
The main advantage of SPDX license identifiers over the traditional license headers is that it's more difficult to overlook inappropriate licenses for kwin, for example GPL 3. We also don't have to copy a lot of boilerplate text. In order to create this change, I ran licensedigger -r -c from the toplevel source directory.
235 lines
9 KiB
C++
235 lines
9 KiB
C++
/*
|
|
*
|
|
* 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 <kconfig.h>
|
|
#include <kaboutdata.h>
|
|
#include <KPluginFactory>
|
|
#include <KPluginLoader>
|
|
|
|
#include "mouse.h"
|
|
#include "windows.h"
|
|
#include "kwinoptions_settings.h"
|
|
|
|
K_PLUGIN_FACTORY_DECLARATION(KWinOptionsFactory)
|
|
|
|
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, parent)
|
|
{
|
|
initialize(new KWinOptionsSettings(this));
|
|
}
|
|
};
|
|
|
|
KWinOptions::KWinOptions(QWidget *parent, const QVariantList &)
|
|
: KCModule(parent)
|
|
{
|
|
mSettings = new KWinOptionsSettings(this);
|
|
|
|
QVBoxLayout *layout = new QVBoxLayout(this);
|
|
layout->setContentsMargins(0, 0, 0, 0);
|
|
tab = new QTabWidget(this);
|
|
layout->addWidget(tab);
|
|
|
|
mFocus = new KFocusConfig(false, mSettings, this);
|
|
mFocus->setObjectName(QLatin1String("KWin Focus Config"));
|
|
tab->addTab(mFocus, i18n("&Focus"));
|
|
connect(mFocus, qOverload<bool>(&KCModule::changed), this, qOverload<bool>(&KCModule::changed));
|
|
connect(mFocus, qOverload<bool>(&KCModule::defaulted), this, qOverload<bool>(&KCModule::defaulted));
|
|
connect(this, &KCModule::defaultsIndicatorsVisibleChanged, mFocus, &KCModule::setDefaultsIndicatorsVisible);
|
|
|
|
// Need to relay unmanagedWidgetDefaultState and unmanagedWidgetChangeState to wrapping KCModule
|
|
connect(mFocus, &KFocusConfig::unmanagedWidgetDefaulted, this, &KWinOptions::unmanagedWidgetDefaultState);
|
|
connect(mFocus, &KFocusConfig::unmanagedWidgetStateChanged, this, &KWinOptions::unmanagedWidgetChangeState);
|
|
|
|
mTitleBarActions = new KTitleBarActionsConfig(false, mSettings, this);
|
|
mTitleBarActions->setObjectName(QLatin1String("KWin TitleBar Actions"));
|
|
tab->addTab(mTitleBarActions, i18n("Titlebar A&ctions"));
|
|
connect(mTitleBarActions, qOverload<bool>(&KCModule::changed), this, qOverload<bool>(&KCModule::changed));
|
|
connect(mTitleBarActions, qOverload<bool>(&KCModule::defaulted), this, qOverload<bool>(&KCModule::defaulted));
|
|
connect(this, &KCModule::defaultsIndicatorsVisibleChanged, mTitleBarActions, &KCModule::setDefaultsIndicatorsVisible);
|
|
|
|
mWindowActions = new KWindowActionsConfig(false, mSettings, this);
|
|
mWindowActions->setObjectName(QLatin1String("KWin Window Actions"));
|
|
tab->addTab(mWindowActions, i18n("W&indow Actions"));
|
|
connect(mWindowActions, qOverload<bool>(&KCModule::changed), this, qOverload<bool>(&KCModule::changed));
|
|
connect(mWindowActions, qOverload<bool>(&KCModule::defaulted), this, qOverload<bool>(&KCModule::defaulted));
|
|
connect(this, &KCModule::defaultsIndicatorsVisibleChanged, mWindowActions, &KCModule::setDefaultsIndicatorsVisible);
|
|
|
|
mMoving = new KMovingConfig(false, mSettings, this);
|
|
mMoving->setObjectName(QLatin1String("KWin Moving"));
|
|
tab->addTab(mMoving, i18n("Mo&vement"));
|
|
connect(mMoving, qOverload<bool>(&KCModule::changed), this, qOverload<bool>(&KCModule::changed));
|
|
connect(mMoving, qOverload<bool>(&KCModule::defaulted), this, qOverload<bool>(&KCModule::defaulted));
|
|
connect(this, &KCModule::defaultsIndicatorsVisibleChanged, mMoving, &KCModule::setDefaultsIndicatorsVisible);
|
|
|
|
mAdvanced = new KAdvancedConfig(false, mSettings, this);
|
|
mAdvanced->setObjectName(QLatin1String("KWin Advanced"));
|
|
tab->addTab(mAdvanced, i18n("Adva&nced"));
|
|
connect(mAdvanced, qOverload<bool>(&KCModule::changed), this, qOverload<bool>(&KCModule::changed));
|
|
connect(mAdvanced, qOverload<bool>(&KCModule::defaulted), this, qOverload<bool>(&KCModule::defaulted));
|
|
connect(this, &KCModule::defaultsIndicatorsVisibleChanged, mAdvanced, &KCModule::setDefaultsIndicatorsVisible);
|
|
KAboutData *about =
|
|
new KAboutData(QStringLiteral("kcmkwinoptions"), i18n("Window Behavior Configuration Module"),
|
|
QString(), QString(), KAboutLicense::GPL,
|
|
i18n("(c) 1997 - 2002 KWin and KControl Authors"));
|
|
|
|
about->addAuthor(i18n("Matthias Ettrich"), QString(), "ettrich@kde.org");
|
|
about->addAuthor(i18n("Waldo Bastian"), QString(), "bastian@kde.org");
|
|
about->addAuthor(i18n("Cristian Tibirna"), QString(), "tibirna@kde.org");
|
|
about->addAuthor(i18n("Matthias Kalle Dalheimer"), QString(), "kalle@kde.org");
|
|
about->addAuthor(i18n("Daniel Molkentin"), QString(), "molkentin@kde.org");
|
|
about->addAuthor(i18n("Wynn Wilkes"), QString(), "wynnw@caldera.com");
|
|
about->addAuthor(i18n("Pat Dowler"), QString(), "dowler@pt1B1106.FSH.UVic.CA");
|
|
about->addAuthor(i18n("Bernd Wuebben"), QString(), "wuebben@kde.org");
|
|
about->addAuthor(i18n("Matthias Hoelzer-Kluepfel"), QString(), "hoelzer@kde.org");
|
|
setAboutData(about);
|
|
}
|
|
|
|
void KWinOptions::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()
|
|
{
|
|
mFocus->save();
|
|
mTitleBarActions->save();
|
|
mWindowActions->save();
|
|
mMoving->save();
|
|
mAdvanced->save();
|
|
|
|
emit KCModule::changed(false);
|
|
|
|
// Send signal to all kwin instances
|
|
QDBusMessage message =
|
|
QDBusMessage::createSignal("/KWin", "org.kde.KWin", "reloadConfig");
|
|
QDBusConnection::sessionBus().send(message);
|
|
}
|
|
|
|
|
|
void KWinOptions::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();
|
|
}
|
|
|
|
QString KWinOptions::quickHelp() const
|
|
{
|
|
return i18n("<p><h1>Window Behavior</h1> Here you can customize the way windows behave when being"
|
|
" moved, resized or clicked on. You can also specify a focus policy as well as a placement"
|
|
" policy for new windows.</p>"
|
|
" <p>Please note that this configuration will not take effect if you do not use"
|
|
" KWin as your window manager. If you do use a different window manager, please refer to its documentation"
|
|
" for how to customize window behavior.</p>");
|
|
}
|
|
|
|
KActionsOptions::KActionsOptions(QWidget *parent, const QVariantList &)
|
|
: KCModule(parent)
|
|
{
|
|
mSettings = new KWinOptionsSettings(this);
|
|
|
|
QVBoxLayout *layout = new QVBoxLayout(this);
|
|
layout->setContentsMargins(0, 0, 0, 0);
|
|
tab = new QTabWidget(this);
|
|
layout->addWidget(tab);
|
|
|
|
mTitleBarActions = new KTitleBarActionsConfig(false, mSettings, this);
|
|
mTitleBarActions->setObjectName(QLatin1String("KWin TitleBar Actions"));
|
|
tab->addTab(mTitleBarActions, i18n("&Titlebar Actions"));
|
|
connect(mTitleBarActions, qOverload<bool>(&KCModule::changed), this, qOverload<bool>(&KCModule::changed));
|
|
connect(mTitleBarActions, qOverload<bool>(&KCModule::defaulted), this, qOverload<bool>(&KCModule::defaulted));
|
|
|
|
mWindowActions = new KWindowActionsConfig(false, mSettings, this);
|
|
mWindowActions->setObjectName(QLatin1String("KWin Window Actions"));
|
|
tab->addTab(mWindowActions, i18n("Window Actio&ns"));
|
|
connect(mWindowActions, qOverload<bool>(&KCModule::changed), this, qOverload<bool>(&KCModule::changed));
|
|
connect(mWindowActions, qOverload<bool>(&KCModule::defaulted), this, qOverload<bool>(&KCModule::defaulted));
|
|
}
|
|
|
|
void KActionsOptions::load()
|
|
{
|
|
mTitleBarActions->load();
|
|
mWindowActions->load();
|
|
}
|
|
|
|
void KActionsOptions::save()
|
|
{
|
|
mTitleBarActions->save();
|
|
mWindowActions->save();
|
|
|
|
emit KCModule::changed(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)
|
|
{
|
|
emit KCModule::changed(state);
|
|
}
|
|
|
|
K_PLUGIN_FACTORY_DEFINITION(KWinOptionsFactory,
|
|
registerPlugin<KActionsOptions>("kwinactions");
|
|
registerPlugin<KFocusConfigStandalone>("kwinfocus");
|
|
registerPlugin<KMovingConfigStandalone>("kwinmoving");
|
|
registerPlugin<KAdvancedConfigStandalone>("kwinadvanced");
|
|
registerPlugin<KWinOptions>("kwinoptions");
|
|
)
|
|
|
|
#include "main.moc"
|