mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-25 15:31:17 +01:00
commit
03c1a1e392
@ -9,6 +9,7 @@ set(CMAKE_AUTOMOC ON)
|
|||||||
|
|
||||||
set(SRCS
|
set(SRCS
|
||||||
AboutDialog.cpp
|
AboutDialog.cpp
|
||||||
|
HotkeyScheduler.cpp
|
||||||
Host.cpp
|
Host.cpp
|
||||||
InDevelopmentWarning.cpp
|
InDevelopmentWarning.cpp
|
||||||
Main.cpp
|
Main.cpp
|
||||||
@ -24,6 +25,12 @@ set(SRCS
|
|||||||
Config/Mapping/GCKeyboardEmu.cpp
|
Config/Mapping/GCKeyboardEmu.cpp
|
||||||
Config/Mapping/GCPadEmu.cpp
|
Config/Mapping/GCPadEmu.cpp
|
||||||
Config/Mapping/GCPadWiiU.cpp
|
Config/Mapping/GCPadWiiU.cpp
|
||||||
|
Config/Mapping/Hotkey3D.cpp
|
||||||
|
Config/Mapping/HotkeyGeneral.cpp
|
||||||
|
Config/Mapping/HotkeyGraphics.cpp
|
||||||
|
Config/Mapping/HotkeyStates.cpp
|
||||||
|
Config/Mapping/HotkeyTAS.cpp
|
||||||
|
Config/Mapping/HotkeyWii.cpp
|
||||||
Config/Mapping/MappingBool.cpp
|
Config/Mapping/MappingBool.cpp
|
||||||
Config/Mapping/MappingButton.cpp
|
Config/Mapping/MappingButton.cpp
|
||||||
Config/Mapping/MappingNumeric.cpp
|
Config/Mapping/MappingNumeric.cpp
|
||||||
@ -41,6 +48,7 @@ set(SRCS
|
|||||||
GameList/ListProxyModel.cpp
|
GameList/ListProxyModel.cpp
|
||||||
QtUtils/DoubleClickEventFilter.cpp
|
QtUtils/DoubleClickEventFilter.cpp
|
||||||
QtUtils/ElidedButton.cpp
|
QtUtils/ElidedButton.cpp
|
||||||
|
QtUtils/FocusEventFilter.cpp
|
||||||
Settings/GeneralPane.cpp
|
Settings/GeneralPane.cpp
|
||||||
Settings/InterfacePane.cpp
|
Settings/InterfacePane.cpp
|
||||||
Settings/PathPane.cpp
|
Settings/PathPane.cpp
|
||||||
|
42
Source/Core/DolphinQt2/Config/Mapping/Hotkey3D.cpp
Normal file
42
Source/Core/DolphinQt2/Config/Mapping/Hotkey3D.cpp
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/Hotkey3D.h"
|
||||||
|
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
|
||||||
|
#include "Core/HotkeyManager.h"
|
||||||
|
|
||||||
|
Hotkey3D::Hotkey3D(MappingWindow* window) : MappingWidget(window)
|
||||||
|
{
|
||||||
|
CreateMainLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hotkey3D::CreateMainLayout()
|
||||||
|
{
|
||||||
|
m_main_layout = new QHBoxLayout();
|
||||||
|
|
||||||
|
m_main_layout->addWidget(
|
||||||
|
CreateGroupBox(tr("3D"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_3D_TOGGLE)));
|
||||||
|
m_main_layout->addWidget(
|
||||||
|
CreateGroupBox(tr("3D Depth"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_3D_DEPTH)));
|
||||||
|
|
||||||
|
setLayout(m_main_layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
InputConfig* Hotkey3D::GetConfig()
|
||||||
|
{
|
||||||
|
return HotkeyManagerEmu::GetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hotkey3D::LoadSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::LoadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Hotkey3D::SaveSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::GetConfig()->SaveConfig();
|
||||||
|
}
|
25
Source/Core/DolphinQt2/Config/Mapping/Hotkey3D.h
Normal file
25
Source/Core/DolphinQt2/Config/Mapping/Hotkey3D.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/MappingWidget.h"
|
||||||
|
|
||||||
|
class QHBoxLayout;
|
||||||
|
|
||||||
|
class Hotkey3D final : public MappingWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit Hotkey3D(MappingWindow* window);
|
||||||
|
|
||||||
|
InputConfig* GetConfig() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void LoadSettings() override;
|
||||||
|
void SaveSettings() override;
|
||||||
|
void CreateMainLayout();
|
||||||
|
|
||||||
|
// Main
|
||||||
|
QHBoxLayout* m_main_layout;
|
||||||
|
};
|
47
Source/Core/DolphinQt2/Config/Mapping/HotkeyGeneral.cpp
Normal file
47
Source/Core/DolphinQt2/Config/Mapping/HotkeyGeneral.cpp
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyGeneral.h"
|
||||||
|
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
#include "Core/HotkeyManager.h"
|
||||||
|
|
||||||
|
HotkeyGeneral::HotkeyGeneral(MappingWindow* window) : MappingWidget(window)
|
||||||
|
{
|
||||||
|
CreateMainLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyGeneral::CreateMainLayout()
|
||||||
|
{
|
||||||
|
m_main_layout = new QHBoxLayout();
|
||||||
|
|
||||||
|
m_main_layout->addWidget(
|
||||||
|
CreateGroupBox(tr("General"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_GENERAL)));
|
||||||
|
|
||||||
|
auto* vbox = new QVBoxLayout();
|
||||||
|
vbox->addWidget(CreateGroupBox(tr("Volume"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_VOLUME)));
|
||||||
|
vbox->addWidget(
|
||||||
|
CreateGroupBox(tr("Emulation Speed"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_SPEED)));
|
||||||
|
m_main_layout->addItem(vbox);
|
||||||
|
|
||||||
|
setLayout(m_main_layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
InputConfig* HotkeyGeneral::GetConfig()
|
||||||
|
{
|
||||||
|
return HotkeyManagerEmu::GetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyGeneral::LoadSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::LoadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyGeneral::SaveSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::GetConfig()->SaveConfig();
|
||||||
|
}
|
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyGeneral.h
Normal file
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyGeneral.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/MappingWidget.h"
|
||||||
|
|
||||||
|
class QHBoxLayout;
|
||||||
|
|
||||||
|
class HotkeyGeneral final : public MappingWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit HotkeyGeneral(MappingWindow* window);
|
||||||
|
|
||||||
|
InputConfig* GetConfig() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void LoadSettings() override;
|
||||||
|
void SaveSettings() override;
|
||||||
|
void CreateMainLayout();
|
||||||
|
|
||||||
|
// Main
|
||||||
|
QHBoxLayout* m_main_layout;
|
||||||
|
};
|
48
Source/Core/DolphinQt2/Config/Mapping/HotkeyGraphics.cpp
Normal file
48
Source/Core/DolphinQt2/Config/Mapping/HotkeyGraphics.cpp
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyGraphics.h"
|
||||||
|
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
#include "Core/HotkeyManager.h"
|
||||||
|
|
||||||
|
HotkeyGraphics::HotkeyGraphics(MappingWindow* window) : MappingWidget(window)
|
||||||
|
{
|
||||||
|
CreateMainLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyGraphics::CreateMainLayout()
|
||||||
|
{
|
||||||
|
m_main_layout = new QHBoxLayout();
|
||||||
|
|
||||||
|
m_main_layout->addWidget(
|
||||||
|
CreateGroupBox(tr("Freelook"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_FREELOOK)));
|
||||||
|
|
||||||
|
auto* vbox = new QVBoxLayout();
|
||||||
|
vbox->addWidget(CreateGroupBox(tr("Graphics Toggles"),
|
||||||
|
HotkeyManagerEmu::GetHotkeyGroup(HKGP_GRAPHICS_TOGGLES)));
|
||||||
|
vbox->addWidget(
|
||||||
|
CreateGroupBox(tr("Internal Resolution"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_IR)));
|
||||||
|
m_main_layout->addItem(vbox);
|
||||||
|
|
||||||
|
setLayout(m_main_layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
InputConfig* HotkeyGraphics::GetConfig()
|
||||||
|
{
|
||||||
|
return HotkeyManagerEmu::GetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyGraphics::LoadSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::LoadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyGraphics::SaveSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::GetConfig()->SaveConfig();
|
||||||
|
}
|
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyGraphics.h
Normal file
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyGraphics.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/MappingWidget.h"
|
||||||
|
|
||||||
|
class QHBoxLayout;
|
||||||
|
|
||||||
|
class HotkeyGraphics final : public MappingWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit HotkeyGraphics(MappingWindow* window);
|
||||||
|
|
||||||
|
InputConfig* GetConfig() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void LoadSettings() override;
|
||||||
|
void SaveSettings() override;
|
||||||
|
void CreateMainLayout();
|
||||||
|
|
||||||
|
// Main
|
||||||
|
QHBoxLayout* m_main_layout;
|
||||||
|
};
|
42
Source/Core/DolphinQt2/Config/Mapping/HotkeyStates.cpp
Normal file
42
Source/Core/DolphinQt2/Config/Mapping/HotkeyStates.cpp
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyStates.h"
|
||||||
|
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
|
||||||
|
#include "Core/HotkeyManager.h"
|
||||||
|
|
||||||
|
HotkeyStates::HotkeyStates(MappingWindow* window) : MappingWidget(window)
|
||||||
|
{
|
||||||
|
CreateMainLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyStates::CreateMainLayout()
|
||||||
|
{
|
||||||
|
m_main_layout = new QHBoxLayout();
|
||||||
|
|
||||||
|
m_main_layout->addWidget(
|
||||||
|
CreateGroupBox(tr("Save"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_SAVE_STATE)));
|
||||||
|
m_main_layout->addWidget(
|
||||||
|
CreateGroupBox(tr("Load"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_LOAD_STATE)));
|
||||||
|
|
||||||
|
setLayout(m_main_layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
InputConfig* HotkeyStates::GetConfig()
|
||||||
|
{
|
||||||
|
return HotkeyManagerEmu::GetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyStates::LoadSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::LoadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyStates::SaveSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::GetConfig()->SaveConfig();
|
||||||
|
}
|
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyStates.h
Normal file
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyStates.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/MappingWidget.h"
|
||||||
|
|
||||||
|
class QHBoxLayout;
|
||||||
|
|
||||||
|
class HotkeyStates final : public MappingWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit HotkeyStates(MappingWindow* window);
|
||||||
|
|
||||||
|
InputConfig* GetConfig() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void LoadSettings() override;
|
||||||
|
void SaveSettings() override;
|
||||||
|
void CreateMainLayout();
|
||||||
|
|
||||||
|
// Main
|
||||||
|
QHBoxLayout* m_main_layout;
|
||||||
|
};
|
42
Source/Core/DolphinQt2/Config/Mapping/HotkeyTAS.cpp
Normal file
42
Source/Core/DolphinQt2/Config/Mapping/HotkeyTAS.cpp
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyTAS.h"
|
||||||
|
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
|
||||||
|
#include "Core/HotkeyManager.h"
|
||||||
|
|
||||||
|
HotkeyTAS::HotkeyTAS(MappingWindow* window) : MappingWidget(window)
|
||||||
|
{
|
||||||
|
CreateMainLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyTAS::CreateMainLayout()
|
||||||
|
{
|
||||||
|
m_main_layout = new QHBoxLayout();
|
||||||
|
|
||||||
|
m_main_layout->addWidget(
|
||||||
|
CreateGroupBox(tr("Frame Advance"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_FRAME_ADVANCE)));
|
||||||
|
m_main_layout->addWidget(
|
||||||
|
CreateGroupBox(tr("Movie"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_MOVIE)));
|
||||||
|
|
||||||
|
setLayout(m_main_layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
InputConfig* HotkeyTAS::GetConfig()
|
||||||
|
{
|
||||||
|
return HotkeyManagerEmu::GetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyTAS::LoadSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::LoadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyTAS::SaveSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::GetConfig()->SaveConfig();
|
||||||
|
}
|
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyTAS.h
Normal file
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyTAS.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/MappingWidget.h"
|
||||||
|
|
||||||
|
class QHBoxLayout;
|
||||||
|
|
||||||
|
class HotkeyTAS final : public MappingWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit HotkeyTAS(MappingWindow* window);
|
||||||
|
|
||||||
|
InputConfig* GetConfig() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void LoadSettings() override;
|
||||||
|
void SaveSettings() override;
|
||||||
|
void CreateMainLayout();
|
||||||
|
|
||||||
|
// Main
|
||||||
|
QHBoxLayout* m_main_layout;
|
||||||
|
};
|
39
Source/Core/DolphinQt2/Config/Mapping/HotkeyWii.cpp
Normal file
39
Source/Core/DolphinQt2/Config/Mapping/HotkeyWii.cpp
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyWii.h"
|
||||||
|
|
||||||
|
#include <QGroupBox>
|
||||||
|
#include <QHBoxLayout>
|
||||||
|
|
||||||
|
#include "Core/HotkeyManager.h"
|
||||||
|
|
||||||
|
HotkeyWii::HotkeyWii(MappingWindow* window) : MappingWidget(window)
|
||||||
|
{
|
||||||
|
CreateMainLayout();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyWii::CreateMainLayout()
|
||||||
|
{
|
||||||
|
m_main_layout = new QHBoxLayout();
|
||||||
|
|
||||||
|
m_main_layout->addWidget(CreateGroupBox(tr("Wii"), HotkeyManagerEmu::GetHotkeyGroup(HKGP_WII)));
|
||||||
|
|
||||||
|
setLayout(m_main_layout);
|
||||||
|
}
|
||||||
|
|
||||||
|
InputConfig* HotkeyWii::GetConfig()
|
||||||
|
{
|
||||||
|
return HotkeyManagerEmu::GetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyWii::LoadSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::LoadConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyWii::SaveSettings()
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::GetConfig()->SaveConfig();
|
||||||
|
}
|
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyWii.h
Normal file
25
Source/Core/DolphinQt2/Config/Mapping/HotkeyWii.h
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/MappingWidget.h"
|
||||||
|
|
||||||
|
class QHBoxLayout;
|
||||||
|
|
||||||
|
class HotkeyWii final : public MappingWidget
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit HotkeyWii(MappingWindow* window);
|
||||||
|
|
||||||
|
InputConfig* GetConfig() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void LoadSettings() override;
|
||||||
|
void SaveSettings() override;
|
||||||
|
void CreateMainLayout();
|
||||||
|
|
||||||
|
// Main
|
||||||
|
QHBoxLayout* m_main_layout;
|
||||||
|
};
|
@ -20,6 +20,12 @@
|
|||||||
#include "DolphinQt2/Config/Mapping/GCKeyboardEmu.h"
|
#include "DolphinQt2/Config/Mapping/GCKeyboardEmu.h"
|
||||||
#include "DolphinQt2/Config/Mapping/GCPadEmu.h"
|
#include "DolphinQt2/Config/Mapping/GCPadEmu.h"
|
||||||
#include "DolphinQt2/Config/Mapping/GCPadWiiU.h"
|
#include "DolphinQt2/Config/Mapping/GCPadWiiU.h"
|
||||||
|
#include "DolphinQt2/Config/Mapping/Hotkey3D.h"
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyGeneral.h"
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyGraphics.h"
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyStates.h"
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyTAS.h"
|
||||||
|
#include "DolphinQt2/Config/Mapping/HotkeyWii.h"
|
||||||
#include "DolphinQt2/Config/Mapping/WiimoteEmuExtension.h"
|
#include "DolphinQt2/Config/Mapping/WiimoteEmuExtension.h"
|
||||||
#include "DolphinQt2/Config/Mapping/WiimoteEmuGeneral.h"
|
#include "DolphinQt2/Config/Mapping/WiimoteEmuGeneral.h"
|
||||||
#include "DolphinQt2/Config/Mapping/WiimoteEmuMotionControl.h"
|
#include "DolphinQt2/Config/Mapping/WiimoteEmuMotionControl.h"
|
||||||
@ -285,6 +291,18 @@ void MappingWindow::ChangeMappingType(MappingWindow::Type type)
|
|||||||
AddWidget(tr("Extension"), extension);
|
AddWidget(tr("Extension"), extension);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case Type::MAPPING_HOTKEYS:
|
||||||
|
{
|
||||||
|
widget = new HotkeyGeneral(this);
|
||||||
|
AddWidget(tr("General"), widget);
|
||||||
|
AddWidget(tr("TAS Tools"), new HotkeyTAS(this));
|
||||||
|
AddWidget(tr("Wii (Remote)"), new HotkeyWii(this));
|
||||||
|
AddWidget(tr("Graphics"), new HotkeyGraphics(this));
|
||||||
|
AddWidget(tr("3D"), new Hotkey3D(this));
|
||||||
|
AddWidget(tr("Save States"), new HotkeyStates(this));
|
||||||
|
setWindowTitle(tr("Hotkey Settings"));
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,9 @@ public:
|
|||||||
MAPPING_GC_STEERINGWHEEL,
|
MAPPING_GC_STEERINGWHEEL,
|
||||||
// Wii
|
// Wii
|
||||||
MAPPING_WIIMOTE_EMU,
|
MAPPING_WIIMOTE_EMU,
|
||||||
MAPPING_WIIMOTE_HYBRID
|
MAPPING_WIIMOTE_HYBRID,
|
||||||
|
// Hotkeys
|
||||||
|
MAPPING_HOTKEYS
|
||||||
};
|
};
|
||||||
|
|
||||||
explicit MappingWindow(QWidget* parent, int port_num);
|
explicit MappingWindow(QWidget* parent, int port_num);
|
||||||
|
@ -83,11 +83,13 @@
|
|||||||
<QtMoc Include="GameList\GameTracker.h" />
|
<QtMoc Include="GameList\GameTracker.h" />
|
||||||
<QtMoc Include="GameList\ListProxyModel.h" />
|
<QtMoc Include="GameList\ListProxyModel.h" />
|
||||||
<QtMoc Include="Host.h" />
|
<QtMoc Include="Host.h" />
|
||||||
|
<QtMoc Include="HotkeyScheduler.h" />
|
||||||
<QtMoc Include="InDevelopmentWarning.h" />
|
<QtMoc Include="InDevelopmentWarning.h" />
|
||||||
<QtMoc Include="Settings\InterfacePane.h" />
|
<QtMoc Include="Settings\InterfacePane.h" />
|
||||||
<QtMoc Include="MainWindow.h" />
|
<QtMoc Include="MainWindow.h" />
|
||||||
<QtMoc Include="MenuBar.h" />
|
<QtMoc Include="MenuBar.h" />
|
||||||
<QtMoc Include="QtUtils\DoubleClickEventFilter.h" />
|
<QtMoc Include="QtUtils\DoubleClickEventFilter.h" />
|
||||||
|
<QtMoc Include="QtUtils\FocusEventFilter.h" />
|
||||||
<QtMoc Include="RenderWidget.h" />
|
<QtMoc Include="RenderWidget.h" />
|
||||||
<QtMoc Include="Settings.h" />
|
<QtMoc Include="Settings.h" />
|
||||||
<QtMoc Include="Settings\GeneralPane.h" />
|
<QtMoc Include="Settings\GeneralPane.h" />
|
||||||
@ -98,12 +100,14 @@
|
|||||||
<ClCompile Include="$(QtMocOutPrefix)AboutDialog.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)AboutDialog.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)ControllersWindow.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)ControllersWindow.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)FilesystemWidget.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)FilesystemWidget.cpp" />
|
||||||
|
<ClCompile Include="$(QtMocOutPrefix)FocusEventFilter.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)GameFile.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)GameFile.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)GameList.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)GameList.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)GameListModel.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)GameListModel.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)GameTracker.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)GameTracker.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)GeneralPane.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)GeneralPane.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)Host.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)Host.cpp" />
|
||||||
|
<ClCompile Include="$(QtMocOutPrefix)HotkeyScheduler.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)InDevelopmentWarning.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)InDevelopmentWarning.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)InfoWidget.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)InfoWidget.cpp" />
|
||||||
<ClCompile Include="$(QtMocOutPrefix)InterfacePane.cpp" />
|
<ClCompile Include="$(QtMocOutPrefix)InterfacePane.cpp" />
|
||||||
@ -125,6 +129,12 @@
|
|||||||
<ClCompile Include="Config\Mapping\GCKeyboardEmu.cpp" />
|
<ClCompile Include="Config\Mapping\GCKeyboardEmu.cpp" />
|
||||||
<ClCompile Include="Config\Mapping\GCPadEmu.cpp" />
|
<ClCompile Include="Config\Mapping\GCPadEmu.cpp" />
|
||||||
<ClCompile Include="Config\Mapping\GCPadWiiU.cpp" />
|
<ClCompile Include="Config\Mapping\GCPadWiiU.cpp" />
|
||||||
|
<ClCompile Include="Config\Mapping\Hotkey3D.cpp" />
|
||||||
|
<ClCompile Include="Config\Mapping\HotkeyGeneral.cpp" />
|
||||||
|
<ClCompile Include="Config\Mapping\HotkeyGraphics.cpp" />
|
||||||
|
<ClCompile Include="Config\Mapping\HotkeyStates.cpp" />
|
||||||
|
<ClCompile Include="Config\Mapping\HotkeyTAS.cpp" />
|
||||||
|
<ClCompile Include="Config\Mapping\HotkeyWii.cpp" />
|
||||||
<ClCompile Include="Config\Mapping\MappingBool.cpp" />
|
<ClCompile Include="Config\Mapping\MappingBool.cpp" />
|
||||||
<ClCompile Include="Config\Mapping\MappingButton.cpp" />
|
<ClCompile Include="Config\Mapping\MappingButton.cpp" />
|
||||||
<ClCompile Include="Config\Mapping\MappingNumeric.cpp" />
|
<ClCompile Include="Config\Mapping\MappingNumeric.cpp" />
|
||||||
@ -140,6 +150,7 @@
|
|||||||
<ClCompile Include="GameList\GameListModel.cpp" />
|
<ClCompile Include="GameList\GameListModel.cpp" />
|
||||||
<ClCompile Include="GameList\GameTracker.cpp" />
|
<ClCompile Include="GameList\GameTracker.cpp" />
|
||||||
<ClCompile Include="GameList\ListProxyModel.cpp" />
|
<ClCompile Include="GameList\ListProxyModel.cpp" />
|
||||||
|
<ClCompile Include="HotkeyScheduler.cpp" />
|
||||||
<ClCompile Include="Host.cpp" />
|
<ClCompile Include="Host.cpp" />
|
||||||
<ClCompile Include="InDevelopmentWarning.cpp" />
|
<ClCompile Include="InDevelopmentWarning.cpp" />
|
||||||
<ClCompile Include="Main.cpp" />
|
<ClCompile Include="Main.cpp" />
|
||||||
@ -147,6 +158,7 @@
|
|||||||
<ClCompile Include="MenuBar.cpp" />
|
<ClCompile Include="MenuBar.cpp" />
|
||||||
<ClCompile Include="QtUtils\DoubleClickEventFilter.cpp" />
|
<ClCompile Include="QtUtils\DoubleClickEventFilter.cpp" />
|
||||||
<ClCompile Include="QtUtils\ElidedButton.cpp" />
|
<ClCompile Include="QtUtils\ElidedButton.cpp" />
|
||||||
|
<ClCompile Include="QtUtils\FocusEventFilter.cpp" />
|
||||||
<ClCompile Include="RenderWidget.cpp" />
|
<ClCompile Include="RenderWidget.cpp" />
|
||||||
<ClCompile Include="Resources.cpp" />
|
<ClCompile Include="Resources.cpp" />
|
||||||
<ClCompile Include="Settings.cpp" />
|
<ClCompile Include="Settings.cpp" />
|
||||||
|
363
Source/Core/DolphinQt2/HotkeyScheduler.cpp
Normal file
363
Source/Core/DolphinQt2/HotkeyScheduler.cpp
Normal file
@ -0,0 +1,363 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include "DolphinQt2/HotkeyScheduler.h"
|
||||||
|
|
||||||
|
#include <algorithm>
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
#include <QCoreApplication>
|
||||||
|
|
||||||
|
#include "AudioCommon/AudioCommon.h"
|
||||||
|
#include "Common/Thread.h"
|
||||||
|
#include "Core/Core.h"
|
||||||
|
#include "Core/HotkeyManager.h"
|
||||||
|
#include "Core/IOS/IOS.h"
|
||||||
|
#include "Core/IOS/USB/Bluetooth/BTBase.h"
|
||||||
|
#include "Core/State.h"
|
||||||
|
#include "DolphinQt2/MainWindow.h"
|
||||||
|
#include "DolphinQt2/Settings.h"
|
||||||
|
#include "InputCommon/ControllerInterface/ControllerInterface.h"
|
||||||
|
#include "VideoCommon/VertexShaderManager.h"
|
||||||
|
#include "VideoCommon/VideoConfig.h"
|
||||||
|
|
||||||
|
constexpr const char* DUBOIS_ALGORITHM_SHADER = "dubois";
|
||||||
|
|
||||||
|
HotkeyScheduler::HotkeyScheduler() : m_stop_requested(false)
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::Initialize();
|
||||||
|
HotkeyManagerEmu::LoadConfig();
|
||||||
|
HotkeyManagerEmu::Enable(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
HotkeyScheduler::~HotkeyScheduler()
|
||||||
|
{
|
||||||
|
Stop();
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyScheduler::Start()
|
||||||
|
{
|
||||||
|
m_stop_requested.Set(false);
|
||||||
|
m_thread = std::thread(&HotkeyScheduler::Run, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyScheduler::Stop()
|
||||||
|
{
|
||||||
|
m_stop_requested.Set(true);
|
||||||
|
|
||||||
|
if (m_thread.joinable())
|
||||||
|
m_thread.join();
|
||||||
|
}
|
||||||
|
|
||||||
|
static bool IsHotkey(int id, bool held = false)
|
||||||
|
{
|
||||||
|
return HotkeyManagerEmu::IsPressed(id, held);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void HandleFrameskipHotkeys()
|
||||||
|
{
|
||||||
|
constexpr int MAX_FRAME_SKIP_DELAY = 60;
|
||||||
|
constexpr int FRAME_STEP_DELAY = 30;
|
||||||
|
|
||||||
|
static int frame_step_count = 0;
|
||||||
|
static int frame_step_delay = 1;
|
||||||
|
static int frame_step_delay_count = 0;
|
||||||
|
static bool frame_step_hold = false;
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FRAME_ADVANCE_INCREASE_SPEED))
|
||||||
|
{
|
||||||
|
frame_step_delay = std::min(frame_step_delay + 1, MAX_FRAME_SKIP_DELAY);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FRAME_ADVANCE_DECREASE_SPEED))
|
||||||
|
{
|
||||||
|
frame_step_delay = std::max(frame_step_delay - 1, 0);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FRAME_ADVANCE_RESET_SPEED))
|
||||||
|
{
|
||||||
|
frame_step_delay = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FRAME_ADVANCE, true))
|
||||||
|
{
|
||||||
|
if (frame_step_delay_count < frame_step_delay && frame_step_hold)
|
||||||
|
frame_step_delay_count++;
|
||||||
|
|
||||||
|
// TODO GUI Update (Depends on an unimplemented feature)
|
||||||
|
// if ((frame_step_count == 0 || frame_step_count == FRAME_STEP_DELAY) && !frame_step_hold)
|
||||||
|
|
||||||
|
if (frame_step_count < FRAME_STEP_DELAY)
|
||||||
|
{
|
||||||
|
++frame_step_count;
|
||||||
|
if (frame_step_hold)
|
||||||
|
frame_step_hold = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (frame_step_count == FRAME_STEP_DELAY && frame_step_hold &&
|
||||||
|
frame_step_delay_count >= frame_step_delay)
|
||||||
|
{
|
||||||
|
frame_step_hold = false;
|
||||||
|
frame_step_delay_count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (frame_step_count > 0)
|
||||||
|
{
|
||||||
|
// Reset frame advance
|
||||||
|
frame_step_count = 0;
|
||||||
|
frame_step_hold = false;
|
||||||
|
frame_step_delay_count = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HotkeyScheduler::Run()
|
||||||
|
{
|
||||||
|
while (!m_stop_requested.IsSet())
|
||||||
|
{
|
||||||
|
Common::SleepCurrentThread(1000 / 60);
|
||||||
|
|
||||||
|
if (!HotkeyManagerEmu::IsEnabled())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (Core::GetState() == Core::State::Uninitialized || Core::GetState() == Core::State::Paused)
|
||||||
|
g_controller_interface.UpdateInput();
|
||||||
|
|
||||||
|
if (Core::GetState() != Core::State::Stopping)
|
||||||
|
{
|
||||||
|
HotkeyManagerEmu::GetStatus();
|
||||||
|
|
||||||
|
if (!Core::IsRunningAndStarted())
|
||||||
|
continue;
|
||||||
|
|
||||||
|
// Fullscreen
|
||||||
|
if (IsHotkey(HK_FULLSCREEN))
|
||||||
|
emit FullScreenHotkey();
|
||||||
|
|
||||||
|
// Pause and Unpause
|
||||||
|
if (IsHotkey(HK_PLAY_PAUSE))
|
||||||
|
emit PauseHotkey();
|
||||||
|
|
||||||
|
// Stop
|
||||||
|
if (IsHotkey(HK_STOP))
|
||||||
|
emit StopHotkey();
|
||||||
|
|
||||||
|
// Frameskipping
|
||||||
|
HandleFrameskipHotkeys();
|
||||||
|
|
||||||
|
// Screenshot
|
||||||
|
if (IsHotkey(HK_SCREENSHOT))
|
||||||
|
emit ScreenShotHotkey();
|
||||||
|
|
||||||
|
// Exit
|
||||||
|
if (IsHotkey(HK_EXIT))
|
||||||
|
emit ExitHotkey();
|
||||||
|
|
||||||
|
// Volume
|
||||||
|
if (IsHotkey(HK_VOLUME_DOWN))
|
||||||
|
AudioCommon::DecreaseVolume(3);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_VOLUME_UP))
|
||||||
|
AudioCommon::IncreaseVolume(3);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_VOLUME_TOGGLE_MUTE))
|
||||||
|
AudioCommon::ToggleMuteVolume();
|
||||||
|
|
||||||
|
auto& settings = Settings::Instance();
|
||||||
|
|
||||||
|
// Wiimote
|
||||||
|
if (settings.IsBluetoothPassthroughEnabled())
|
||||||
|
{
|
||||||
|
const auto ios = IOS::HLE::GetIOS();
|
||||||
|
auto device = ios ? ios->GetDeviceByName("/dev/usb/oh1/57e/305") : nullptr;
|
||||||
|
|
||||||
|
if (device != nullptr)
|
||||||
|
std::static_pointer_cast<IOS::HLE::Device::BluetoothBase>(device)->UpdateSyncButtonState(
|
||||||
|
IsHotkey(HK_TRIGGER_SYNC_BUTTON, true));
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO Debugging shortcuts (Separate PR)
|
||||||
|
|
||||||
|
if (settings.IsWiiGameRunning())
|
||||||
|
{
|
||||||
|
int wiimote_id = -1;
|
||||||
|
if (IsHotkey(HK_WIIMOTE1_CONNECT))
|
||||||
|
wiimote_id = 0;
|
||||||
|
if (IsHotkey(HK_WIIMOTE2_CONNECT))
|
||||||
|
wiimote_id = 1;
|
||||||
|
if (IsHotkey(HK_WIIMOTE3_CONNECT))
|
||||||
|
wiimote_id = 2;
|
||||||
|
if (IsHotkey(HK_WIIMOTE4_CONNECT))
|
||||||
|
wiimote_id = 3;
|
||||||
|
if (IsHotkey(HK_BALANCEBOARD_CONNECT))
|
||||||
|
wiimote_id = 4;
|
||||||
|
|
||||||
|
// TODO Implement Wiimote connecting / disconnecting (Separate PR)
|
||||||
|
// if (wiimote_id > -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Graphics
|
||||||
|
if (IsHotkey(HK_INCREASE_IR))
|
||||||
|
++g_Config.iEFBScale;
|
||||||
|
if (IsHotkey(HK_DECREASE_IR))
|
||||||
|
g_Config.iEFBScale = std::max(g_Config.iEFBScale - 1, static_cast<int>(SCALE_AUTO));
|
||||||
|
if (IsHotkey(HK_TOGGLE_CROP))
|
||||||
|
g_Config.bCrop = !g_Config.bCrop;
|
||||||
|
if (IsHotkey(HK_TOGGLE_AR))
|
||||||
|
g_Config.iAspectRatio = (g_Config.iAspectRatio + 1) & 3;
|
||||||
|
if (IsHotkey(HK_TOGGLE_EFBCOPIES))
|
||||||
|
g_Config.bSkipEFBCopyToRam = !g_Config.bSkipEFBCopyToRam;
|
||||||
|
if (IsHotkey(HK_TOGGLE_FOG))
|
||||||
|
g_Config.bDisableFog = !g_Config.bDisableFog;
|
||||||
|
if (IsHotkey(HK_TOGGLE_DUMPTEXTURES))
|
||||||
|
g_Config.bDumpTextures = !g_Config.bDumpTextures;
|
||||||
|
if (IsHotkey(HK_TOGGLE_TEXTURES))
|
||||||
|
g_Config.bHiresTextures = !g_Config.bHiresTextures;
|
||||||
|
|
||||||
|
Core::SetIsThrottlerTempDisabled(IsHotkey(HK_TOGGLE_THROTTLE, true));
|
||||||
|
|
||||||
|
if (IsHotkey(HK_DECREASE_EMULATION_SPEED))
|
||||||
|
{
|
||||||
|
auto speed = settings.GetEmulationSpeed() - 0.1;
|
||||||
|
speed = (speed <= 0 || (speed >= 0.95 && speed <= 1.05)) ? 1.0 : speed;
|
||||||
|
settings.SetEmulationSpeed(speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHotkey(HK_INCREASE_EMULATION_SPEED))
|
||||||
|
{
|
||||||
|
auto speed = settings.GetEmulationSpeed() + 0.1;
|
||||||
|
speed = (speed >= 0.95 && speed <= 1.05) ? 1.0 : speed;
|
||||||
|
settings.SetEmulationSpeed(speed);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Slot Saving / Loading
|
||||||
|
if (IsHotkey(HK_SAVE_STATE_SLOT_SELECTED))
|
||||||
|
emit StateSaveSlotHotkey();
|
||||||
|
|
||||||
|
if (IsHotkey(HK_LOAD_STATE_SLOT_SELECTED))
|
||||||
|
emit StateLoadSlotHotkey();
|
||||||
|
|
||||||
|
// Stereoscopy
|
||||||
|
if (IsHotkey(HK_TOGGLE_STEREO_SBS) || IsHotkey(HK_TOGGLE_STEREO_TAB))
|
||||||
|
{
|
||||||
|
if (g_Config.iStereoMode != STEREO_SBS)
|
||||||
|
{
|
||||||
|
// Disable post-processing shader, as stereoscopy itself is currently a shader
|
||||||
|
if (g_Config.sPostProcessingShader == DUBOIS_ALGORITHM_SHADER)
|
||||||
|
g_Config.sPostProcessingShader = "";
|
||||||
|
|
||||||
|
g_Config.iStereoMode = IsHotkey(HK_TOGGLE_STEREO_SBS) ? STEREO_SBS : STEREO_TAB;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_Config.iStereoMode = STEREO_OFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHotkey(HK_TOGGLE_STEREO_ANAGLYPH))
|
||||||
|
{
|
||||||
|
if (g_Config.iStereoMode != STEREO_ANAGLYPH)
|
||||||
|
{
|
||||||
|
g_Config.iStereoMode = STEREO_ANAGLYPH;
|
||||||
|
g_Config.sPostProcessingShader = DUBOIS_ALGORITHM_SHADER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_Config.iStereoMode = STEREO_OFF;
|
||||||
|
g_Config.sPostProcessingShader = "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHotkey(HK_TOGGLE_STEREO_3DVISION))
|
||||||
|
{
|
||||||
|
if (g_Config.iStereoMode != STEREO_3DVISION)
|
||||||
|
{
|
||||||
|
if (g_Config.sPostProcessingShader == DUBOIS_ALGORITHM_SHADER)
|
||||||
|
g_Config.sPostProcessingShader = "";
|
||||||
|
|
||||||
|
g_Config.iStereoMode = STEREO_3DVISION;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
g_Config.iStereoMode = STEREO_OFF;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHotkey(HK_DECREASE_DEPTH, true))
|
||||||
|
g_Config.iStereoDepth = std::max(g_Config.iStereoDepth - 1, 0);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_INCREASE_DEPTH, true))
|
||||||
|
g_Config.iStereoDepth = std::min(g_Config.iStereoDepth + 1, 100);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_DECREASE_CONVERGENCE, true))
|
||||||
|
g_Config.iStereoConvergence = std::max(g_Config.iStereoConvergence - 5, 0);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_INCREASE_CONVERGENCE, true))
|
||||||
|
g_Config.iStereoConvergence = std::min(g_Config.iStereoConvergence + 5, 500);
|
||||||
|
|
||||||
|
// Freelook
|
||||||
|
static float fl_speed = 1.0;
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_DECREASE_SPEED, true))
|
||||||
|
fl_speed /= 1.1f;
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_INCREASE_SPEED, true))
|
||||||
|
fl_speed *= 1.1f;
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_RESET_SPEED, true))
|
||||||
|
fl_speed = 1.0;
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_UP, true))
|
||||||
|
VertexShaderManager::TranslateView(0.0, 0.0, -fl_speed);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_DOWN, true))
|
||||||
|
VertexShaderManager::TranslateView(0.0, 0.0, fl_speed);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_LEFT, true))
|
||||||
|
VertexShaderManager::TranslateView(fl_speed, 0.0);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_RIGHT, true))
|
||||||
|
VertexShaderManager::TranslateView(-fl_speed, 0.0);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_ZOOM_IN, true))
|
||||||
|
VertexShaderManager::TranslateView(0.0, fl_speed);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_ZOOM_OUT, true))
|
||||||
|
VertexShaderManager::TranslateView(0.0, -fl_speed);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_FREELOOK_RESET, true))
|
||||||
|
VertexShaderManager::ResetView();
|
||||||
|
|
||||||
|
// Savestates
|
||||||
|
for (u32 i = 0; i < State::NUM_STATES; i++)
|
||||||
|
{
|
||||||
|
if (IsHotkey(HK_LOAD_STATE_SLOT_1 + i))
|
||||||
|
State::Load(i + 1);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_SAVE_STATE_SLOT_1 + i))
|
||||||
|
State::Save(i + 1);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_LOAD_LAST_STATE_1 + i))
|
||||||
|
State::LoadLastSaved(i + 1);
|
||||||
|
|
||||||
|
if (IsHotkey(HK_SELECT_STATE_SLOT_1 + i))
|
||||||
|
emit SetStateSlotHotkey(i + 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IsHotkey(HK_SAVE_FIRST_STATE))
|
||||||
|
State::SaveFirstSaved();
|
||||||
|
|
||||||
|
if (IsHotkey(HK_UNDO_LOAD_STATE))
|
||||||
|
State::UndoLoadState();
|
||||||
|
|
||||||
|
if (IsHotkey(HK_UNDO_SAVE_STATE))
|
||||||
|
State::UndoSaveState();
|
||||||
|
}
|
||||||
|
}
|
37
Source/Core/DolphinQt2/HotkeyScheduler.h
Normal file
37
Source/Core/DolphinQt2/HotkeyScheduler.h
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <thread>
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "Common/Flag.h"
|
||||||
|
|
||||||
|
class HotkeyScheduler : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit HotkeyScheduler();
|
||||||
|
~HotkeyScheduler();
|
||||||
|
|
||||||
|
void Start();
|
||||||
|
void Stop();
|
||||||
|
signals:
|
||||||
|
void ExitHotkey();
|
||||||
|
void FullScreenHotkey();
|
||||||
|
void StopHotkey();
|
||||||
|
void PauseHotkey();
|
||||||
|
void ScreenShotHotkey();
|
||||||
|
void SetStateSlotHotkey(int slot);
|
||||||
|
void StateLoadSlotHotkey();
|
||||||
|
void StateSaveSlotHotkey();
|
||||||
|
|
||||||
|
private:
|
||||||
|
void Run();
|
||||||
|
|
||||||
|
Common::Flag m_stop_requested;
|
||||||
|
std::thread m_thread;
|
||||||
|
};
|
@ -25,9 +25,13 @@
|
|||||||
|
|
||||||
#include "DolphinQt2/AboutDialog.h"
|
#include "DolphinQt2/AboutDialog.h"
|
||||||
#include "DolphinQt2/Config/ControllersWindow.h"
|
#include "DolphinQt2/Config/ControllersWindow.h"
|
||||||
|
|
||||||
|
#include "DolphinQt2/Config/Mapping/MappingWindow.h"
|
||||||
#include "DolphinQt2/Config/SettingsWindow.h"
|
#include "DolphinQt2/Config/SettingsWindow.h"
|
||||||
#include "DolphinQt2/Host.h"
|
#include "DolphinQt2/Host.h"
|
||||||
|
#include "DolphinQt2/HotkeyScheduler.h"
|
||||||
#include "DolphinQt2/MainWindow.h"
|
#include "DolphinQt2/MainWindow.h"
|
||||||
|
#include "DolphinQt2/QtUtils/FocusEventFilter.h"
|
||||||
#include "DolphinQt2/Resources.h"
|
#include "DolphinQt2/Resources.h"
|
||||||
#include "DolphinQt2/Settings.h"
|
#include "DolphinQt2/Settings.h"
|
||||||
|
|
||||||
@ -65,16 +69,32 @@ void MainWindow::InitControllers()
|
|||||||
Pad::Initialize();
|
Pad::Initialize();
|
||||||
Keyboard::Initialize();
|
Keyboard::Initialize();
|
||||||
Wiimote::Initialize(Wiimote::InitializeMode::DO_NOT_WAIT_FOR_WIIMOTES);
|
Wiimote::Initialize(Wiimote::InitializeMode::DO_NOT_WAIT_FOR_WIIMOTES);
|
||||||
HotkeyManagerEmu::Initialize();
|
m_hotkey_scheduler = new HotkeyScheduler();
|
||||||
|
m_hotkey_scheduler->Start();
|
||||||
|
|
||||||
|
ConnectHotkeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::ShutdownControllers()
|
void MainWindow::ShutdownControllers()
|
||||||
{
|
{
|
||||||
|
m_hotkey_scheduler->Stop();
|
||||||
|
|
||||||
g_controller_interface.Shutdown();
|
g_controller_interface.Shutdown();
|
||||||
Pad::Shutdown();
|
Pad::Shutdown();
|
||||||
Keyboard::Shutdown();
|
Keyboard::Shutdown();
|
||||||
Wiimote::Shutdown();
|
Wiimote::Shutdown();
|
||||||
HotkeyManagerEmu::Shutdown();
|
HotkeyManagerEmu::Shutdown();
|
||||||
|
|
||||||
|
m_hotkey_scheduler->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void InstallHotkeyFilter(QDialog* dialog)
|
||||||
|
{
|
||||||
|
auto* filter = new FocusEventFilter();
|
||||||
|
dialog->installEventFilter(filter);
|
||||||
|
|
||||||
|
filter->connect(filter, &FocusEventFilter::focusOutEvent, [] { HotkeyManagerEmu::Enable(true); });
|
||||||
|
filter->connect(filter, &FocusEventFilter::focusInEvent, [] { HotkeyManagerEmu::Enable(false); });
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::CreateComponents()
|
void MainWindow::CreateComponents()
|
||||||
@ -86,6 +106,11 @@ void MainWindow::CreateComponents()
|
|||||||
m_stack = new QStackedWidget(this);
|
m_stack = new QStackedWidget(this);
|
||||||
m_controllers_window = new ControllersWindow(this);
|
m_controllers_window = new ControllersWindow(this);
|
||||||
m_settings_window = new SettingsWindow(this);
|
m_settings_window = new SettingsWindow(this);
|
||||||
|
m_hotkey_window = new MappingWindow(this, 0);
|
||||||
|
|
||||||
|
InstallHotkeyFilter(m_hotkey_window);
|
||||||
|
InstallHotkeyFilter(m_controllers_window);
|
||||||
|
InstallHotkeyFilter(m_settings_window);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MainWindow::ConnectMenuBar()
|
void MainWindow::ConnectMenuBar()
|
||||||
@ -114,6 +139,9 @@ void MainWindow::ConnectMenuBar()
|
|||||||
connect(m_menu_bar, &MenuBar::StateSaveOldest, this, &MainWindow::StateSaveOldest);
|
connect(m_menu_bar, &MenuBar::StateSaveOldest, this, &MainWindow::StateSaveOldest);
|
||||||
connect(m_menu_bar, &MenuBar::SetStateSlot, this, &MainWindow::SetStateSlot);
|
connect(m_menu_bar, &MenuBar::SetStateSlot, this, &MainWindow::SetStateSlot);
|
||||||
|
|
||||||
|
// Options
|
||||||
|
connect(m_menu_bar, &MenuBar::ConfigureHotkeys, this, &MainWindow::ShowHotkeyDialog);
|
||||||
|
|
||||||
// View
|
// View
|
||||||
connect(m_menu_bar, &MenuBar::ShowTable, m_game_list, &GameList::SetTableView);
|
connect(m_menu_bar, &MenuBar::ShowTable, m_game_list, &GameList::SetTableView);
|
||||||
connect(m_menu_bar, &MenuBar::ShowList, m_game_list, &GameList::SetListView);
|
connect(m_menu_bar, &MenuBar::ShowList, m_game_list, &GameList::SetListView);
|
||||||
@ -131,6 +159,22 @@ void MainWindow::ConnectMenuBar()
|
|||||||
[=]() { m_controllers_window->OnEmulationStateChanged(false); });
|
[=]() { m_controllers_window->OnEmulationStateChanged(false); });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::ConnectHotkeys()
|
||||||
|
{
|
||||||
|
connect(m_hotkey_scheduler, &HotkeyScheduler::ExitHotkey, this, &MainWindow::close);
|
||||||
|
connect(m_hotkey_scheduler, &HotkeyScheduler::PauseHotkey, this, &MainWindow::Pause);
|
||||||
|
connect(m_hotkey_scheduler, &HotkeyScheduler::StopHotkey, this, &MainWindow::Stop);
|
||||||
|
connect(m_hotkey_scheduler, &HotkeyScheduler::ScreenShotHotkey, this, &MainWindow::ScreenShot);
|
||||||
|
connect(m_hotkey_scheduler, &HotkeyScheduler::FullScreenHotkey, this, &MainWindow::FullScreen);
|
||||||
|
|
||||||
|
connect(m_hotkey_scheduler, &HotkeyScheduler::StateLoadSlotHotkey, this,
|
||||||
|
&MainWindow::StateLoadSlot);
|
||||||
|
connect(m_hotkey_scheduler, &HotkeyScheduler::StateSaveSlotHotkey, this,
|
||||||
|
&MainWindow::StateSaveSlot);
|
||||||
|
connect(m_hotkey_scheduler, &HotkeyScheduler::SetStateSlotHotkey, this,
|
||||||
|
&MainWindow::SetStateSlot);
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::ConnectToolBar()
|
void MainWindow::ConnectToolBar()
|
||||||
{
|
{
|
||||||
addToolBar(m_tool_bar);
|
addToolBar(m_tool_bar);
|
||||||
@ -365,6 +409,14 @@ void MainWindow::ShowAboutDialog()
|
|||||||
about->show();
|
about->show();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MainWindow::ShowHotkeyDialog()
|
||||||
|
{
|
||||||
|
m_hotkey_window->ChangeMappingType(MappingWindow::Type::MAPPING_HOTKEYS);
|
||||||
|
m_hotkey_window->show();
|
||||||
|
m_hotkey_window->raise();
|
||||||
|
m_hotkey_window->activateWindow();
|
||||||
|
}
|
||||||
|
|
||||||
void MainWindow::StateLoad()
|
void MainWindow::StateLoad()
|
||||||
{
|
{
|
||||||
QString path = QFileDialog::getOpenFileName(this, tr("Select a File"), QDir::currentPath(),
|
QString path = QFileDialog::getOpenFileName(this, tr("Select a File"), QDir::currentPath(),
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
#include "DolphinQt2/RenderWidget.h"
|
#include "DolphinQt2/RenderWidget.h"
|
||||||
#include "DolphinQt2/ToolBar.h"
|
#include "DolphinQt2/ToolBar.h"
|
||||||
|
|
||||||
|
class HotkeyScheduler;
|
||||||
|
class MappingWindow;
|
||||||
class SettingsWindow;
|
class SettingsWindow;
|
||||||
class ControllersWindow;
|
class ControllersWindow;
|
||||||
|
|
||||||
@ -58,6 +60,7 @@ private:
|
|||||||
void CreateComponents();
|
void CreateComponents();
|
||||||
|
|
||||||
void ConnectGameList();
|
void ConnectGameList();
|
||||||
|
void ConnectHotkeys();
|
||||||
void ConnectMenuBar();
|
void ConnectMenuBar();
|
||||||
void ConnectRenderWidget();
|
void ConnectRenderWidget();
|
||||||
void ConnectStack();
|
void ConnectStack();
|
||||||
@ -73,6 +76,7 @@ private:
|
|||||||
void ShowSettingsWindow();
|
void ShowSettingsWindow();
|
||||||
void ShowControllersWindow();
|
void ShowControllersWindow();
|
||||||
void ShowAboutDialog();
|
void ShowAboutDialog();
|
||||||
|
void ShowHotkeyDialog();
|
||||||
|
|
||||||
QStackedWidget* m_stack;
|
QStackedWidget* m_stack;
|
||||||
ToolBar* m_tool_bar;
|
ToolBar* m_tool_bar;
|
||||||
@ -82,6 +86,8 @@ private:
|
|||||||
bool m_rendering_to_main;
|
bool m_rendering_to_main;
|
||||||
int m_state_slot = 1;
|
int m_state_slot = 1;
|
||||||
|
|
||||||
|
HotkeyScheduler* m_hotkey_scheduler;
|
||||||
ControllersWindow* m_controllers_window;
|
ControllersWindow* m_controllers_window;
|
||||||
SettingsWindow* m_settings_window;
|
SettingsWindow* m_settings_window;
|
||||||
|
MappingWindow* m_hotkey_window;
|
||||||
};
|
};
|
||||||
|
@ -20,7 +20,7 @@ MenuBar::MenuBar(QWidget* parent) : QMenuBar(parent)
|
|||||||
AddFileMenu();
|
AddFileMenu();
|
||||||
AddEmulationMenu();
|
AddEmulationMenu();
|
||||||
addMenu(tr("Movie"));
|
addMenu(tr("Movie"));
|
||||||
addMenu(tr("Options"));
|
AddOptionsMenu();
|
||||||
AddToolsMenu();
|
AddToolsMenu();
|
||||||
AddViewMenu();
|
AddViewMenu();
|
||||||
AddHelpMenu();
|
AddHelpMenu();
|
||||||
@ -171,6 +171,12 @@ void MenuBar::AddViewMenu()
|
|||||||
AddTableColumnsMenu(view_menu);
|
AddTableColumnsMenu(view_menu);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MenuBar::AddOptionsMenu()
|
||||||
|
{
|
||||||
|
QMenu* options_menu = addMenu(tr("Options"));
|
||||||
|
options_menu->addAction(tr("Hotkey Settings"), this, &MenuBar::ConfigureHotkeys);
|
||||||
|
}
|
||||||
|
|
||||||
void MenuBar::AddHelpMenu()
|
void MenuBar::AddHelpMenu()
|
||||||
{
|
{
|
||||||
QMenu* help_menu = addMenu(tr("Help"));
|
QMenu* help_menu = addMenu(tr("Help"));
|
||||||
|
@ -38,6 +38,9 @@ signals:
|
|||||||
void StateSaveOldest();
|
void StateSaveOldest();
|
||||||
void SetStateSlot(int slot);
|
void SetStateSlot(int slot);
|
||||||
|
|
||||||
|
// Options
|
||||||
|
void ConfigureHotkeys();
|
||||||
|
|
||||||
// View
|
// View
|
||||||
void ShowTable();
|
void ShowTable();
|
||||||
void ShowList();
|
void ShowList();
|
||||||
@ -66,6 +69,7 @@ private:
|
|||||||
void AddGameListTypeSection(QMenu* view_menu);
|
void AddGameListTypeSection(QMenu* view_menu);
|
||||||
void AddTableColumnsMenu(QMenu* view_menu);
|
void AddTableColumnsMenu(QMenu* view_menu);
|
||||||
|
|
||||||
|
void AddOptionsMenu();
|
||||||
void AddToolsMenu();
|
void AddToolsMenu();
|
||||||
void AddHelpMenu();
|
void AddHelpMenu();
|
||||||
|
|
||||||
|
19
Source/Core/DolphinQt2/QtUtils/FocusEventFilter.cpp
Normal file
19
Source/Core/DolphinQt2/QtUtils/FocusEventFilter.cpp
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#include <QEvent>
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include "DolphinQt2/QtUtils/FocusEventFilter.h"
|
||||||
|
|
||||||
|
bool FocusEventFilter::eventFilter(QObject* object, QEvent* event)
|
||||||
|
{
|
||||||
|
if (event->type() == QEvent::FocusOut)
|
||||||
|
emit focusOutEvent();
|
||||||
|
|
||||||
|
if (event->type() == QEvent::FocusIn)
|
||||||
|
emit focusInEvent();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
18
Source/Core/DolphinQt2/QtUtils/FocusEventFilter.h
Normal file
18
Source/Core/DolphinQt2/QtUtils/FocusEventFilter.h
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
// Copyright 2017 Dolphin Emulator Project
|
||||||
|
// Licensed under GPLv2+
|
||||||
|
// Refer to the license.txt file included.
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
class FocusEventFilter : public QObject
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
signals:
|
||||||
|
void focusInEvent();
|
||||||
|
void focusOutEvent();
|
||||||
|
|
||||||
|
private:
|
||||||
|
bool eventFilter(QObject* object, QEvent* event) override;
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user