#ifndef THEME_REPOSITORY_H #define THEME_REPOSITORY_H #include "theme_meta.h" #include #include #include struct ThemeListEntry { QString id; QString displayName; ThemeVariant variant; bool isBuiltin; }; class ThemeRepository { public: explicit ThemeRepository(const QString &qrcPrefix, const QString &userThemesDir); QList availableThemes() const; bool contains(const QString &themeId) const; QJsonObject loadThemeJson(const QString &themeId) const; QString saveUserTheme(QJsonObject themeJson); bool deleteUserTheme(const QString &themeId); QString importThemeFromFile(const QString &filePath); void refresh(); private: QString qrcPrefix; QString userThemesDir; struct BuiltinEntry { QString id; QString resourcePath; ThemeMeta meta; }; QList builtins; struct UserEntry { QString id; QString filePath; ThemeMeta meta; }; QList userThemes; void scanBuiltins(); void scanUserThemes(); static ThemeMeta extractMeta(const QJsonObject &json); static QJsonObject readJsonFile(const QString &path); QString filePathForUserTheme(const QString &uuid) const; }; #endif // THEME_REPOSITORY_H