diff options
| -rw-r--r-- | src/yuzu/configuration/config.cpp | 4 | ||||
| -rw-r--r-- | src/yuzu/configuration/config.h | 2 | ||||
| -rw-r--r-- | src/yuzu/main.cpp | 117 | ||||
| -rw-r--r-- | src/yuzu/main.h | 3 | 
4 files changed, 68 insertions, 58 deletions
| diff --git a/src/yuzu/configuration/config.cpp b/src/yuzu/configuration/config.cpp index 2c8c10c50..68facbce4 100644 --- a/src/yuzu/configuration/config.cpp +++ b/src/yuzu/configuration/config.cpp @@ -65,12 +65,14 @@ const std::array<int, 2> Config::default_stick_mod = {  // This must be in alphabetical order according to action name as it must have the same order as  // UISetting::values.shortcuts, which is alphabetically ordered.  // clang-format off -const std::array<UISettings::Shortcut, 20> Config::default_hotkeys{{ +const std::array<UISettings::Shortcut, 22> Config::default_hotkeys{{      {QStringLiteral("Audio Mute/Unmute"),        QStringLiteral("Main Window"), {QStringLiteral("Ctrl+M"),  QStringLiteral("Home+Dpad_Right"), Qt::WindowShortcut}},      {QStringLiteral("Audio Volume Down"),        QStringLiteral("Main Window"), {QStringLiteral("-"),       QStringLiteral("Home+Dpad_Down"), Qt::ApplicationShortcut}},      {QStringLiteral("Audio Volume Up"),          QStringLiteral("Main Window"), {QStringLiteral("+"),       QStringLiteral("Home+Dpad_Up"), Qt::ApplicationShortcut}},      {QStringLiteral("Capture Screenshot"),       QStringLiteral("Main Window"), {QStringLiteral("Ctrl+P"),  QStringLiteral("Screenshot"), Qt::WidgetWithChildrenShortcut}}, +    {QStringLiteral("Change Adapting Filter"),   QStringLiteral("Main Window"), {QStringLiteral("F8"),      QStringLiteral("Home+L"), Qt::ApplicationShortcut}},      {QStringLiteral("Change Docked Mode"),       QStringLiteral("Main Window"), {QStringLiteral("F10"),     QStringLiteral("Home+X"), Qt::ApplicationShortcut}}, +    {QStringLiteral("Change GPU Accuracy"),      QStringLiteral("Main Window"), {QStringLiteral("F9"),      QStringLiteral("Home+R"), Qt::ApplicationShortcut}},      {QStringLiteral("Continue/Pause Emulation"), QStringLiteral("Main Window"), {QStringLiteral("F4"),      QStringLiteral("Home+Plus"), Qt::WindowShortcut}},      {QStringLiteral("Exit Fullscreen"),          QStringLiteral("Main Window"), {QStringLiteral("Esc"),     QStringLiteral(""), Qt::WindowShortcut}},      {QStringLiteral("Exit yuzu"),                QStringLiteral("Main Window"), {QStringLiteral("Ctrl+Q"),  QStringLiteral("Home+Minus"), Qt::WindowShortcut}}, diff --git a/src/yuzu/configuration/config.h b/src/yuzu/configuration/config.h index 60b20a62f..ae3e36a11 100644 --- a/src/yuzu/configuration/config.h +++ b/src/yuzu/configuration/config.h @@ -46,7 +46,7 @@ public:          default_mouse_buttons;      static const std::array<int, Settings::NativeKeyboard::NumKeyboardKeys> default_keyboard_keys;      static const std::array<int, Settings::NativeKeyboard::NumKeyboardMods> default_keyboard_mods; -    static const std::array<UISettings::Shortcut, 20> default_hotkeys; +    static const std::array<UISettings::Shortcut, 22> default_hotkeys;      static constexpr UISettings::Theme default_theme{  #ifdef _WIN32 diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index c788db12d..68cd9f6ea 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -806,21 +806,8 @@ void GMainWindow::InitializeWidgets() {      filter_status_button = new QPushButton();      filter_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));      filter_status_button->setFocusPolicy(Qt::NoFocus); -    connect(filter_status_button, &QPushButton::clicked, [&] { -        auto filter = Settings::values.scaling_filter.GetValue(); -        if (filter == Settings::ScalingFilter::LastFilter) { -            filter = Settings::ScalingFilter::NearestNeighbor; -        } else { -            filter = static_cast<Settings::ScalingFilter>(static_cast<u32>(filter) + 1); -        } -        if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL && -            filter == Settings::ScalingFilter::Fsr) { -            filter = Settings::ScalingFilter::NearestNeighbor; -        } -        Settings::values.scaling_filter.SetValue(filter); -        filter_status_button->setChecked(true); -        UpdateFilterText(); -    }); +    connect(filter_status_button, &QPushButton::clicked, this, +            &GMainWindow::OnToggleAdaptingFilter);      auto filter = Settings::values.scaling_filter.GetValue();      if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL &&          filter == Settings::ScalingFilter::Fsr) { @@ -835,25 +822,7 @@ void GMainWindow::InitializeWidgets() {      dock_status_button = new QPushButton();      dock_status_button->setObjectName(QStringLiteral("TogglableStatusBarButton"));      dock_status_button->setFocusPolicy(Qt::NoFocus); -    connect(dock_status_button, &QPushButton::clicked, [&] { -        const bool is_docked = Settings::values.use_docked_mode.GetValue(); -        auto* player_1 = system->HIDCore().GetEmulatedController(Core::HID::NpadIdType::Player1); -        auto* handheld = system->HIDCore().GetEmulatedController(Core::HID::NpadIdType::Handheld); - -        if (!is_docked && handheld->IsConnected()) { -            QMessageBox::warning(this, tr("Invalid config detected"), -                                 tr("Handheld controller can't be used on docked mode. Pro " -                                    "controller will be selected.")); -            handheld->Disconnect(); -            player_1->SetNpadStyleIndex(Core::HID::NpadStyleIndex::ProController); -            player_1->Connect(); -            controller_dialog->refreshConfiguration(); -        } - -        Settings::values.use_docked_mode.SetValue(!is_docked); -        dock_status_button->setChecked(!is_docked); -        OnDockedModeChanged(is_docked, !is_docked, *system); -    }); +    connect(dock_status_button, &QPushButton::clicked, this, &GMainWindow::OnToggleDockedMode);      dock_status_button->setText(tr("DOCK"));      dock_status_button->setCheckable(true);      dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue()); @@ -863,22 +832,7 @@ void GMainWindow::InitializeWidgets() {      gpu_accuracy_button->setObjectName(QStringLiteral("GPUStatusBarButton"));      gpu_accuracy_button->setCheckable(true);      gpu_accuracy_button->setFocusPolicy(Qt::NoFocus); -    connect(gpu_accuracy_button, &QPushButton::clicked, [this] { -        switch (Settings::values.gpu_accuracy.GetValue()) { -        case Settings::GPUAccuracy::High: { -            Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::Normal); -            break; -        } -        case Settings::GPUAccuracy::Normal: -        case Settings::GPUAccuracy::Extreme: -        default: { -            Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::High); -        } -        } - -        system->ApplySettings(); -        UpdateGPUAccuracyButton(); -    }); +    connect(gpu_accuracy_button, &QPushButton::clicked, this, &GMainWindow::OnToggleGpuAccuracy);      UpdateGPUAccuracyButton();      statusBar()->insertPermanentWidget(0, gpu_accuracy_button); @@ -1009,12 +963,10 @@ void GMainWindow::InitializeHotkeys() {              ToggleFullscreen();          }      }); -    connect_shortcut(QStringLiteral("Change Docked Mode"), [&] { -        Settings::values.use_docked_mode.SetValue(!Settings::values.use_docked_mode.GetValue()); -        OnDockedModeChanged(!Settings::values.use_docked_mode.GetValue(), -                            Settings::values.use_docked_mode.GetValue(), *system); -        dock_status_button->setChecked(Settings::values.use_docked_mode.GetValue()); -    }); +    connect_shortcut(QStringLiteral("Change Adapting Filter"), +                     &GMainWindow::OnToggleAdaptingFilter); +    connect_shortcut(QStringLiteral("Change Docked Mode"), &GMainWindow::OnToggleDockedMode); +    connect_shortcut(QStringLiteral("Change GPU Accuracy"), &GMainWindow::OnToggleGpuAccuracy);      connect_shortcut(QStringLiteral("Audio Mute/Unmute"),                       [] { Settings::values.audio_muted = !Settings::values.audio_muted; });      connect_shortcut(QStringLiteral("Audio Volume Down"), [] { @@ -2868,6 +2820,59 @@ void GMainWindow::OnTasReset() {      input_subsystem->GetTas()->Reset();  } +void GMainWindow::OnToggleDockedMode() { +    const bool is_docked = Settings::values.use_docked_mode.GetValue(); +    auto* player_1 = system->HIDCore().GetEmulatedController(Core::HID::NpadIdType::Player1); +    auto* handheld = system->HIDCore().GetEmulatedController(Core::HID::NpadIdType::Handheld); + +    if (!is_docked && handheld->IsConnected()) { +        QMessageBox::warning(this, tr("Invalid config detected"), +                             tr("Handheld controller can't be used on docked mode. Pro " +                                "controller will be selected.")); +        handheld->Disconnect(); +        player_1->SetNpadStyleIndex(Core::HID::NpadStyleIndex::ProController); +        player_1->Connect(); +        controller_dialog->refreshConfiguration(); +    } + +    Settings::values.use_docked_mode.SetValue(!is_docked); +    dock_status_button->setChecked(!is_docked); +    OnDockedModeChanged(is_docked, !is_docked, *system); +} + +void GMainWindow::OnToggleGpuAccuracy() { +    switch (Settings::values.gpu_accuracy.GetValue()) { +    case Settings::GPUAccuracy::High: { +        Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::Normal); +        break; +    } +    case Settings::GPUAccuracy::Normal: +    case Settings::GPUAccuracy::Extreme: +    default: { +        Settings::values.gpu_accuracy.SetValue(Settings::GPUAccuracy::High); +    } +    } + +    system->ApplySettings(); +    UpdateGPUAccuracyButton(); +} + +void GMainWindow::OnToggleAdaptingFilter() { +    auto filter = Settings::values.scaling_filter.GetValue(); +    if (filter == Settings::ScalingFilter::LastFilter) { +        filter = Settings::ScalingFilter::NearestNeighbor; +    } else { +        filter = static_cast<Settings::ScalingFilter>(static_cast<u32>(filter) + 1); +    } +    if (Settings::values.renderer_backend.GetValue() == Settings::RendererBackend::OpenGL && +        filter == Settings::ScalingFilter::Fsr) { +        filter = Settings::ScalingFilter::NearestNeighbor; +    } +    Settings::values.scaling_filter.SetValue(filter); +    filter_status_button->setChecked(true); +    UpdateFilterText(); +} +  void GMainWindow::OnConfigurePerGame() {      const u64 title_id = system->GetCurrentProcessProgramID();      OpenPerGameConfiguration(title_id, game_path.toStdString()); diff --git a/src/yuzu/main.h b/src/yuzu/main.h index ca4ab9af5..eb939bb29 100644 --- a/src/yuzu/main.h +++ b/src/yuzu/main.h @@ -284,6 +284,9 @@ private slots:      void OnTasStartStop();      void OnTasRecord();      void OnTasReset(); +    void OnToggleDockedMode(); +    void OnToggleGpuAccuracy(); +    void OnToggleAdaptingFilter();      void OnConfigurePerGame();      void OnLoadAmiibo();      void OnOpenYuzuFolder(); | 
