Qt: Implement "Connect Wii Remotes" menu

This commit is contained in:
spycrab
2018-01-24 15:25:35 +01:00
parent c66156148d
commit aae5c950f0
6 changed files with 58 additions and 2 deletions

View File

@ -24,6 +24,7 @@
#include "Core/HW/Wiimote.h"
#include "Core/IOS/ES/ES.h"
#include "Core/IOS/IOS.h"
#include "Core/IOS/USB/Bluetooth/BTEmu.h"
#include "Core/Movie.h"
#include "Core/State.h"
#include "Core/TitleDatabase.h"
@ -156,6 +157,24 @@ void MenuBar::AddToolsMenu()
[this] { emit PerformOnlineUpdate("KOR"); });
AddAction(m_perform_online_update_menu, tr("United States"), this,
[this] { emit PerformOnlineUpdate("USA"); });
QMenu* menu = new QMenu(tr("Connect Wii Remotes"));
tools_menu->addSeparator();
tools_menu->addMenu(menu);
for (int i = 0; i < 4; i++)
{
m_wii_remotes[i] = AddAction(menu, tr("Connect Wii Remote %1").arg(i + 1), this,
[this, i] { emit ConnectWiiRemote(i); });
m_wii_remotes[i]->setCheckable(true);
}
menu->addSeparator();
m_wii_remotes[4] =
AddAction(menu, tr("Connect Balance Board"), this, [this] { emit ConnectWiiRemote(4); });
m_wii_remotes[4]->setCheckable(true);
}
void MenuBar::AddEmulationMenu()
@ -541,6 +560,20 @@ void MenuBar::UpdateToolsMenu(bool emulation_started)
action->setEnabled(!tmd.IsValid());
m_perform_online_update_for_current_region->setEnabled(tmd.IsValid());
}
const auto ios = IOS::HLE::GetIOS();
const auto bt = ios ? std::static_pointer_cast<IOS::HLE::Device::BluetoothEmu>(
ios->GetDeviceByName("/dev/usb/oh1/57e/305")) :
nullptr;
bool enable_wiimotes =
emulation_started && bt && !SConfig::GetInstance().m_bt_passthrough_enabled;
for (int i = 0; i < 5; i++)
{
m_wii_remotes[i]->setEnabled(enable_wiimotes);
if (enable_wiimotes)
m_wii_remotes[i]->setChecked(bt->AccessWiiMote(0x0100 + i)->IsConnected());
}
}
void MenuBar::InstallWAD()