a-la-karte/src/config.h
Marco Allegretti 747b02035a alakarte: Initial import
Initial release of A-La-Karte, a unified game launcher for KDE Plasma.

Includes the QML UI, platform importers, AppStream metadata, icons,

and developer documentation.
2026-01-18 13:13:07 +01:00

140 lines
4.8 KiB
C++

// 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(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)
explicit Config(QObject *parent = nullptr);
ViewMode viewMode() const;
void setViewMode(ViewMode 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 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;
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;
};