#pragma once #include #include class ConfigHelper { public: static ConfigHelper& instance(); QString getValue(const QString& section, const QString& key) const; bool setValue(const QString& section, const QString& key, const QString& value); QString configPath() const; QString productConfigPath() const; QString stateLocation() const; QString installRoot() const; QString runtimeRoot() const; QString updateRoot() const; QString runtimeRelativePath() const; QString lastError() const; private: ConfigHelper(); bool loadProductConfig(); bool migrateLegacyStateIfNeeded(); bool initializeStateDefaults(); QString stateStorageKey(const QString& key) const; QString stateValue(const QString& key) const; bool writeStateValue(const QString& key, const QString& value); static bool isMutableKey(const QString& key); QString m_productConfigPath; QString m_statePrefix; QJsonObject m_productConfig; QJsonObject m_initialState; QString m_error; };