From be8980fc2344f0154bbb95d69e9a6427f50d7fc0 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 4 Jul 2020 12:21:14 +0200 Subject: [PATCH] Qt: add scrollarea to pad settings dialog --- rpcs3/rpcs3qt/pad_settings_dialog.cpp | 57 +- rpcs3/rpcs3qt/pad_settings_dialog.h | 6 +- rpcs3/rpcs3qt/pad_settings_dialog.ui | 4542 +++++++++++++------------ 3 files changed, 2311 insertions(+), 2294 deletions(-) diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_settings_dialog.cpp index a0304359ee..9759e8fa80 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_settings_dialog.cpp @@ -78,20 +78,22 @@ pad_settings_dialog::pad_settings_dialog(QWidget *parent, const GameInfo *game) } // Create tab widget for 7 players - m_tabs = new QTabWidget; for (int i = 1; i < 8; i++) { - QWidget* tab = new QWidget; - m_tabs->addTab(tab, tr("Player %0").arg(i)); + const QString tab_title = tr("Player %0").arg(i); + + if (i == 1) + { + ui->tabWidget->setTabText(0, tab_title); + } + else + { + ui->tabWidget->addTab(new QWidget, tab_title); + } } - // on tab change: move the layout to the new tab and refresh - connect(m_tabs, &QTabWidget::currentChanged, this, &pad_settings_dialog::OnTabChanged); - - // Set tab widget as layout - QVBoxLayout* mainLayout = new QVBoxLayout; - mainLayout->addWidget(m_tabs); - setLayout(mainLayout); + // On tab change: move the layout to the new tab and refresh + connect(ui->tabWidget, &QTabWidget::currentChanged, this, &pad_settings_dialog::OnTabChanged); // Combobox: Input type connect(ui->chooseHandler, &QComboBox::currentTextChanged, this, &pad_settings_dialog::ChangeInputType); @@ -105,7 +107,7 @@ pad_settings_dialog::pad_settings_dialog(QWidget *parent, const GameInfo *game) } const pad_device_info info = ui->chooseDevice->itemData(index).value(); m_device_name = info.name; - if (!g_cfg_input.player[m_tabs->currentIndex()]->device.from_string(m_device_name)) + if (!g_cfg_input.player[ui->tabWidget->currentIndex()]->device.from_string(m_device_name)) { // Something went wrong cfg_log.error("Failed to convert device string: %s", m_device_name); @@ -121,7 +123,7 @@ pad_settings_dialog::pad_settings_dialog(QWidget *parent, const GameInfo *game) return; } m_profile = sstr(prof); - if (!g_cfg_input.player[m_tabs->currentIndex()]->profile.from_string(m_profile)) + if (!g_cfg_input.player[ui->tabWidget->currentIndex()]->profile.from_string(m_profile)) { // Something went wrong cfg_log.error("Failed to convert profile string: %s", m_profile); @@ -133,7 +135,7 @@ pad_settings_dialog::pad_settings_dialog(QWidget *parent, const GameInfo *game) // Pushbutton: Add Profile connect(ui->b_addProfile, &QAbstractButton::clicked, [this]() { - const int i = m_tabs->currentIndex(); + const int i = ui->tabWidget->currentIndex(); QInputDialog* dialog = new QInputDialog(this); dialog->setWindowTitle(tr("Choose a unique name")); @@ -195,15 +197,12 @@ pad_settings_dialog::pad_settings_dialog(QWidget *parent, const GameInfo *game) // repaint controller image ui->l_controller->setPixmap(gui::utils::get_colorized_pixmap(*ui->l_controller->pixmap(), QColor(), gui::utils::get_label_color("l_controller"), false, true)); - // set tab layout constraint to the first tab - m_tabs->widget(0)->layout()->setSizeConstraint(QLayout::SetFixedSize); - - layout()->setSizeConstraint(QLayout::SetFixedSize); - show(); RepaintPreviewLabel(ui->preview_stick_left, ui->slider_stick_left->value(), ui->slider_stick_left->size().width(), 0, 0, 0); RepaintPreviewLabel(ui->preview_stick_right, ui->slider_stick_right->value(), ui->slider_stick_right->size().width(), 0, 0, 0); + + ResizeDialog(); } pad_settings_dialog::~pad_settings_dialog() @@ -561,7 +560,7 @@ void pad_settings_dialog::ReactivateButtons() but->setFocusPolicy(Qt::StrongFocus); } - m_tabs->setFocusPolicy(Qt::TabFocus); + ui->tabWidget->setFocusPolicy(Qt::TabFocus); ui->chooseProfile->setFocusPolicy(Qt::WheelFocus); ui->chooseHandler->setFocusPolicy(Qt::WheelFocus); @@ -932,7 +931,7 @@ void pad_settings_dialog::OnPadButtonClicked(int id) but->setFocusPolicy(Qt::ClickFocus); } - m_tabs->setFocusPolicy(Qt::ClickFocus); + ui->tabWidget->setFocusPolicy(Qt::ClickFocus); ui->chooseProfile->setFocusPolicy(Qt::ClickFocus); ui->chooseHandler->setFocusPolicy(Qt::ClickFocus); @@ -957,7 +956,7 @@ void pad_settings_dialog::OnTabChanged(int index) SaveProfile(); // Move layout to the new tab - m_tabs->widget(index)->setLayout(ui->mainLayout); + ui->tabWidget->widget(index)->setLayout(ui->mainLayout); // Refresh handlers RefreshInputTypes(); @@ -1002,7 +1001,7 @@ std::shared_ptr pad_settings_dialog::GetHandler(pad_handler type void pad_settings_dialog::ChangeInputType() { bool force_enable = false; // enable configs even with disconnected devices - const int player = m_tabs->currentIndex(); + const int player = ui->tabWidget->currentIndex(); const bool is_ldd_pad = GetIsLddPad(player); std::string handler; @@ -1319,7 +1318,7 @@ void pad_settings_dialog::HandleDeviceClassChange(int index) void pad_settings_dialog::RefreshInputTypes() { - const int index = m_tabs->currentIndex(); + const int index = ui->tabWidget->currentIndex(); // Set the current input type from config. Disable signal to have ChangeInputType always executed exactly once ui->chooseHandler->blockSignals(true); @@ -1405,7 +1404,7 @@ void pad_settings_dialog::SaveExit() // Check for invalid selection if (!ui->chooseDevice->isEnabled() || ui->chooseDevice->currentIndex() < 0) { - const int i = m_tabs->currentIndex(); + const int i = ui->tabWidget->currentIndex(); g_cfg_input.player[i]->handler.from_default(); g_cfg_input.player[i]->device.from_default(); @@ -1462,3 +1461,13 @@ bool pad_settings_dialog::GetIsLddPad(int index) const return false; } + +void pad_settings_dialog::ResizeDialog() +{ + const auto margins = layout()->contentsMargins(); + const QSize tab_size = ui->tabWidget->sizeHint(); + const QSize margin_size(margins.left() + margins.right(), margins.top() + margins.bottom()); + + resize(tab_size + margin_size); + setMaximumSize(size()); +} diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.h b/rpcs3/rpcs3qt/pad_settings_dialog.h index 9b3ae371f0..ac276d1c53 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.h +++ b/rpcs3/rpcs3qt/pad_settings_dialog.h @@ -108,9 +108,6 @@ private: Ui::pad_settings_dialog *ui; std::string m_title_id; - // TabWidget - QTabWidget* m_tabs = nullptr; - // Capabilities bool m_enable_buttons{ false }; bool m_enable_rumble{ false }; @@ -182,6 +179,9 @@ private: /** Checks if the port at the given index is already reserved by the application as custom controller (ldd pad) */ bool GetIsLddPad(int index) const; + /** Resizes the dialog. We need to do this because the main scroll area can't determine the size on its own. */ + void ResizeDialog(); + protected: /** Handle keyboard handler input */ void keyPressEvent(QKeyEvent *keyEvent) override; diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.ui b/rpcs3/rpcs3qt/pad_settings_dialog.ui index f08bdbf40a..b76a3005a9 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.ui +++ b/rpcs3/rpcs3qt/pad_settings_dialog.ui @@ -9,8 +9,8 @@ 0 0 - 1044 - 640 + 866 + 715 @@ -20,2318 +20,952 @@ :/rpcs3.ico:/rpcs3.ico - - - - 60 - 10 - 889 - 612 - - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - Handlers + + + + + QFrame::NoFrame + + + 0 + + + true + + + + + 0 + 0 + 848 + 697 + + + + + Tab 1 + + + + 5 - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - - Refresh - - - false - - - - - - - - - - Devices + + 5 - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - - - - - Profiles + + 5 - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - - Add Profile - - - false - - - - - - - - - - - - - + 5 - - - D-Pad - - - - 6 - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Up - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - W - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Left - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - A - - - false - - - - - - - - - - Right - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - D - - - false - - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Down - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - S - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - Left Stick - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Up - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Up - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Left - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Left - - - false - - - - - - - - - - Right - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Right - - - false - - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Down - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Down - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - - - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 80 - - - - Trigger Thresholds - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - Qt::Horizontal - - - - - - - Qt::Horizontal - - - - - - - - - - - Qt::Horizontal - - - - - - - Qt::Horizontal - - - - - - - - - - - - Enable Vibration - - - - 5 - - - 9 - - - 5 - - - 9 - - - - - Large - - - true - - - - - - - Small - - - true - - - - - - - Switch - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Mouse Acceleration - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - x - - - - - - - 0.100000000000000 - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 0 - 0 - - - - - - - - y - - - - - - - 0.100000000000000 - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 0 - 0 - - - - - - - - - - - Mouse Deadzone - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - x - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 0 - 0 - - - - - - - - y - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 0 - 0 - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 0 - 0 - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - + - - - Save - - - false + + + Handlers + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + + Refresh + + + false + + + + - - - Close + + + Devices - - true + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + + + + + Profiles + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + + Add Profile + + + false + + + + - - - - - - 0 - - - - 0 - + - + + + 5 + - + - L1 + D-Pad - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Q - - - false - - - - - - - - - - L2 - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - R - - - false - - - - - - - - - - - - - - 10 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Select - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Space - - - false - - - - - - - - - - Start - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Enter - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - + - 10 + 6 - 0 + 5 - 0 + 5 - 0 + 5 - 0 + 5 - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - PS Button - - + + + + 0 + - 5 + 0 - 5 + 0 - 5 + 0 - 5 + 0 - - - Backspace + + + Qt::Horizontal - - false + + + 40 + 20 + + + + + + + Up + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + W + + + false + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - - R1 - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - E - - - false - - - - - - - - - - R2 - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - T - - - false - - - - - - - - - - - - - - - 0 - 200 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 415 - 256 - - - - - - - Qt::AutoText - - - :/Icons/controller.png - - - true - - - Qt::AlignBottom|Qt::AlignHCenter - - - - - - - - - - 10 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - L3 - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - F - - - false - - - - - - - - - - R3 - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - G - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 10 - - - - - Device Class - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - - - - - - - - - 104 - 0 - - - - Battery status and LED - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - 16777215 - 15 - - - - 0 - - - false - - - - - - - - 16777215 - 23 - - - - LED Settings - - - - - - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - Description - - - - - - This text should be replaced by an actual description.<br/><br/> - - - Qt::RichText - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - true - - - true - - - - - - - - - - - - 5 - - - - - Face Buttons - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Triangle - - - - 5 - - - 5 - - - 5 - - - 5 - + - - - V + + + Left - - false + + + 5 + + + 5 + + + 5 + + + 5 + + + + + A + + + false + + + + + + + + + + Right + + + 5 + + + 5 + + + 5 + + + 5 + + + + + D + + + false + + + + - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Square + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Down + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + S + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + Left Stick + + + + 5 - + + 5 + + + 5 + + + 5 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Up + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Up + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Left + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Left + + + false + + + + + + + + + + Right + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Right + + + false + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Down + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Down + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 0 + + + 1 + + + - 5 + 0 - 5 + 0 - 5 + 0 - 5 + 0 - - - Z + + + + 0 + 80 + - - false + + Trigger Thresholds + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + + + + + + + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + + + + + + + + + + Enable Vibration + + + + 5 + + + 9 + + + 5 + + + 9 + + + + + Large + + + true + + + + + + + Small + + + true + + + + + + + Switch + + + + - - - - - Circle - - + + - 5 + 0 - 5 + 0 - 5 + 0 - 5 + 0 - - - C - - - false + + + Mouse Acceleration + + + 5 + + + 5 + + + 5 + + + 5 + + + + + x + + + + + + + 0.100000000000000 + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + + + + + y + + + + + + + 0.100000000000000 + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + + + + + + Mouse Deadzone + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + x + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + + + + + y + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Cross - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - X - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - Right Stick - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Up - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - PgUp - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - Left - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Home - - - false - - - - - - - - - - Right - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - End - - - false - - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Down - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - PgDown - - - false - - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 1 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Stick Multipliers - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Left - - - - - - - 0.100000000000000 - - - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - Right - - - - - - - 0.100000000000000 - - - - - - - Qt::Horizontal - - - - 0 - 0 - - - - - - - - Analog Stick Deadzones - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - - - Qt::Horizontal - - - - - - - - - - - - - - - - - - Qt::Horizontal - - - - - - - - - - - - - - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Stick Interpolation - - - - 5 - - - 5 - - - 5 - - - 5 - - - - - Left - - - - - - - 0.100000000000000 - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 0 - 0 - - - - - - - - Right - - - - - - - 0.100000000000000 - - - - - - - Qt::Horizontal - - - QSizePolicy::MinimumExpanding - - - - 0 - 0 - - - - - - - - - + Qt::Vertical @@ -2340,62 +974,1436 @@ - 0 + 20 0 + + + + + + Save + + + false + + + + + + + Close + + + true + + + + + - - - - - - - Qt::Vertical - - - QSizePolicy::MinimumExpanding - - - - 20 - 0 - - - - - - - - - - Filter Noise - - - false - - - - - Restore Defaults + + + 0 - - false + + + + 0 + + + + + + + L1 + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Q + + + false + + + + + + + + + + L2 + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + R + + + false + + + + + + + + + + + + + + 10 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Select + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Space + + + false + + + + + + + + + + Start + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Enter + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 10 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + PS Button + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Backspace + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + R1 + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + E + + + false + + + + + + + + + + R2 + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + T + + + false + + + + + + + + + + + + + + + 0 + 200 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 415 + 256 + + + + + + + Qt::AutoText + + + :/Icons/controller.png + + + true + + + Qt::AlignBottom|Qt::AlignHCenter + + + + + + + + + + 10 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + L3 + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + F + + + false + + + + + + + + + + R3 + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + G + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 10 + + + + + Device Class + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + + + + + + + + + 104 + 0 + + + + Battery status and LED + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + 16777215 + 15 + + + + 0 + + + false + + + + + + + + 16777215 + 23 + + + + LED Settings + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 20 + 0 + + + + + + + + Description + + + + + + This text should be replaced by an actual description.<br/><br/> + + + Qt::RichText + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + true + + + true + + + + + + + + + + + + 5 - + + + + Face Buttons + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Triangle + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + V + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Square + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Z + + + false + + + + + + + + + + Circle + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + C + + + false + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Cross + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + X + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + Right Stick + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Up + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + PgUp + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + Left + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Home + + + false + + + + + + + + + + Right + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + End + + + false + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Down + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + PgDown + + + false + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + 0 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Stick Multipliers + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Left + + + + + + + 0.100000000000000 + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + Right + + + + + + + 0.100000000000000 + + + + + + + Qt::Horizontal + + + + 0 + 0 + + + + + + + + + + + Analog Stick Deadzones + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + + + Qt::Horizontal + + + + + + + + + + + + + + + + + + Qt::Horizontal + + + + + + + + + + + + + + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Stick Interpolation + + + + 5 + + + 5 + + + 5 + + + 5 + + + + + Left + + + + + + + 0.100000000000000 + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + + + + + Right + + + + + + + 0.100000000000000 + + + + + + + Qt::Horizontal + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 0 + 0 + + + + + + + + + + + + Qt::Vertical + + + QSizePolicy::MinimumExpanding + + + + 20 + 0 + + + + + + + + + + Filter Noise + + + false + + + + + + + Restore Defaults + + + false + + + + + + - - - - - + + + + +