File indexing completed on 2024-05-12 05:38:24
0001 /* 0002 SPDX-FileCopyrightText: 2011-2012 Sebastian Kügler <sebas@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 <QVariant> 0012 0013 #include <KSharedConfig> 0014 0015 class KConfigGroup; 0016 class ConfigGroupPrivate; 0017 0018 class ConfigGroup : public QObject 0019 { 0020 Q_OBJECT 0021 Q_PROPERTY(QString file READ file WRITE setFile NOTIFY fileChanged) 0022 Q_PROPERTY(QString group READ group WRITE setGroup NOTIFY groupChanged) 0023 Q_PROPERTY(QStringList keyList READ keyList NOTIFY keyListChanged) 0024 Q_PROPERTY(QStringList groupList READ groupList NOTIFY groupListChanged) 0025 0026 public: 0027 explicit ConfigGroup(QObject *parent = nullptr); 0028 ~ConfigGroup() override; 0029 0030 KConfigGroup *configGroup(); 0031 0032 KSharedConfigPtr config() const; 0033 void setConfig(KSharedConfigPtr config); 0034 QString file() const; 0035 void setFile(const QString &filename); 0036 QString group() const; 0037 void setGroup(const QString &groupname); 0038 QStringList keyList() const; 0039 QStringList groupList() const; 0040 0041 Q_INVOKABLE QVariant readEntry(const QString &key); 0042 Q_INVOKABLE bool writeEntry(const QString &key, const QJSValue &value); 0043 Q_INVOKABLE void deleteEntry(const QString &key); 0044 0045 Q_SIGNALS: 0046 void fileChanged(); 0047 void groupChanged(); 0048 void keyListChanged(); 0049 void groupListChanged(); 0050 0051 private: 0052 ConfigGroupPrivate *d; 0053 0054 bool readConfigFile(); 0055 0056 private Q_SLOTS: 0057 void sync(); 0058 };