1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
// Copyright 2017 Dolphin Emulator Project
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include <QDialog>
#include <QString>
namespace ControllerEmu
{
class EmulatedController;
}
class InputConfig;
class MappingButton;
class QComboBox;
class QDialogButtonBox;
class QEvent;
class QHBoxLayout;
class QGroupBox;
class QVBoxLayout;
class QPushButton;
class QTabWidget;
class QToolButton;
class QWidget;
class MappingWindow final : public QDialog
{
Q_OBJECT
public:
enum class Type
{
// GameCube
MAPPING_GC_BONGOS,
MAPPING_GC_DANCEMAT,
MAPPING_GC_GBA,
MAPPING_GC_KEYBOARD,
MAPPING_GCPAD,
MAPPING_GC_STEERINGWHEEL,
MAPPING_GC_MICROPHONE,
// Wii
MAPPING_WIIMOTE_EMU,
// Hotkeys
MAPPING_HOTKEYS,
// Freelook
MAPPING_FREELOOK,
// Triforce
MAPPING_AM_BASEBOARD,
};
explicit MappingWindow(QWidget* parent, Type type, int port_num);
int GetPort() const;
ControllerEmu::EmulatedController* GetController() const;
bool IsCreateOtherDeviceMappingsEnabled() const;
bool IsWaitForAlternateMappingsEnabled() const;
bool IsIterativeMappingEnabled() const;
void ShowExtensionMotionTabs(bool show);
void ActivateExtensionTab();
signals:
// Emitted when config has changed so widgets can update to reflect the change.
void ConfigChanged();
// Emitted at INDICATOR_UPDATE_FREQ Hz for real-time indicators to be updated.
void Update();
void Save();
void UnQueueInputDetection(MappingButton*);
void QueueInputDetection(MappingButton*);
void CancelMapping();
private:
void SetMappingType(Type type);
void CreateDevicesLayout();
void CreateProfilesLayout();
void CreateResetLayout();
void CreateMainLayout();
void ConnectWidgets();
QWidget* AddWidget(const QString& name, QWidget* widget);
void RefreshDevices();
void OnSelectProfile(int index);
void OnProfileTextChanged(const QString& text);
void OnDeleteProfilePressed();
void OnLoadProfilePressed();
void OnSaveProfilePressed();
void OnOpenProfileFolder();
void UpdateProfileIndex();
void UpdateProfileButtonState();
void PopulateProfileSelection();
void UpdateDeviceList();
void OnDefaultFieldsPressed();
void OnClearFieldsPressed();
void OnSelectDevice(int index);
ControllerEmu::EmulatedController* m_controller = nullptr;
// Main
QVBoxLayout* m_main_layout;
QHBoxLayout* m_config_layout;
QDialogButtonBox* m_button_box;
// Devices
QGroupBox* m_devices_box;
QHBoxLayout* m_devices_layout;
QComboBox* m_devices_combo;
QAction* m_other_device_mappings;
QAction* m_wait_for_alternate_mappings;
QAction* m_iterative_mapping;
// Profiles
QGroupBox* m_profiles_box;
QHBoxLayout* m_profiles_layout;
QComboBox* m_profiles_combo;
QPushButton* m_profiles_load;
QPushButton* m_profiles_save;
QToolButton* m_profile_other_actions;
QAction* m_profiles_delete;
QAction* m_profiles_open_folder;
// Reset
QGroupBox* m_reset_box;
QHBoxLayout* m_reset_layout;
QPushButton* m_reset_default;
QPushButton* m_reset_clear;
QTabWidget* m_tab_widget;
QWidget* m_extension_motion_input_tab;
QWidget* m_extension_motion_simulation_tab;
const QString EXTENSION_MOTION_INPUT_TAB_NAME = tr("Extension Motion Input");
const QString EXTENSION_MOTION_SIMULATION_TAB_NAME = tr("Extension Motion Simulation");
Type m_mapping_type;
const int m_port;
InputConfig* m_config;
};
|