File indexing completed on 2024-05-19 16:34:50

0001 /*
0002     KWin - the KDE window manager
0003     This file is part of the KDE project.
0004 
0005     SPDX-FileCopyrightText: 2013 Martin Gräßlin <mgraesslin@kde.org>
0006 
0007     SPDX-License-Identifier: GPL-2.0-or-later
0008 */
0009 
0010 #pragma once
0011 
0012 #include <KCModule>
0013 #include <KConfigGroup>
0014 #include <KPluginFactory>
0015 
0016 class KLocalizedTranslator;
0017 
0018 namespace KWin
0019 {
0020 
0021 class GenericScriptedConfigFactory : public KPluginFactory
0022 {
0023     Q_OBJECT
0024     Q_PLUGIN_METADATA(IID "org.kde.KPluginFactory" FILE "genericscriptedconfig.json")
0025     Q_INTERFACES(KPluginFactory)
0026 
0027 protected:
0028     QObject *create(const char *iface, QWidget *parentWidget, QObject *parent, const QVariantList &args, const QString &keyword) override;
0029 };
0030 
0031 class GenericScriptedConfig : public KCModule
0032 {
0033     Q_OBJECT
0034 
0035 public:
0036     GenericScriptedConfig(const QString &keyword, QWidget *parent, const QVariantList &args);
0037     ~GenericScriptedConfig() override;
0038 
0039 public Q_SLOTS:
0040     void save() override;
0041 
0042 protected:
0043     const QString &packageName() const;
0044     void createUi();
0045     virtual QString typeName() const = 0;
0046     virtual KConfigGroup configGroup() = 0;
0047     virtual void reload();
0048 
0049 private:
0050     QString m_packageName;
0051     KLocalizedTranslator *m_translator;
0052 };
0053 
0054 class ScriptedEffectConfig : public GenericScriptedConfig
0055 {
0056     Q_OBJECT
0057 public:
0058     ScriptedEffectConfig(const QString &keyword, QWidget *parent, const QVariantList &args);
0059     ~ScriptedEffectConfig() override;
0060 
0061 protected:
0062     QString typeName() const override;
0063     KConfigGroup configGroup() override;
0064     void reload() override;
0065 };
0066 
0067 class ScriptingConfig : public GenericScriptedConfig
0068 {
0069     Q_OBJECT
0070 public:
0071     ScriptingConfig(const QString &keyword, QWidget *parent, const QVariantList &args);
0072     ~ScriptingConfig() override;
0073 
0074 protected:
0075     QString typeName() const override;
0076     KConfigGroup configGroup() override;
0077     void reload() override;
0078 };
0079 
0080 inline const QString &GenericScriptedConfig::packageName() const
0081 {
0082     return m_packageName;
0083 }
0084 
0085 }