// SPDX-FileCopyrightText: 2016 Citra Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include <memory> #include <QDialog> namespace Core { class System; } class ConfigureAudio; class ConfigureCpu; class ConfigureDebugTab; class ConfigureFilesystem; class ConfigureGeneral; class ConfigureGraphics; class ConfigureGraphicsAdvanced; class ConfigureHotkeys; class ConfigureInput; class ConfigureProfileManager; class ConfigureSystem; class ConfigureNetwork; class ConfigureUi; class ConfigureWeb; class HotkeyRegistry; namespace InputCommon { class InputSubsystem; } namespace Ui { class ConfigureDialog; } class ConfigureDialog : public QDialog { Q_OBJECT public: explicit ConfigureDialog(QWidget* parent, HotkeyRegistry& registry_, InputCommon::InputSubsystem* input_subsystem, Core::System& system_, bool enable_web_config = true); ~ConfigureDialog() override; void ApplyConfiguration(); private slots: void OnLanguageChanged(const QString& locale); signals: void LanguageChanged(const QString& locale); private: void changeEvent(QEvent* event) override; void RetranslateUI(); void HandleApplyButtonClicked(); void SetConfiguration(); void UpdateVisibleTabs(); void PopulateSelectionList(); std::unique_ptr<Ui::ConfigureDialog> ui; HotkeyRegistry& registry; Core::System& system; std::unique_ptr<ConfigureAudio> audio_tab; std::unique_ptr<ConfigureCpu> cpu_tab; std::unique_ptr<ConfigureDebugTab> debug_tab_tab; std::unique_ptr<ConfigureFilesystem> filesystem_tab; std::unique_ptr<ConfigureGeneral> general_tab; std::unique_ptr<ConfigureGraphics> graphics_tab; std::unique_ptr<ConfigureGraphicsAdvanced> graphics_advanced_tab; std::unique_ptr<ConfigureHotkeys> hotkeys_tab; std::unique_ptr<ConfigureInput> input_tab; std::unique_ptr<ConfigureNetwork> network_tab; std::unique_ptr<ConfigureProfileManager> profile_tab; std::unique_ptr<ConfigureSystem> system_tab; std::unique_ptr<ConfigureUi> ui_tab; std::unique_ptr<ConfigureWeb> web_tab; };