#pragma once #include "gui_settings.h" #include "emu_settings.h" #include "Emu/GameInfo.h" #include #include #include #include namespace Ui { class settings_dialog; } class settings_dialog : public QDialog { Q_OBJECT public: explicit settings_dialog(std::shared_ptr guiSettings, std::shared_ptr emuSettings, const int& tabIndex = 0, QWidget *parent = 0, const GameInfo *game = nullptr); ~settings_dialog(); int exec() override; Q_SIGNALS: void GuiSettingsSyncRequest(bool configure_all); void GuiStylesheetRequest(const QString& path); void GuiSettingsSaveRequest(); void GuiRepaintRequest(); private Q_SLOTS: void OnBackupCurrentConfig(); void OnApplyConfig(); void OnApplyStylesheet(); private: void EnhanceSlider(emu_settings::SettingsType settings_type, QSlider* slider, QLabel* label, const QString& label_text); //emulator tab void AddConfigs(); void AddStylesheets(); QString m_currentStylesheet; QString m_currentConfig; //gpu tab QString m_oldRender = ""; int m_tab_Index; Ui::settings_dialog *ui; std::shared_ptr xgui_settings; std::shared_ptr xemu_settings; // Discord bool m_use_discord; QString m_discord_state; // descriptions QList> m_description_labels; QHash m_descriptions; void SubscribeDescription(QLabel* description); void SubscribeTooltip(QObject* object, const QString& tooltip); void SubscribeTooltip(QList objects, const QString& tooltip); bool eventFilter(QObject* object, QEvent* event) override; };