// SPDX-License-Identifier: GPL-3.0-or-later // SPDX-FileCopyrightText: 2026 A-La-Karte Contributors #pragma once #include #include class Config : public QObject { Q_OBJECT QML_ELEMENT Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode NOTIFY viewModeChanged) Q_PROPERTY(UiMode uiMode READ uiMode WRITE setUiMode NOTIFY uiModeChanged) Q_PROPERTY(int gridSize READ gridSize WRITE setGridSize NOTIFY gridSizeChanged) Q_PROPERTY(bool showPlatformBadges READ showPlatformBadges WRITE setShowPlatformBadges NOTIFY showPlatformBadgesChanged) Q_PROPERTY(bool autoImportOnStartup READ autoImportOnStartup WRITE setAutoImportOnStartup NOTIFY autoImportOnStartupChanged) Q_PROPERTY(bool importSteam READ importSteam WRITE setImportSteam NOTIFY importSteamChanged) Q_PROPERTY(bool importLutris READ importLutris WRITE setImportLutris NOTIFY importLutrisChanged) Q_PROPERTY(bool importHeroic READ importHeroic WRITE setImportHeroic NOTIFY importHeroicChanged) Q_PROPERTY(bool importDesktop READ importDesktop WRITE setImportDesktop NOTIFY importDesktopChanged) Q_PROPERTY(bool importBottles READ importBottles WRITE setImportBottles NOTIFY importBottlesChanged) Q_PROPERTY(bool importFlatpak READ importFlatpak WRITE setImportFlatpak NOTIFY importFlatpakChanged) Q_PROPERTY(bool importItch READ importItch WRITE setImportItch NOTIFY importItchChanged) Q_PROPERTY(bool importLegendary READ importLegendary WRITE setImportLegendary NOTIFY importLegendaryChanged) Q_PROPERTY(bool importRetroArch READ importRetroArch WRITE setImportRetroArch NOTIFY importRetroArchChanged) Q_PROPERTY(bool exitAfterLaunch READ exitAfterLaunch WRITE setExitAfterLaunch NOTIFY exitAfterLaunchChanged) Q_PROPERTY(bool highQualityImages READ highQualityImages WRITE setHighQualityImages NOTIFY highQualityImagesChanged) Q_PROPERTY(bool animatedCovers READ animatedCovers WRITE setAnimatedCovers NOTIFY animatedCoversChanged) Q_PROPERTY(bool coverLaunchesGame READ coverLaunchesGame WRITE setCoverLaunchesGame NOTIFY coverLaunchesGameChanged) Q_PROPERTY(QString theme READ theme WRITE setTheme NOTIFY themeChanged) public: enum ViewMode { GridView, ListView, CompactView }; Q_ENUM(ViewMode) enum UiMode { Auto, Desktop, Couch }; Q_ENUM(UiMode) explicit Config(QObject *parent = nullptr); ViewMode viewMode() const; void setViewMode(ViewMode mode); UiMode uiMode() const; void setUiMode(UiMode mode); int gridSize() const; void setGridSize(int size); bool showPlatformBadges() const; void setShowPlatformBadges(bool show); bool autoImportOnStartup() const; void setAutoImportOnStartup(bool import); bool importSteam() const; void setImportSteam(bool import); bool importLutris() const; void setImportLutris(bool import); bool importHeroic() const; void setImportHeroic(bool import); bool importDesktop() const; void setImportDesktop(bool import); bool importBottles() const; void setImportBottles(bool import); bool importFlatpak() const; void setImportFlatpak(bool import); bool importItch() const; void setImportItch(bool import); bool importLegendary() const; void setImportLegendary(bool import); bool importRetroArch() const; void setImportRetroArch(bool import); bool exitAfterLaunch() const; void setExitAfterLaunch(bool exit); bool coverLaunchesGame() const; void setCoverLaunchesGame(bool launch); bool highQualityImages() const; void setHighQualityImages(bool hq); bool animatedCovers() const; void setAnimatedCovers(bool animated); QString theme() const; void setTheme(const QString &theme); Q_INVOKABLE void save(); Q_INVOKABLE void load(); Q_INVOKABLE void resetToDefaults(); Q_SIGNALS: void viewModeChanged(); void uiModeChanged(); void gridSizeChanged(); void showPlatformBadgesChanged(); void autoImportOnStartupChanged(); void importSteamChanged(); void importLutrisChanged(); void importHeroicChanged(); void importDesktopChanged(); void importBottlesChanged(); void importFlatpakChanged(); void importItchChanged(); void importLegendaryChanged(); void importRetroArchChanged(); void exitAfterLaunchChanged(); void highQualityImagesChanged(); void animatedCoversChanged(); void coverLaunchesGameChanged(); void themeChanged(); private: ViewMode m_viewMode = GridView; UiMode m_uiMode = Auto; int m_gridSize = 180; bool m_showPlatformBadges = true; bool m_autoImportOnStartup = false; bool m_importSteam = true; bool m_importLutris = true; bool m_importHeroic = true; bool m_importDesktop = true; bool m_importBottles = true; bool m_importFlatpak = true; bool m_importItch = true; bool m_importLegendary = true; bool m_importRetroArch = true; bool m_exitAfterLaunch = false; bool m_coverLaunchesGame = false; bool m_highQualityImages = true; bool m_animatedCovers = false; QString m_theme; };