mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2024-11-15 22:09:19 -07:00
100 lines
1.9 KiB
C++
100 lines
1.9 KiB
C++
// Copyright 2017 Dolphin Emulator Project
|
|
// Licensed under GPLv2+
|
|
// Refer to the license.txt file included.
|
|
|
|
#pragma once
|
|
|
|
#include <QDialog>
|
|
#include <QString>
|
|
|
|
#include "Common/Flag.h"
|
|
#include "InputCommon/ControllerInterface/Device.h"
|
|
|
|
class ControlReference;
|
|
class QAbstractButton;
|
|
class QComboBox;
|
|
class QDialogButtonBox;
|
|
class QListWidget;
|
|
class QVBoxLayout;
|
|
class QWidget;
|
|
class QPlainTextEdit;
|
|
class QPushButton;
|
|
class QSlider;
|
|
class QSpinBox;
|
|
|
|
namespace ControllerEmu
|
|
{
|
|
class EmulatedController;
|
|
}
|
|
|
|
class IOWindow final : public QDialog
|
|
{
|
|
Q_OBJECT
|
|
public:
|
|
enum class Type
|
|
{
|
|
Input,
|
|
Output
|
|
};
|
|
|
|
explicit IOWindow(QWidget* parent, ControllerEmu::EmulatedController* m_controller,
|
|
ControlReference* ref, Type type);
|
|
|
|
private:
|
|
void CreateMainLayout();
|
|
void ConnectWidgets();
|
|
void LoadSettings();
|
|
void SaveSettings();
|
|
void Update();
|
|
|
|
void OnDialogButtonPressed(QAbstractButton* button);
|
|
void OnDeviceChanged(const QString& device);
|
|
void OnDetectButtonPressed();
|
|
void OnRangeChanged(int range);
|
|
|
|
void AppendSelectedOption(const std::string& prefix);
|
|
void UpdateOptionList();
|
|
void UpdateDeviceList();
|
|
|
|
// Main Layout
|
|
QVBoxLayout* m_main_layout;
|
|
|
|
// Devices
|
|
QComboBox* m_devices_combo;
|
|
|
|
// Options
|
|
QListWidget* m_option_list;
|
|
|
|
// Range
|
|
QSlider* m_range_slider;
|
|
QSpinBox* m_range_spinbox;
|
|
|
|
// Shared actions
|
|
QPushButton* m_select_button;
|
|
QPushButton* m_or_button;
|
|
|
|
// Input actions
|
|
QPushButton* m_detect_button;
|
|
QPushButton* m_and_button;
|
|
QPushButton* m_not_button;
|
|
QPushButton* m_add_button;
|
|
|
|
// Output actions
|
|
QPushButton* m_test_button;
|
|
|
|
// Textarea
|
|
QPlainTextEdit* m_expression_text;
|
|
|
|
// Buttonbox
|
|
QDialogButtonBox* m_button_box;
|
|
QPushButton* m_clear_button;
|
|
QPushButton* m_apply_button;
|
|
|
|
ControlReference* m_reference;
|
|
ControllerEmu::EmulatedController* m_controller;
|
|
|
|
ciface::Core::DeviceQualifier m_devq;
|
|
Common::Flag m_block;
|
|
Type m_type;
|
|
};
|