File indexing completed on 2024-05-12 05:38:24

0001 /*
0002     SPDX-FileCopyrightText: 2010 Aaron Seigo <aseigo@kde.org>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 #pragma once
0008 
0009 #include <QJSValue>
0010 #include <QObject>
0011 #include <QWeakPointer>
0012 
0013 #include <kconfiggroup.h>
0014 
0015 namespace Plasma
0016 {
0017 class Applet;
0018 } // namespace Plasma
0019 
0020 namespace WorkspaceScripting
0021 {
0022 class ScriptEngine;
0023 
0024 class Applet : public QObject
0025 {
0026     Q_OBJECT
0027     Q_PROPERTY(QStringList currentConfigGroup WRITE setCurrentConfigGroup READ currentConfigGroup)
0028 
0029 public:
0030     explicit Applet(ScriptEngine *parent);
0031     ~Applet() override;
0032 
0033     QStringList configKeys() const;
0034     QStringList configGroups() const;
0035 
0036     void setCurrentConfigGroup(const QStringList &groupNames);
0037     QStringList currentConfigGroup() const;
0038 
0039     QStringList globalConfigKeys() const;
0040     QStringList globalConfigGroups() const;
0041 
0042     void setCurrentGlobalConfigGroup(const QStringList &groupNames);
0043     QStringList currentGlobalConfigGroup() const;
0044 
0045     QString version() const;
0046 
0047     void setLocked(bool locked);
0048     bool locked() const;
0049 
0050     virtual Plasma::Applet *applet() const;
0051 
0052     ScriptEngine *engine() const;
0053 
0054 protected:
0055     void reloadConfigIfNeeded();
0056 
0057 public Q_SLOTS:
0058     virtual QVariant readConfig(const QString &key, const QJSValue &def = QString()) const;
0059     virtual void writeConfig(const QString &key, const QJSValue &value);
0060     virtual QVariant readGlobalConfig(const QString &key, const QJSValue &def = QString()) const;
0061     virtual void writeGlobalConfig(const QString &key, const QJSValue &value);
0062     virtual void reloadConfig();
0063 
0064 private:
0065     class Private;
0066     Private *const d;
0067 };
0068 
0069 }