rpcsx/rpcs3/rpcs3qt/settings_dialog.h
Megamouse c56147e04b Qt: fix settings_dialog opening on wrong tab
The dialog now uses open instead of exec, so we have to override open.
2024-12-19 13:49:43 +01:00

75 lines
1.9 KiB
C++

#pragma once
#include "emu_settings.h"
#include <QDialog>
#include <QLabel>
#include <QSlider>
#include <memory>
class gui_settings;
struct GameInfo;
namespace Ui
{
class settings_dialog;
}
class settings_dialog : public QDialog
{
Q_OBJECT
public:
explicit settings_dialog(std::shared_ptr<gui_settings> gui_settings, std::shared_ptr<emu_settings> emu_settings, int tab_index = 0, QWidget* parent = nullptr, const GameInfo* game = nullptr, bool create_cfg_from_global_cfg = true);
~settings_dialog();
void open() override;
Q_SIGNALS:
void GuiStylesheetRequest();
void GuiRepaintRequest();
void EmuSettingsApplied();
void signal_restore_dependant_defaults();
private:
void EnhanceSlider(emu_settings_type settings_type, QSlider* slider, QLabel* label, const QString& label_text) const;
// Snapping of sliders when moved with mouse
void SnapSlider(QSlider* slider, int interval);
QSlider* m_current_slider = nullptr;
std::set<QObject*> m_snap_sliders;
// Gui tab
void AddStylesheets();
void ApplyStylesheet(bool reset);
QString m_current_stylesheet;
// Gpu tab
QString m_old_renderer;
// Audio tab
std::array<QComboBox*, 4> m_mics_combo{};
// IO tab
std::array<QComboBox*, 3> m_midi_type_combo{};
std::array<QComboBox*, 3> m_midi_device_combo{};
int m_tab_index = 0;
std::unique_ptr<Ui::settings_dialog> ui;
std::shared_ptr<gui_settings> m_gui_settings;
std::shared_ptr<emu_settings> m_emu_settings;
// Discord
bool m_use_discord = false;
QString m_discord_state;
// Descriptions
std::vector<std::pair<QLabel*, QString>> m_description_labels;
QHash<QObject*, QString> m_descriptions;
void SubscribeDescription(QLabel* description);
void SubscribeTooltip(QObject* object, const QString& tooltip);
bool eventFilter(QObject* object, QEvent* event) override;
void closeEvent(QCloseEvent* event) override;
// Countries
void refresh_countrybox();
};