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 virtual bool isDefaultValue(const QString &/*key*/) const { return true; }
26 virtual bool isReadOnly(const QString &/*key*/) const { return false; }
27};
28
29class DConfigPrivate;
30class LIBDTKCORESHARED_EXPORT DConfig : public QObject, public DObject
31{
32 Q_OBJECT
33 D_DECLARE_PRIVATE(DConfig)
34
35 Q_PROPERTY(QStringList keyList READ keyList CONSTANT FINAL)
36
37public:
38 explicit DConfig(const QString &name, const QString &subpath = QString(),
39 QObject *parent = nullptr);
40
41 explicit DConfig(DConfigBackend *backend, const QString &name, const QString &subpath = QString(),
42 QObject *parent = nullptr);
43
44 static DConfig *create(const QString &appId, const QString &name, const QString &subpath = QString(),
45 QObject *parent = nullptr);
46 static DConfig *create(DConfigBackend *backend, const QString &appId, const QString &name, const QString &subpath = QString(),
47 QObject *parent = nullptr);
48 static DConfig *createGeneric(const QString &name, const QString &subpath = QString(),
49 QObject *parent = nullptr);
50 static DConfig *createGeneric(DConfigBackend *backend, const QString &name, const QString &subpath = QString(),
51 QObject *parent = nullptr);
52
53 static void setAppId(const QString &appId);
54 static QThread *globalThread();
55
56 QString backendName() const;
57
58 QStringList keyList() const;
59
60 bool isValid() const;
61 bool isDefaultValue(const QString &key) const;
62 QVariant value(const QString &key, const QVariant &fallback = QVariant()) const;
63 void setValue(const QString &key, const QVariant &value);
64 void reset(const QString &key);
65 bool isReadOnly(const QString &key) const;
66
67 QString name() const;
68 QString subpath() const;
69
70Q_SIGNALS:
71 void valueChanged(const QString &key);
72
73private:
74 explicit DConfig(DConfigBackend *backend, const QString &appId, const QString &name, const QString &subpath,
75 QObject *parent = nullptr);
76};
77
78DCORE_END_NAMESPACE
79
80#endif // DCONFIG_H
配置后端的抽象接口。
Definition dconfig.h:15
virtual ~DConfigBackend()
DConfigBackend析构函数
virtual QString name() const
后端配置的唯一标识
Definition dconfig.h:24
virtual void setValue(const QString &, const QVariant &)=0
根据配置项名称设置其值
virtual bool isDefaultValue(const QString &) const
检测指定配置项名称对应的值是否为默认值。
Definition dconfig.h:25
virtual bool isReadOnly(const QString &) const
检测指定配置项是否为只读
Definition dconfig.h:26
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:31
Definition dobject.h:25