a-la-karte/src/config.h

154 lines
5.1 KiB
C
Raw Normal View History

// SPDX-License-Identifier: GPL-3.0-or-later
// SPDX-FileCopyrightText: 2026 A-La-Karte Contributors
#pragma once
#include <QObject>
#include <QQmlEngine>
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;
};