feat: expose default configs to qml
This commit is contained in:
parent
08cc492698
commit
a53aff357a
4 changed files with 35 additions and 9 deletions
|
|
@ -66,19 +66,29 @@ GlobalConfig::GlobalConfig(GlobalConfig* fallback, const QString& filePath, QObj
|
|||
, m_services(new ServiceConfig(this))
|
||||
, m_paths(new UserPaths(this)) {
|
||||
setSparse(true);
|
||||
setupFileBackend(filePath);
|
||||
syncFromGlobal(fallback);
|
||||
if (!filePath.isEmpty())
|
||||
setupFileBackend(filePath);
|
||||
if (fallback)
|
||||
syncFromGlobal(fallback);
|
||||
}
|
||||
|
||||
GlobalConfig::~GlobalConfig() {
|
||||
// Clear global instance
|
||||
s_instance = nullptr;
|
||||
if (m_defaults)
|
||||
m_defaults->deleteLater();
|
||||
if (s_instance == this)
|
||||
s_instance = nullptr;
|
||||
}
|
||||
|
||||
GlobalConfig* GlobalConfig::instance() {
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
GlobalConfig* GlobalConfig::defaults() {
|
||||
if (!m_defaults)
|
||||
m_defaults = new GlobalConfig(nullptr, QString()); // Non-singleton constructor
|
||||
return m_defaults;
|
||||
}
|
||||
|
||||
void GlobalConfig::bindAppearanceTokens() {
|
||||
if (m_tokensBound)
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -47,6 +47,7 @@ class GlobalConfig : public ConfigObject {
|
|||
|
||||
public:
|
||||
static GlobalConfig* instance();
|
||||
[[nodiscard]] Q_INVOKABLE GlobalConfig* defaults();
|
||||
static GlobalConfig* create(QQmlEngine*, QJSEngine*);
|
||||
|
||||
Q_INVOKABLE void save();
|
||||
|
|
@ -59,8 +60,9 @@ public:
|
|||
private:
|
||||
friend class MonitorConfigManager;
|
||||
explicit GlobalConfig(QObject* parent = nullptr);
|
||||
explicit GlobalConfig(GlobalConfig* fallback, const QString& filePath, QObject* parent);
|
||||
explicit GlobalConfig(GlobalConfig* fallback, const QString& filePath, QObject* parent = nullptr);
|
||||
|
||||
GlobalConfig* m_defaults = nullptr;
|
||||
bool m_tokensBound = false;
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -55,18 +55,29 @@ TokenConfig::TokenConfig(TokenConfig* fallback, const QString& filePath, QObject
|
|||
, m_winfo(new WInfoTokens(this))
|
||||
, m_controlCenter(new ControlCenterTokens(this)) {
|
||||
setSparse(true);
|
||||
setupFileBackend(filePath);
|
||||
syncFromGlobal(fallback);
|
||||
if (!filePath.isEmpty())
|
||||
setupFileBackend(filePath);
|
||||
if (fallback)
|
||||
syncFromGlobal(fallback);
|
||||
}
|
||||
|
||||
TokenConfig::~TokenConfig() {
|
||||
s_instance = nullptr;
|
||||
if (m_defaults)
|
||||
m_defaults->deleteLater();
|
||||
if (s_instance == this)
|
||||
s_instance = nullptr;
|
||||
}
|
||||
|
||||
TokenConfig* TokenConfig::instance() {
|
||||
return s_instance;
|
||||
}
|
||||
|
||||
TokenConfig* TokenConfig::defaults() {
|
||||
if (!m_defaults)
|
||||
m_defaults = new TokenConfig(nullptr, QString()); // Non-singleton constructor
|
||||
return m_defaults;
|
||||
}
|
||||
|
||||
TokenConfig* TokenConfig::create(QQmlEngine* engine, QJSEngine*) {
|
||||
return new TokenConfig(engine);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -309,6 +309,7 @@ class TokenConfig : public ConfigObject {
|
|||
|
||||
public:
|
||||
static TokenConfig* instance();
|
||||
[[nodiscard]] Q_INVOKABLE TokenConfig* defaults();
|
||||
static TokenConfig* create(QQmlEngine*, QJSEngine*);
|
||||
|
||||
Q_INVOKABLE void save();
|
||||
|
|
@ -319,7 +320,9 @@ public:
|
|||
private:
|
||||
friend class MonitorConfigManager;
|
||||
explicit TokenConfig(QObject* parent = nullptr);
|
||||
explicit TokenConfig(TokenConfig* fallback, const QString& filePath, QObject* parent);
|
||||
explicit TokenConfig(TokenConfig* fallback, const QString& filePath, QObject* parent = nullptr);
|
||||
|
||||
TokenConfig* m_defaults = nullptr;
|
||||
};
|
||||
|
||||
class Tokens : public QObject {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue