forked from dolphin-emu/dolphin
		
	
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright 2017 Dolphin Emulator Project
 | |
| // Licensed under GPLv2+
 | |
| // Refer to the license.txt file included.
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include <QDialog>
 | |
| #include <QString>
 | |
| #include <memory>
 | |
| 
 | |
| #include "InputCommon/ControllerInterface/Device.h"
 | |
| 
 | |
| namespace ControllerEmu
 | |
| {
 | |
| class EmulatedController;
 | |
| }
 | |
| 
 | |
| class InputConfig;
 | |
| class QCheckBox;
 | |
| class QComboBox;
 | |
| class QDialogButtonBox;
 | |
| class QEvent;
 | |
| class QHBoxLayout;
 | |
| class QGroupBox;
 | |
| class QVBoxLayout;
 | |
| class QPushButton;
 | |
| class QTabWidget;
 | |
| class QWidget;
 | |
| 
 | |
| class MappingWindow final : public QDialog
 | |
| {
 | |
|   Q_OBJECT
 | |
| public:
 | |
|   enum class Type
 | |
|   {
 | |
|     // GameCube
 | |
|     MAPPING_GC_BONGOS,
 | |
|     MAPPING_GC_DANCEMAT,
 | |
|     MAPPING_GC_KEYBOARD,
 | |
|     MAPPING_GCPAD,
 | |
|     MAPPING_GC_STEERINGWHEEL,
 | |
|     MAPPING_GC_MICROPHONE,
 | |
|     // Wii
 | |
|     MAPPING_WIIMOTE_EMU,
 | |
|     // Hotkeys
 | |
|     MAPPING_HOTKEYS
 | |
|   };
 | |
| 
 | |
|   explicit MappingWindow(QWidget* parent, Type type, int port_num);
 | |
| 
 | |
|   int GetPort() const;
 | |
|   std::shared_ptr<ciface::Core::Device> GetDevice() const;
 | |
|   ControllerEmu::EmulatedController* GetController() const;
 | |
|   bool IsIterativeInput() const;
 | |
|   bool IsMappingAllDevices() const;
 | |
| 
 | |
| signals:
 | |
|   void Update();
 | |
|   void ClearFields();
 | |
|   void Save();
 | |
| 
 | |
| private:
 | |
|   void SetMappingType(Type type);
 | |
|   void CreateDevicesLayout();
 | |
|   void CreateProfilesLayout();
 | |
|   void CreateResetLayout();
 | |
|   void CreateMainLayout();
 | |
|   void ConnectWidgets();
 | |
| 
 | |
|   void AddWidget(const QString& name, QWidget* widget);
 | |
| 
 | |
|   void RefreshDevices();
 | |
| 
 | |
|   void OnDeleteProfilePressed();
 | |
|   void OnLoadProfilePressed();
 | |
|   void OnSaveProfilePressed();
 | |
|   void OnDefaultFieldsPressed();
 | |
|   void OnDeviceChanged(int index);
 | |
|   void OnGlobalDevicesChanged();
 | |
| 
 | |
|   ControllerEmu::EmulatedController* m_controller = nullptr;
 | |
| 
 | |
|   // Main
 | |
|   QCheckBox* m_iterative_input;
 | |
|   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;
 | |
|   QPushButton* m_devices_refresh;
 | |
| 
 | |
|   // Profiles
 | |
|   QGroupBox* m_profiles_box;
 | |
|   QHBoxLayout* m_profiles_layout;
 | |
|   QComboBox* m_profiles_combo;
 | |
|   QPushButton* m_profiles_load;
 | |
|   QPushButton* m_profiles_save;
 | |
|   QPushButton* m_profiles_delete;
 | |
| 
 | |
|   // Reset
 | |
|   QGroupBox* m_reset_box;
 | |
|   QHBoxLayout* m_reset_layout;
 | |
|   QPushButton* m_reset_default;
 | |
|   QPushButton* m_reset_clear;
 | |
| 
 | |
|   QTabWidget* m_tab_widget;
 | |
| 
 | |
|   Type m_mapping_type;
 | |
|   const int m_port;
 | |
|   InputConfig* m_config;
 | |
| };
 |