DtkCore
DTK Core module
dconfig.h
浏览该文件的文档.
1// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DCONFIG_H
6#define DCONFIG_H
7
8#include <dtkcore_global.h>
9#include <DObject>
10
11#include <QObject>
12#include <QVariant>
13
14DCORE_BEGIN_NAMESPACE
16public:
17 virtual ~DConfigBackend();
18 virtual bool isValid() const = 0;
19 virtual bool load(const QString &/*appId*/) = 0;
20 virtual QStringList keyList() const = 0;
21 virtual QVariant value(const QString &/*key*/, const QVariant &/*fallback*/) const = 0;
22 virtual void setValue(const QString &/*key*/, const QVariant &/*value*/) = 0;
23 virtual void reset(const QString &key) { setValue(key, QVariant());}
24 virtual QString name() const {return QString("");}
25};
26
27class DConfigPrivate;
28class LIBDTKCORESHARED_EXPORT DConfig : public QObject, public DObject
29{
30 Q_OBJECT
31 D_DECLARE_PRIVATE(DConfig)
32
33 Q_PROPERTY(QStringList keyList READ keyList FINAL)
34
35public:
36 explicit DConfig(const QString &name, const QString &subpath = QString(),
37 QObject *parent = nullptr);
38
39 explicit DConfig(DConfigBackend *backend, const QString &name, const QString &subpath = QString(),
40 QObject *parent = nullptr);
41
42 static DConfig *create(const QString &appId, const QString &name, const QString &subpath = QString(),
43 QObject *parent = nullptr);
44 static DConfig *create(DConfigBackend *backend, const QString &appId, const QString &name, const QString &subpath = QString(),
45 QObject *parent = nullptr);
46
47 QString backendName() const;
48
49 QStringList keyList() const;
50
51 bool isValid() const;
52 QVariant value(const QString &key, const QVariant &fallback = QVariant()) const;
53 void setValue(const QString &key, const QVariant &value);
54 void reset(const QString &key);
55
56 QString name() const;
57 QString subpath() const;
58
59Q_SIGNALS:
60 void valueChanged(const QString &key);
61
62private:
63 explicit DConfig(DConfigBackend *backend, const QString &appId, const QString &name, const QString &subpath,
64 QObject *parent = nullptr);
65};
66
67DCORE_END_NAMESPACE
68
69#endif // DCONFIG_H
配置后端的抽象接口。
Definition: dconfig.h:15
virtual ~DConfigBackend()
DConfigBackend析构函数
virtual void setValue(const QString &, const QVariant &)=0
根据配置项名称设置其值
virtual QStringList keyList() const =0
获得所有可用的配置项名称
virtual bool isValid() const =0
判断此后端是否可用
virtual bool load(const QString &)=0
初始化后端
virtual void reset(const QString &key)
设置其配置项对应的默认值,此值为经过override机制覆盖后的值,不一定为此配置文件中meta中定义的值。
Definition: dconfig.h:23
virtual QVariant value(const QString &, const QVariant &) const =0
根据配置项名称获得对应值
DConfig的私有实现
配置策略提供的接口类
Definition: dconfig.h:29
void setValue(const QString &key, const QVariant &value)
根据配置项名称设置其值
QString subpath() const
返回配置文件对应的子目录
static DConfig * create(const QString &appId, const QString &name, const QString &subpath=QString(), QObject *parent=nullptr)
构造配置策略提供的对象,指定配置所属的应用Id。
QString backendName() const
配置策略后端名称
QVariant value(const QString &key, const QVariant &fallback=QVariant()) const
根据配置项名称获得对应值
QString name() const
返回配置文件名称
static DConfig * create(DConfigBackend *backend, const QString &appId, const QString &name, const QString &subpath=QString(), QObject *parent=nullptr)
构造配置策略提供的对象,指定配置所属的应用Id。
void reset(const QString &key)
设置其配置项对应的默认值,此值为经过override机制覆盖后的值,不一定为此配置文件中meta中定义的值
bool isValid() const
判断此后端是否可用
Definition: dobject.h:25