Qt/Input: add mouse settings to the pad settings dialog

This commit is contained in:
Megamouse 2018-12-28 21:36:23 +01:00
parent 2db16c2c04
commit a77bd41b50
2 changed files with 301 additions and 102 deletions

View file

@ -467,6 +467,24 @@ void pad_settings_dialog::ReloadButtons()
m_min_force = m_handler->vibration_min;
m_max_force = m_handler->vibration_max;
// Enable Mouse Deadzones
std::vector<std::string> mouse_dz_range_x = m_handler_cfg.mouse_deadzone_x.to_list();
ui->mouse_dz_x->setRange(std::stoi(mouse_dz_range_x.front()), std::stoi(mouse_dz_range_x.back()));
ui->mouse_dz_x->setValue(m_handler_cfg.mouse_deadzone_x);
std::vector<std::string> mouse_dz_range_y = m_handler_cfg.mouse_deadzone_y.to_list();
ui->mouse_dz_y->setRange(std::stoi(mouse_dz_range_y.front()), std::stoi(mouse_dz_range_y.back()));
ui->mouse_dz_y->setValue(m_handler_cfg.mouse_deadzone_y);
// Enable Mouse Acceleration
std::vector<std::string> mouse_accel_range_x = m_handler_cfg.mouse_acceleration_x.to_list();
ui->mouse_accel_x->setRange(std::stod(mouse_accel_range_x.front()) / (double)100, std::stod(mouse_accel_range_x.back()) / (double)100);
ui->mouse_accel_x->setValue((double)m_handler_cfg.mouse_acceleration_x / (double)100);
std::vector<std::string> mouse_accel_range_y = m_handler_cfg.mouse_acceleration_y.to_list();
ui->mouse_accel_y->setRange(std::stod(mouse_accel_range_y.front()) / (double)100, std::stod(mouse_accel_range_y.back()) / (double)100);
ui->mouse_accel_y->setValue((double)m_handler_cfg.mouse_acceleration_y / (double)100);
// Enable Vibration Checkboxes
m_enable_rumble = m_handler->has_rumble();
@ -828,6 +846,9 @@ void pad_settings_dialog::ChangeInputType()
m_handler = GetHandler(g_cfg_input.player[player]->handler);
const auto device_list = m_handler->ListDevices();
// change our contextual widgets
ui->stackedWidget->setCurrentIndex((m_handler->m_type == pad_handler::keyboard) ? 1 : 0);
// Refill the device combobox with currently available devices
switch (m_handler->m_type)
{
@ -1018,6 +1039,14 @@ void pad_settings_dialog::SaveProfile()
m_handler_cfg.rstickdeadzone.set(ui->slider_stick_right->value());
}
if (m_handler->m_type == pad_handler::keyboard)
{
m_handler_cfg.mouse_acceleration_x.set(ui->mouse_accel_x->value() * 100);
m_handler_cfg.mouse_acceleration_y.set(ui->mouse_accel_y->value() * 100);
m_handler_cfg.mouse_deadzone_x.set(ui->mouse_dz_x->value());
m_handler_cfg.mouse_deadzone_y.set(ui->mouse_dz_y->value());
}
m_handler_cfg.save();
}

View file

@ -626,114 +626,284 @@
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_triggers">
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
</size>
<widget class="QStackedWidget" name="stackedWidget">
<property name="lineWidth">
<number>0</number>
</property>
<property name="title">
<string>Trigger Thresholds</string>
<property name="currentIndex">
<number>0</number>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_21">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>5</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>5</number>
</property>
<item>
<layout class="QVBoxLayout" name="gb_trigger_left">
<item>
<widget class="QSlider" name="slider_trigger_left">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<widget class="QWidget" name="pad_page">
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="gb_triggers">
<property name="minimumSize">
<size>
<width>0</width>
<height>80</height>
</size>
</property>
<property name="title">
<string>Trigger Thresholds</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_21">
<property name="leftMargin">
<number>5</number>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="preview_trigger_left">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<property name="topMargin">
<number>5</number>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="gb_trigger_right">
<item>
<widget class="QSlider" name="slider_trigger_right">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<property name="rightMargin">
<number>5</number>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="preview_trigger_right">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<property name="bottomMargin">
<number>5</number>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_vibration">
<property name="title">
<string>Enable Vibration</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item>
<widget class="QCheckBox" name="chb_vibration_large">
<property name="text">
<string>Large</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="chb_vibration_small">
<property name="text">
<string>Small</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="chb_vibration_switch">
<property name="text">
<string>Switch</string>
</property>
</widget>
</item>
</layout>
<item>
<layout class="QVBoxLayout" name="gb_trigger_left">
<item>
<widget class="QSlider" name="slider_trigger_left">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="preview_trigger_left">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="gb_trigger_right">
<item>
<widget class="QSlider" name="slider_trigger_right">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
<item>
<widget class="QSlider" name="preview_trigger_right">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
</widget>
</item>
</layout>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_vibration">
<property name="title">
<string>Enable Vibration</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>5</number>
</property>
<property name="topMargin">
<number>9</number>
</property>
<property name="rightMargin">
<number>5</number>
</property>
<property name="bottomMargin">
<number>9</number>
</property>
<item>
<widget class="QCheckBox" name="chb_vibration_large">
<property name="text">
<string>Large</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="chb_vibration_small">
<property name="text">
<string>Small</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="chb_vibration_switch">
<property name="text">
<string>Switch</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
<widget class="QWidget" name="mouse_page">
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="gb_mouse_accel">
<property name="title">
<string>Mouse Acceleration</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_27">
<item>
<widget class="QLabel" name="mouse_accel_x_label">
<property name="text">
<string>x</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="mouse_accel_x"/>
</item>
<item>
<spacer name="horizontalSpacer_25">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="mouse_accel_y_label">
<property name="text">
<string>y</string>
</property>
</widget>
</item>
<item>
<widget class="QDoubleSpinBox" name="mouse_accel_y"/>
</item>
<item>
<spacer name="horizontalSpacer_26">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="gb_mouse_dz">
<property name="title">
<string>Mouse Deadzone</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_26">
<item>
<widget class="QLabel" name="mouse_dz_x_label">
<property name="text">
<string>x</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="mouse_dz_x"/>
</item>
<item>
<spacer name="horizontalSpacer_23">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QLabel" name="mouse_dz_y_label">
<property name="text">
<string>y</string>
</property>
</widget>
</item>
<item>
<widget class="QSpinBox" name="mouse_dz_y"/>
</item>
<item>
<spacer name="horizontalSpacer_24">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::MinimumExpanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>0</width>
<height>0</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</widget>
</item>
<item>