From e24789b4fbc90472b061fad260a0c260b3ddc2bd Mon Sep 17 00:00:00 2001 From: JosJuice Date: Wed, 3 Jul 2019 22:34:07 +0200 Subject: [PATCH] Add a hotkey for inserting/ejecting the SD card --- Source/Core/Core/HotkeyManager.cpp | 3 ++- Source/Core/Core/HotkeyManager.h | 1 + Source/Core/DolphinQt/HotkeyScheduler.cpp | 3 +++ Source/Core/DolphinQt/Settings.cpp | 19 +++++++++++++++++++ Source/Core/DolphinQt/Settings.h | 3 +++ Source/Core/DolphinQt/Settings/WiiPane.cpp | 14 ++++---------- 6 files changed, 32 insertions(+), 11 deletions(-) diff --git a/Source/Core/Core/HotkeyManager.cpp b/Source/Core/Core/HotkeyManager.cpp index 8f32b80109..b001000be5 100644 --- a/Source/Core/Core/HotkeyManager.cpp +++ b/Source/Core/Core/HotkeyManager.cpp @@ -20,7 +20,7 @@ #include "InputCommon/GCPadStatus.h" // clang-format off -constexpr std::array s_hotkey_labels{{ +constexpr std::array s_hotkey_labels{{ _trans("Open"), _trans("Change Disc"), _trans("Eject Disc"), @@ -78,6 +78,7 @@ constexpr std::array s_hotkey_labels{{ _trans("Connect Wii Remote 3"), _trans("Connect Wii Remote 4"), _trans("Connect Balance Board"), + _trans("Toggle SD Card"), _trans("Toggle USB Keyboard"), _trans("Next Profile for Wii Remote 1"), diff --git a/Source/Core/Core/HotkeyManager.h b/Source/Core/Core/HotkeyManager.h index a1dd55b03c..618fe7c00f 100644 --- a/Source/Core/Core/HotkeyManager.h +++ b/Source/Core/Core/HotkeyManager.h @@ -68,6 +68,7 @@ enum Hotkey HK_WIIMOTE3_CONNECT, HK_WIIMOTE4_CONNECT, HK_BALANCEBOARD_CONNECT, + HK_TOGGLE_SD_CARD, HK_TOGGLE_USB_KEYBOARD, HK_NEXT_WIIMOTE_PROFILE_1, diff --git a/Source/Core/DolphinQt/HotkeyScheduler.cpp b/Source/Core/DolphinQt/HotkeyScheduler.cpp index 89277a3905..e43d66c803 100644 --- a/Source/Core/DolphinQt/HotkeyScheduler.cpp +++ b/Source/Core/DolphinQt/HotkeyScheduler.cpp @@ -248,6 +248,9 @@ void HotkeyScheduler::Run() if (wiimote_id > -1) emit ConnectWiiRemote(wiimote_id); + if (IsHotkey(HK_TOGGLE_SD_CARD)) + Settings::Instance().SetSDCardInserted(!Settings::Instance().IsSDCardInserted()); + if (IsHotkey(HK_TOGGLE_USB_KEYBOARD)) { Settings::Instance().SetUSBKeyboardConnected( diff --git a/Source/Core/DolphinQt/Settings.cpp b/Source/Core/DolphinQt/Settings.cpp index 62b04cb808..99322db7fe 100644 --- a/Source/Core/DolphinQt/Settings.cpp +++ b/Source/Core/DolphinQt/Settings.cpp @@ -18,6 +18,7 @@ #include "Core/Config/MainSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" +#include "Core/IOS/IOS.h" #include "Core/NetPlayClient.h" #include "Core/NetPlayServer.h" @@ -534,6 +535,24 @@ void Settings::SetBatchModeEnabled(bool batch) m_batch = batch; } +bool Settings::IsSDCardInserted() const +{ + return SConfig::GetInstance().m_WiiSDCard; +} + +void Settings::SetSDCardInserted(bool inserted) +{ + if (IsSDCardInserted() != inserted) + { + SConfig::GetInstance().m_WiiSDCard = inserted; + emit SDCardInsertionChanged(inserted); + + auto* ios = IOS::HLE::GetIOS(); + if (ios) + ios->SDIO_EventNotify(); + } +} + bool Settings::IsUSBKeyboardConnected() const { return SConfig::GetInstance().m_WiiKeyboard; diff --git a/Source/Core/DolphinQt/Settings.h b/Source/Core/DolphinQt/Settings.h index 5a34ecbba1..f16ce2a474 100644 --- a/Source/Core/DolphinQt/Settings.h +++ b/Source/Core/DolphinQt/Settings.h @@ -87,6 +87,8 @@ public: bool IsBatchModeEnabled() const; void SetBatchModeEnabled(bool batch); + bool IsSDCardInserted() const; + void SetSDCardInserted(bool inserted); bool IsUSBKeyboardConnected() const; void SetUSBKeyboardConnected(bool connected); @@ -172,6 +174,7 @@ signals: void AutoUpdateTrackChanged(const QString& mode); void AnalyticsToggled(bool enabled); void DevicesChanged(); + void SDCardInsertionChanged(bool inserted); void USBKeyboardConnectionChanged(bool connected); private: diff --git a/Source/Core/DolphinQt/Settings/WiiPane.cpp b/Source/Core/DolphinQt/Settings/WiiPane.cpp index ed8f57122c..2bb6f88aa0 100644 --- a/Source/Core/DolphinQt/Settings/WiiPane.cpp +++ b/Source/Core/DolphinQt/Settings/WiiPane.cpp @@ -22,7 +22,6 @@ #include "Core/Config/SYSCONFSettings.h" #include "Core/ConfigManager.h" #include "Core/Core.h" -#include "Core/IOS/IOS.h" #include "DolphinQt/Settings.h" #include "DolphinQt/Settings/USBDeviceAddToWhitelistDialog.h" @@ -74,6 +73,8 @@ void WiiPane::ConnectLayout() connect(m_pal60_mode_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig); connect(m_sd_card_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig); connect(m_connect_keyboard_checkbox, &QCheckBox::toggled, this, &WiiPane::OnSaveConfig); + connect(&Settings::Instance(), &Settings::SDCardInsertionChanged, m_sd_card_checkbox, + &QCheckBox::setChecked); connect(&Settings::Instance(), &Settings::USBKeyboardConnectionChanged, m_connect_keyboard_checkbox, &QCheckBox::setChecked); @@ -205,8 +206,8 @@ void WiiPane::LoadConfig() { m_screensaver_checkbox->setChecked(Config::Get(Config::SYSCONF_SCREENSAVER)); m_pal60_mode_checkbox->setChecked(Config::Get(Config::SYSCONF_PAL60)); + m_sd_card_checkbox->setChecked(Settings::Instance().IsSDCardInserted()); m_connect_keyboard_checkbox->setChecked(Settings::Instance().IsUSBKeyboardConnected()); - m_sd_card_checkbox->setChecked(SConfig::GetInstance().m_WiiSDCard); m_aspect_ratio_choice->setCurrentIndex(Config::Get(Config::SYSCONF_WIDESCREEN)); m_system_language_choice->setCurrentIndex(Config::Get(Config::SYSCONF_LANGUAGE)); @@ -225,16 +226,9 @@ void WiiPane::OnSaveConfig() Config::SetBase(Config::SYSCONF_SCREENSAVER, m_screensaver_checkbox->isChecked()); Config::SetBase(Config::SYSCONF_PAL60, m_pal60_mode_checkbox->isChecked()); + Settings::Instance().SetSDCardInserted(m_sd_card_checkbox->isChecked()); Settings::Instance().SetUSBKeyboardConnected(m_connect_keyboard_checkbox->isChecked()); - if (SConfig::GetInstance().m_WiiSDCard != m_sd_card_checkbox->isChecked()) - { - SConfig::GetInstance().m_WiiSDCard = m_sd_card_checkbox->isChecked(); - auto* ios = IOS::HLE::GetIOS(); - if (ios) - ios->SDIO_EventNotify(); - } - Config::SetBase(Config::SYSCONF_SENSOR_BAR_POSITION, TranslateSensorBarPosition(m_wiimote_ir_sensor_position->currentIndex())); Config::SetBase(Config::SYSCONF_SENSOR_BAR_SENSITIVITY, m_wiimote_ir_sensitivity->value());