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};
27
28class DConfigPrivate;
29class LIBDTKCORESHARED_EXPORT DConfig : public QObject, public DObject
30{
31 Q_OBJECT
32 D_DECLARE_PRIVATE(DConfig)
33
34 Q_PROPERTY(QStringList keyList READ keyList FINAL)
35
36public:
37 explicit DConfig(const QString &name, const QString &subpath = QString(),
38 QObject *parent = nullptr);
39
40 explicit DConfig(DConfigBackend *backend, const QString &name, const QString &subpath = QString(),
41 QObject *parent = nullptr);
42
43 static DConfig *create(const QString &appId, const QString &name, const QString &subpath = QString(),
44 QObject *parent = nullptr);
45 static DConfig *create(DConfigBackend *backend, const QString &appId, const QString &name, const QString &subpath = QString(),
46 QObject *parent = nullptr);
47 static DConfig *createGeneric(const QString &name, const QString &subpath = QString(),
48 QObject *parent = nullptr);
49 static DConfig *createGeneric(DConfigBackend *backend, const QString &name, const QString &subpath = QString(),
50 QObject *parent = nullptr);
51
52 static void setAppId(const QString &appId);
53
54 QString backendName() const;
55
56 QStringList keyList() const;
57
58 bool isValid() const;
59 bool isDefaultValue(const QString &key) const;
60 QVariant value(const QString &key, const QVariant &fallback = QVariant()) const;
61 void setValue(const QString &key, const QVariant &value);
62 void reset(const QString &key);
63
64 QString name() const;
65 QString subpath() const;
66
67Q_SIGNALS:
68 void valueChanged(const QString &key);
69
70private:
71 explicit DConfig(DConfigBackend *backend, const QString &appId, const QString &name, const QString &subpath,
72 QObject *parent = nullptr);
73};
74
75DCORE_END_NAMESPACE
76
77#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 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:30
Definition dobject.h:25