9#include <KDecoration2/DecorationButton>
10#include <KLocalizedString>
11#include <KLocalizedTranslator>
12#include <KPluginFactory>
14#include <QCoreApplication>
25ConfigurationModule::ConfigurationModule(QObject *parent,
const KPluginMetaData &data,
const QVariantList &args)
26 : KCModule(parent, data)
27 , m_theme(findTheme(args))
28 , m_buttonSize(int(
KDecoration2::BorderSize::Normal) - s_indexMapper)
33void ConfigurationModule::init()
35 if (m_theme.startsWith(QLatin1String(
"__aurorae__svg__"))) {
43void ConfigurationModule::initSvg()
45 QWidget *form =
new QWidget(widget());
46 form->setLayout(
new QHBoxLayout(form));
47 QComboBox *sizes =
new QComboBox(form);
48 sizes->addItem(i18nc(
"@item:inlistbox Button size:",
"Tiny"));
49 sizes->addItem(i18nc(
"@item:inlistbox Button size:",
"Normal"));
50 sizes->addItem(i18nc(
"@item:inlistbox Button size:",
"Large"));
51 sizes->addItem(i18nc(
"@item:inlistbox Button size:",
"Very Large"));
52 sizes->addItem(i18nc(
"@item:inlistbox Button size:",
"Huge"));
53 sizes->addItem(i18nc(
"@item:inlistbox Button size:",
"Very Huge"));
54 sizes->addItem(i18nc(
"@item:inlistbox Button size:",
"Oversized"));
55 sizes->setObjectName(QStringLiteral(
"kcfg_ButtonSize"));
57 QLabel *label =
new QLabel(i18n(
"Button size:"), form);
58 label->setBuddy(sizes);
59 form->layout()->addWidget(label);
60 form->layout()->addWidget(sizes);
62 widget()->setLayout(
new QVBoxLayout);
63 widget()->layout()->addWidget(form);
65 KCoreConfigSkeleton *skel =
new KCoreConfigSkeleton(KSharedConfig::openConfig(QStringLiteral(
"auroraerc")),
this);
66 skel->setCurrentGroup(m_theme.mid(16));
67 skel->addItemInt(QStringLiteral(
"ButtonSize"),
69 int(KDecoration2::BorderSize::Normal) - s_indexMapper,
70 QStringLiteral(
"ButtonSize"));
71 addConfig(skel, form);
74void ConfigurationModule::initQml()
76 const QString packageRoot = QStandardPaths::locate(QStandardPaths::GenericDataLocation,
77 QLatin1String(
"kwin/decorations/") + m_theme,
78 QStandardPaths::LocateDirectory);
79 if (packageRoot.isEmpty()) {
83 const KPluginMetaData metaData = KPluginMetaData::fromJsonFile(packageRoot + QLatin1String(
"/metadata.json"));
84 if (!metaData.isValid()) {
88 const QString xml = packageRoot + QLatin1String(
"/contents/config/main.xml");
89 const QString ui = packageRoot + QLatin1String(
"/contents/ui/config.ui");
90 if (!QFileInfo::exists(xml) || !QFileInfo::exists(ui)) {
94 KLocalizedTranslator *translator =
new KLocalizedTranslator(
this);
95 QCoreApplication::instance()->installTranslator(translator);
96 const QString translationDomain = metaData.value(
"X-KWin-Config-TranslationDomain");
97 if (!translationDomain.isEmpty()) {
98 translator->setTranslationDomain(translationDomain);
102 QFile configFile(xml);
103 KSharedConfigPtr auroraeConfig = KSharedConfig::openConfig(
"auroraerc");
104 KConfigGroup configGroup = auroraeConfig->group(m_theme);
105 m_skeleton =
new KConfigLoader(configGroup, &configFile,
this);
107 QUiLoader *loader =
new QUiLoader(
this);
108 loader->setLanguageChangeEnabled(
true);
110 uiFile.open(QFile::ReadOnly);
111 QWidget *customConfigForm = loader->load(&uiFile, widget());
112 translator->addContextToMonitor(customConfigForm->objectName());
114 widget()->setLayout(
new QVBoxLayout);
115 widget()->layout()->addWidget(customConfigForm);
117 addConfig(m_skeleton, customConfigForm);
120 QEvent le(QEvent::LanguageChange);
121 QCoreApplication::sendEvent(customConfigForm, &le);
126#include "auroraeconfig.moc"
128#include "moc_auroraeconfig.cpp"
K_PLUGIN_CLASS_WITH_JSON(KCMKWinRules, "kcm_kwinrules.json")