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,12 +66,16 @@ GlobalConfig::GlobalConfig(GlobalConfig* fallback, const QString& filePath, QObj
|
||||||
, m_services(new ServiceConfig(this))
|
, m_services(new ServiceConfig(this))
|
||||||
, m_paths(new UserPaths(this)) {
|
, m_paths(new UserPaths(this)) {
|
||||||
setSparse(true);
|
setSparse(true);
|
||||||
|
if (!filePath.isEmpty())
|
||||||
setupFileBackend(filePath);
|
setupFileBackend(filePath);
|
||||||
|
if (fallback)
|
||||||
syncFromGlobal(fallback);
|
syncFromGlobal(fallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
GlobalConfig::~GlobalConfig() {
|
GlobalConfig::~GlobalConfig() {
|
||||||
// Clear global instance
|
if (m_defaults)
|
||||||
|
m_defaults->deleteLater();
|
||||||
|
if (s_instance == this)
|
||||||
s_instance = nullptr;
|
s_instance = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -79,6 +83,12 @@ GlobalConfig* GlobalConfig::instance() {
|
||||||
return s_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() {
|
void GlobalConfig::bindAppearanceTokens() {
|
||||||
if (m_tokensBound)
|
if (m_tokensBound)
|
||||||
return;
|
return;
|
||||||
|
|
|
||||||
|
|
@ -47,6 +47,7 @@ class GlobalConfig : public ConfigObject {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static GlobalConfig* instance();
|
static GlobalConfig* instance();
|
||||||
|
[[nodiscard]] Q_INVOKABLE GlobalConfig* defaults();
|
||||||
static GlobalConfig* create(QQmlEngine*, QJSEngine*);
|
static GlobalConfig* create(QQmlEngine*, QJSEngine*);
|
||||||
|
|
||||||
Q_INVOKABLE void save();
|
Q_INVOKABLE void save();
|
||||||
|
|
@ -59,8 +60,9 @@ public:
|
||||||
private:
|
private:
|
||||||
friend class MonitorConfigManager;
|
friend class MonitorConfigManager;
|
||||||
explicit GlobalConfig(QObject* parent = nullptr);
|
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;
|
bool m_tokensBound = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -55,11 +55,16 @@ TokenConfig::TokenConfig(TokenConfig* fallback, const QString& filePath, QObject
|
||||||
, m_winfo(new WInfoTokens(this))
|
, m_winfo(new WInfoTokens(this))
|
||||||
, m_controlCenter(new ControlCenterTokens(this)) {
|
, m_controlCenter(new ControlCenterTokens(this)) {
|
||||||
setSparse(true);
|
setSparse(true);
|
||||||
|
if (!filePath.isEmpty())
|
||||||
setupFileBackend(filePath);
|
setupFileBackend(filePath);
|
||||||
|
if (fallback)
|
||||||
syncFromGlobal(fallback);
|
syncFromGlobal(fallback);
|
||||||
}
|
}
|
||||||
|
|
||||||
TokenConfig::~TokenConfig() {
|
TokenConfig::~TokenConfig() {
|
||||||
|
if (m_defaults)
|
||||||
|
m_defaults->deleteLater();
|
||||||
|
if (s_instance == this)
|
||||||
s_instance = nullptr;
|
s_instance = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -67,6 +72,12 @@ TokenConfig* TokenConfig::instance() {
|
||||||
return s_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*) {
|
TokenConfig* TokenConfig::create(QQmlEngine* engine, QJSEngine*) {
|
||||||
return new TokenConfig(engine);
|
return new TokenConfig(engine);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -309,6 +309,7 @@ class TokenConfig : public ConfigObject {
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static TokenConfig* instance();
|
static TokenConfig* instance();
|
||||||
|
[[nodiscard]] Q_INVOKABLE TokenConfig* defaults();
|
||||||
static TokenConfig* create(QQmlEngine*, QJSEngine*);
|
static TokenConfig* create(QQmlEngine*, QJSEngine*);
|
||||||
|
|
||||||
Q_INVOKABLE void save();
|
Q_INVOKABLE void save();
|
||||||
|
|
@ -319,7 +320,9 @@ public:
|
||||||
private:
|
private:
|
||||||
friend class MonitorConfigManager;
|
friend class MonitorConfigManager;
|
||||||
explicit TokenConfig(QObject* parent = nullptr);
|
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 {
|
class Tokens : public QObject {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue