/** * @file cache_settings.h * @ingroup Settings */ //! \todo Document this file. #ifndef SETTINGSCACHE_H #define SETTINGSCACHE_H #include #include #include #include #include inline Q_LOGGING_CATEGORY(SettingsCacheLog, "settings_cache"); class ReleaseChannel; #define DEFAULT_LANG_NAME "English" #define CLIENT_INFO_NOT_SET "notset" #define DEFAULT_FONT_SIZE 12 class CacheStorageSettings; class CardCounterSettings; class CardDatabaseSettings; class CardOverrideSettings; class CardsDisplaySettings; class ChatSettings; class CommanderBracketSettings; class DebugSettings; class DeckEditorSettings; class DownloadSettings; class GameFiltersSettings; class GameSettings; class InterfaceSettings; class LayoutsSettings; class MessageSettings; class PathsSettings; class PersonalSettings; class RecentsSettings; class ServersSettings; class ShortcutsSettings; class SoundSettings; class TabsSettings; class UpdatesSettings; class VisualDeckStorageSettings; class AppearanceSettings; class NetworkSettings; class QSettings; class SettingsCache : public ICardDatabasePathProvider, public INetworkSettingsProvider { Q_OBJECT signals: void themeChanged(); private: QSettings *settings = nullptr; ShortcutsSettings *shortcutsSettings = nullptr; CardDatabaseSettings *cardDatabaseSettings = nullptr; ServersSettings *serversSettings = nullptr; MessageSettings *messageSettings = nullptr; GameFiltersSettings *gameFiltersSettings = nullptr; LayoutsSettings *layoutsSettings = nullptr; DownloadSettings *downloadSettings = nullptr; RecentsSettings *recentsSettings = nullptr; CardOverrideSettings *cardOverrideSettings = nullptr; DebugSettings *debugSettings = nullptr; CardCounterSettings *cardCounterSettings = nullptr; TabsSettings *tabsSettings = nullptr; SoundSettings *soundSettings = nullptr; GameSettings *gameSettings = nullptr; ChatSettings *chatSettings = nullptr; CacheStorageSettings *cacheStorageSettings = nullptr; UpdatesSettings *updatesSettings = nullptr; PersonalSettings *personalSettings = nullptr; CardsDisplaySettings *cardsDisplaySettings = nullptr; InterfaceSettings *interfaceSettings = nullptr; DeckEditorSettings *deckEditorSettings = nullptr; PathsSettings *pathsSettings = nullptr; VisualDeckStorageSettings *visualDeckStorageSettings = nullptr; AppearanceSettings *appearanceSettings = nullptr; NetworkSettings *networkSettings = nullptr; CommanderBracketSettings *commanderBracketSettings = nullptr; QString themeName; QList releaseChannels; bool isPortableBuild; [[nodiscard]] QString getSafeConfigPath(QString configEntry, QString defaultPath) const; [[nodiscard]] QString getSafeConfigFilePath(QString configEntry, QString defaultPath) const; void loadPaths(); public: SettingsCache(); QString getDataPath(); QString getSettingsPath(); [[nodiscard]] QString getCachePath() const; [[nodiscard]] QString getNetworkCachePath() const; // ICardDatabasePathProvider - delegate to pathsSettings [[nodiscard]] QString getCustomCardDatabasePath() const override; [[nodiscard]] QString getCardDatabasePath() const override; [[nodiscard]] QString getSpoilerCardDatabasePath() const override; [[nodiscard]] QString getTokenDatabasePath() const override; // INetworkSettingsProvider - delegate to sub-objects [[nodiscard]] int getKeepAlive() const override; [[nodiscard]] int getTimeOut() const override; [[nodiscard]] bool getNotifyAboutUpdates() const override; void setKnownMissingFeatures(const QString &_knownMissingFeatures) override; [[nodiscard]] QString getKnownMissingFeatures() override; QString getClientID() override; [[nodiscard]] QString getThemeName() const { return themeName; } [[nodiscard]] ReleaseChannel *getUpdateReleaseChannel() const; [[nodiscard]] QList getUpdateReleaseChannels() const; [[nodiscard]] int getUpdateReleaseChannelIndex() const; [[nodiscard]] QStringList getCountries() const; [[nodiscard]] ShortcutsSettings &shortcuts() const; [[nodiscard]] CardDatabaseSettings &cardDatabase() const; [[nodiscard]] ServersSettings &servers() const; [[nodiscard]] MessageSettings &messages() const; [[nodiscard]] GameFiltersSettings &gameFilters() const; [[nodiscard]] LayoutsSettings &layouts() const; [[nodiscard]] DownloadSettings &downloads() const; [[nodiscard]] RecentsSettings &recents() const; [[nodiscard]] CardOverrideSettings &cardOverrides() const; [[nodiscard]] DebugSettings &debug() const; [[nodiscard]] CardCounterSettings &cardCounters() const; [[nodiscard]] TabsSettings &tabs() const; [[nodiscard]] SoundSettings &sound() const; [[nodiscard]] GameSettings &game() const; [[nodiscard]] ChatSettings &chat() const; [[nodiscard]] CacheStorageSettings &cacheStorage() const; [[nodiscard]] UpdatesSettings &updates() const; [[nodiscard]] PersonalSettings &personal() const; [[nodiscard]] CardsDisplaySettings &cardsDisplay() const; [[nodiscard]] InterfaceSettings &userInterface() const; [[nodiscard]] DeckEditorSettings &deckEditor() const; [[nodiscard]] PathsSettings &paths() const; [[nodiscard]] VisualDeckStorageSettings &visualDeckStorage() const; [[nodiscard]] AppearanceSettings &appearance() const; [[nodiscard]] NetworkSettings &network() const; [[nodiscard]] CommanderBracketSettings &commanderBrackets() const { return *commanderBracketSettings; } [[nodiscard]] bool getIsPortableBuild() const { return isPortableBuild; } static SettingsCache &instance(); void resetPaths(); public slots: void setThemeName(const QString &_themeName); }; #endif