// Copyright 2015 Dolphin Emulator Project // Licensed under GPLv2+ // Refer to the license.txt file included. #pragma once #include #include #include #include #include #include "Core/NetPlayClient.h" #include "Core/NetPlayServer.h" namespace Core { enum class State; } namespace DiscIO { enum class Language; } class GameListModel; class InputConfig; class QFont; // UI settings to be stored in the config directory. class Settings final : public QObject { Q_OBJECT public: Settings(const Settings&) = delete; Settings& operator=(const Settings&) = delete; Settings(Settings&&) = delete; Settings& operator=(Settings&&) = delete; static Settings& Instance(); static QSettings& GetQSettings(); // UI void SetThemeName(const QString& theme_name); void SetCurrentUserStyle(const QString& stylesheet_path); QString GetCurrentUserStyle() const; void SetUserStylesEnabled(bool enabled); bool AreUserStylesEnabled() const; bool IsLogVisible() const; void SetLogVisible(bool visible); bool IsLogConfigVisible() const; void SetLogConfigVisible(bool visible); bool IsControllerStateNeeded() const; void SetControllerStateNeeded(bool needed); void SetToolBarVisible(bool visible); bool IsToolBarVisible() const; void SetWidgetsLocked(bool visible); bool AreWidgetsLocked() const; // GameList QStringList GetPaths() const; void AddPath(const QString& path); void RemovePath(const QString& path); bool GetPreferredView() const; void SetPreferredView(bool list); QString GetDefaultGame() const; void SetDefaultGame(QString path); void ReloadPath(const QString& qpath); void ReloadTitleDB(); // Emulation int GetStateSlot() const; void SetStateSlot(int); bool IsBatchModeEnabled() const; void SetBatchModeEnabled(bool batch); // Graphics void SetHideCursor(bool hide_cursor); bool GetHideCursor() const; void SetKeepWindowOnTop(bool top); bool IsKeepWindowOnTopEnabled() const; // Audio int GetVolume() const; void SetVolume(int volume); void IncreaseVolume(int volume); void DecreaseVolume(int volume); // NetPlay NetPlayClient* GetNetPlayClient(); void ResetNetPlayClient(NetPlayClient* client = nullptr); NetPlayServer* GetNetPlayServer(); void ResetNetPlayServer(NetPlayServer* server = nullptr); // Cheats bool GetCheatsEnabled() const; void SetCheatsEnabled(bool enabled); // Debug void SetDebugModeEnabled(bool enabled); bool IsDebugModeEnabled() const; void SetRegistersVisible(bool enabled); bool IsRegistersVisible() const; void SetWatchVisible(bool enabled); bool IsWatchVisible() const; void SetBreakpointsVisible(bool enabled); bool IsBreakpointsVisible() const; void SetCodeVisible(bool enabled); bool IsCodeVisible() const; void SetMemoryVisible(bool enabled); bool IsMemoryVisible() const; void SetJITVisible(bool enabled); bool IsJITVisible() const; QFont GetDebugFont() const; void SetDebugFont(QFont font); // Auto-Update QString GetAutoUpdateTrack() const; void SetAutoUpdateTrack(const QString& mode); // Analytics bool IsAnalyticsEnabled() const; void SetAnalyticsEnabled(bool enabled); // Other GameListModel* GetGameListModel() const; signals: void ConfigChanged(); void EmulationStateChanged(Core::State new_state); void ThemeChanged(); void PathAdded(const QString&); void PathRemoved(const QString&); void DefaultGameChanged(const QString&); void PathReloadRequested(const QString&); void TitleDBReloadRequested(); void HideCursorChanged(); void KeepWindowOnTopChanged(bool top); void VolumeChanged(int volume); void NANDRefresh(); void RegistersVisibilityChanged(bool visible); void LogVisibilityChanged(bool visible); void LogConfigVisibilityChanged(bool visible); void ToolBarVisibilityChanged(bool visible); void WidgetLockChanged(bool locked); void EnableCheatsChanged(bool enabled); void WatchVisibilityChanged(bool visible); void BreakpointsVisibilityChanged(bool visible); void CodeVisibilityChanged(bool visible); void MemoryVisibilityChanged(bool visible); void JITVisibilityChanged(bool visible); void DebugModeToggled(bool enabled); void DebugFontChanged(QFont font); void AutoUpdateTrackChanged(const QString& mode); void AnalyticsToggled(bool enabled); private: bool m_batch = false; bool m_controller_state_needed = false; std::unique_ptr m_client; std::unique_ptr m_server; Settings(); }; Q_DECLARE_METATYPE(Core::State);