DtkCore
DTK Core module
dconfigfile.h
浏览该文件的文档.
1// SPDX-FileCopyrightText: 2021 - 2022 UnionTech Software Technology Co., Ltd.
2//
3// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#ifndef DCONFIGFILE_H
6#define DCONFIGFILE_H
7
8#include <dtkcore_global.h>
9#include <DObject>
10#include <QStringList>
11#include <QFlags>
12#include <QVariant>
13#include <QLocale>
14#include <QJsonDocument>
15#include <QDebug>
16
17QT_BEGIN_NAMESPACE
18class QIODevice;
19QT_END_NAMESPACE
20
21DCORE_BEGIN_NAMESPACE
22
23class DConfigMeta;
24class DConfigCache;
25class DConfigFilePrivate;
26class LIBDTKCORESHARED_EXPORT DConfigFile : public DObject{
27 D_DECLARE_PRIVATE(DConfigFile)
28public:
29 enum Flag {
30 NoOverride = 1 << 0,
31 Global = 1 << 1
32 };
33 Q_DECLARE_FLAGS(Flags, Flag)
34
36 ReadOnly,
37 ReadWrite
38 };
39
41 Private,
42 Public
43 };
44
45 struct Version {
46 quint16 major;
47 quint16 minor;
48 };
49
50 static constexpr Version supportedVersion();
51
52 explicit DConfigFile(const QString &appId, const QString &name,
53 const QString &subpath = QString());
54 explicit DConfigFile(const DConfigFile &other);
55
56 bool load(const QString &localPrefix = QString());
57 bool load(QIODevice *meta, const QList<QIODevice*> &overrides);
58
59 bool save(const QString &localPrefix = QString(), QJsonDocument::JsonFormat format = QJsonDocument::Indented,
60 bool sync = false) const;
61
62 bool isValid() const;
63 QVariant value(const QString &key, DConfigCache *userCache = nullptr) const;
64 bool setValue(const QString &key, const QVariant &value, const QString &callerAppid,
65 DConfigCache *userCache = nullptr);
66
67 DConfigCache *createUserCache(const uint uid);
69
71
72protected:
73 friend QDebug operator<<(QDebug, const DConfigFile &);
74};
75
76class LIBDTKCORESHARED_EXPORT DConfigMeta {
77public:
78 virtual ~DConfigMeta();
79 virtual DConfigFile::Version version() const = 0;
80 virtual void setVersion(quint16 major, quint16 minor) = 0;
81
82 virtual bool load(const QString &localPrefix = QString()) = 0;
83
84 virtual bool load(QIODevice *meta, const QList<QIODevice*> &overrides) = 0;
85
86 virtual QStringList keyList() const = 0;
87 virtual DConfigFile::Flags flags(const QString &key) const = 0;
88 virtual DConfigFile::Permissions permissions(const QString &key) const = 0;
89 virtual DConfigFile::Visibility visibility(const QString &key) const = 0;
90 virtual int serial(const QString &key) const = 0;
91
92 virtual QString displayName(const QString &key, const QLocale &locale) = 0;
93 virtual QString description(const QString &key, const QLocale &locale) = 0;
94
95 virtual QString metaPath(const QString &localPrefix = QString(), bool *useAppId = nullptr) const = 0;
96 virtual QStringList allOverrideDirs(const bool useAppId, const QString &prefix = QString()) const = 0;
97
98 virtual QVariant value(const QString &key) const = 0;
99};
100
101class LIBDTKCORESHARED_EXPORT DConfigCache {
102public:
103 virtual ~DConfigCache();
104
105 virtual bool load(const QString &localPrefix = QString()) = 0;
106 virtual bool save(const QString &localPrefix = QString(),
107 QJsonDocument::JsonFormat format = QJsonDocument::Indented, bool sync = false) = 0;
108 virtual bool isGlobal() const = 0;
109
110 virtual void remove(const QString &key) = 0;
111 virtual QStringList keyList() const = 0;
112 virtual bool setValue(const QString &key, const QVariant &value, const int serial,
113 const uint uid, const QString &callerAppid) = 0;
114 virtual QVariant value(const QString &key) const = 0;
115 virtual int serial(const QString &key) const = 0;
116 virtual uint uid() const = 0;
117};
118
119#ifndef QT_NO_DEBUG_STREAM
120Q_CORE_EXPORT QDebug operator<<(QDebug, const DConfigFile &);
121#endif
122
123Q_DECLARE_OPERATORS_FOR_FLAGS(DConfigFile::Flags)
124
125DCORE_END_NAMESPACE
126
127#endif // DCONFIGFILE_H
提供配置文件的用户和全局运行缓存访问接口
Definition: dconfigfile.h:101
virtual bool setValue(const QString &key, const QVariant &value, const int serial, const uint uid, const QString &callerAppid)=0
设置缓存中的值
virtual bool save(const QString &localPrefix=QString(), QJsonDocument::JsonFormat format=QJsonDocument::Indented, bool sync=false)=0
保存缓存的值到磁盘中
virtual void remove(const QString &key)=0
删除缓存中的配置项
virtual QStringList keyList() const =0
返回配置内容的所有配置项
virtual int serial(const QString &key) const =0
返回配置项的单调递增值
virtual bool isGlobal() const =0
是否是全局缓存
virtual QVariant value(const QString &key) const =0
获取缓存中的值
virtual uint uid() const =0
用户标识,为全局缓存时,uid为非用户标识的特定值
virtual bool load(const QString &localPrefix=QString())=0
解析缓存配置文件
规范配置文件读写的相关接口的配置文件实现
Definition: dconfigfile.h:26
bool isValid() const
检测配置文件是否有效
bool load(QIODevice *meta, const QList< QIODevice * > &overrides)
解析配置文件流
static constexpr Version supportedVersion()
支持的版本
bool load(const QString &localPrefix=QString())
解析配置文件
bool setValue(const QString &key, const QVariant &value, const QString &callerAppid, DConfigCache *userCache=nullptr)
设置缓存中的值
DConfigFile(const QString &appId, const QString &name, const QString &subpath=QString())
DConfigFile构造函数,构造配置文件管理对象。
DConfigCache * createUserCache(const uint uid)
创建用户缓存
Flag
配置项名称
Definition: dconfigfile.h:29
DConfigFile(const DConfigFile &other)
DConfigFile构造函数,构造配置文件管理对象。
DConfigMeta * meta()
返回原型对象
QVariant value(const QString &key, DConfigCache *userCache=nullptr) const
DConfigFile::value
bool save(const QString &localPrefix=QString(), QJsonDocument::JsonFormat format=QJsonDocument::Indented, bool sync=false) const
保存缓存的值到磁盘中
DConfigCache * globalCache() const
返回全局缓存
Permissions
配置项的权限
Definition: dconfigfile.h:35
Visibility
配置项的可见性
Definition: dconfigfile.h:40
提供配置文件的原型和覆盖机制的访问接口
Definition: dconfigfile.h:76
virtual DConfigFile::Visibility visibility(const QString &key) const =0
返回指定配置项的可见性
virtual DConfigFile::Flags flags(const QString &key) const =0
返回指定配置项的特性
virtual bool load(QIODevice *meta, const QList< QIODevice * > &overrides)=0
解析配置文件流
virtual DConfigFile::Version version() const =0
返回配置版本信息
virtual QString metaPath(const QString &localPrefix=QString(), bool *useAppId=nullptr) const =0
返回描述文件的路径
virtual QVariant value(const QString &key) const =0
meta初始值经过覆盖机制覆盖后的原始值
virtual DConfigFile::Permissions permissions(const QString &key) const =0
返回指定配置项的权限
virtual int serial(const QString &key) const =0
返回配置项的单调递增值
virtual QStringList allOverrideDirs(const bool useAppId, const QString &prefix=QString()) const =0
获得前缀为 prefix 目录的所有需要查找的覆盖机制目录
virtual bool load(const QString &localPrefix=QString())=0
解析配置文件
virtual QString description(const QString &key, const QLocale &locale)=0
返回指定配置项的描述信息
virtual QString displayName(const QString &key, const QLocale &locale)=0
返回指定配置项的显示名
virtual void setVersion(quint16 major, quint16 minor)=0
设置配置版本信息
virtual QStringList keyList() const =0
返回配置内容的所有配置项
Definition: dobject.h:25
版本信息
Definition: dconfigfile.h:45