From ea4cc0b3958166e6d79f8620f9786c350db397d1 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 4 Jul 2020 13:05:53 +0200 Subject: [PATCH] Qt: use button box for most buttons --- rpcs3/rpcs3qt/pad_settings_dialog.cpp | 54 +++++++++++++++++------ rpcs3/rpcs3qt/pad_settings_dialog.h | 5 ++- rpcs3/rpcs3qt/pad_settings_dialog.ui | 62 ++++++--------------------- 3 files changed, 57 insertions(+), 64 deletions(-) diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_settings_dialog.cpp index 9759e8fa80..3fb3b421f8 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_settings_dialog.cpp @@ -170,11 +170,27 @@ pad_settings_dialog::pad_settings_dialog(QWidget *parent, const GameInfo *game) } }); - // Cancel Button - connect(ui->b_cancel, &QAbstractButton::clicked, this, &pad_settings_dialog::CancelExit); + ui->buttonBox->button(QDialogButtonBox::Reset)->setText(tr("Filter Noise")); - // Save Button - connect(ui->b_ok, &QAbstractButton::clicked, this, &pad_settings_dialog::SaveExit); + connect(ui->buttonBox, &QDialogButtonBox::clicked, [this](QAbstractButton* button) + { + if (button == ui->buttonBox->button(QDialogButtonBox::Save)) + { + SaveExit(); + } + else if (button == ui->buttonBox->button(QDialogButtonBox::Cancel)) + { + CancelExit(); + } + else if (button == ui->buttonBox->button(QDialogButtonBox::Reset)) + { + OnPadButtonClicked(button_ids::id_blacklist); + } + else if (button == ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)) + { + OnPadButtonClicked(button_ids::id_reset_parameters); + } + }); // Refresh Button connect(ui->b_refresh, &QPushButton::clicked, this, &pad_settings_dialog::RefreshInputTypes); @@ -260,12 +276,8 @@ void pad_settings_dialog::InitButtons() insertButton(button_ids::id_pad_rstick_right, ui->b_rstick_right); insertButton(button_ids::id_pad_rstick_up, ui->b_rstick_up); - m_padButtons->addButton(ui->b_reset, button_ids::id_reset_parameters); - m_padButtons->addButton(ui->b_blacklist, button_ids::id_blacklist); m_padButtons->addButton(ui->b_refresh, button_ids::id_refresh); m_padButtons->addButton(ui->b_addProfile, button_ids::id_add_profile); - m_padButtons->addButton(ui->b_ok, button_ids::id_ok); - m_padButtons->addButton(ui->b_cancel, button_ids::id_cancel); connect(m_padButtons, static_cast(&QButtonGroup::buttonClicked), this, &pad_settings_dialog::OnPadButtonClicked); @@ -560,6 +572,11 @@ void pad_settings_dialog::ReactivateButtons() but->setFocusPolicy(Qt::StrongFocus); } + for (auto but : ui->buttonBox->buttons()) + { + but->setFocusPolicy(Qt::StrongFocus); + } + ui->tabWidget->setFocusPolicy(Qt::TabFocus); ui->chooseProfile->setFocusPolicy(Qt::WheelFocus); @@ -894,7 +911,7 @@ void pad_settings_dialog::SwitchButtons(bool is_enabled) ui->gb_mouse_accel->setEnabled(is_enabled && m_handler->m_type == pad_handler::keyboard); ui->gb_mouse_dz->setEnabled(is_enabled && m_handler->m_type == pad_handler::keyboard); ui->gb_stick_lerp->setEnabled(is_enabled && m_handler->m_type == pad_handler::keyboard); - ui->b_blacklist->setEnabled(is_enabled && m_handler->m_type != pad_handler::keyboard); + ui->buttonBox->button(QDialogButtonBox::Reset)->setEnabled(is_enabled && m_handler->m_type != pad_handler::keyboard); for (int i = button_ids::id_pad_begin + 1; i < button_ids::id_pad_end; i++) { @@ -931,6 +948,11 @@ void pad_settings_dialog::OnPadButtonClicked(int id) but->setFocusPolicy(Qt::ClickFocus); } + for (auto but : ui->buttonBox->buttons()) + { + but->setFocusPolicy(Qt::ClickFocus); + } + ui->tabWidget->setFocusPolicy(Qt::ClickFocus); ui->chooseProfile->setFocusPolicy(Qt::ClickFocus); @@ -1184,7 +1206,7 @@ void pad_settings_dialog::ChangeInputType() ui->b_addProfile->setEnabled(config_enabled); ui->chooseProfile->setEnabled(config_enabled); - ui->b_reset->setEnabled(!is_ldd_pad); + ui->buttonBox->button(QDialogButtonBox::RestoreDefaults)->setEnabled(!is_ldd_pad); ui->chooseHandler->setEnabled(!is_ldd_pad); } @@ -1464,10 +1486,18 @@ bool pad_settings_dialog::GetIsLddPad(int index) const void pad_settings_dialog::ResizeDialog() { + // Widgets + const QSize buttons_size(0, ui->buttonBox->sizeHint().height()); + const QSize tabwidget_size = ui->tabWidget->sizeHint(); + + // Spacing + const int nr_of_spacings = 1; // Number of widgets - 1 + const QSize spacing_size(0, layout()->spacing() * nr_of_spacings); + + // Margins 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); + resize(tabwidget_size + buttons_size + margin_size + spacing_size); setMaximumSize(size()); } diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.h b/rpcs3/rpcs3qt/pad_settings_dialog.h index ac276d1c53..9994a1fce2 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.h +++ b/rpcs3/rpcs3qt/pad_settings_dialog.h @@ -101,8 +101,6 @@ private Q_SLOTS: void HandleDeviceClassChange(int index); /** Save the Pad Configuration to the current Pad Handler Config File */ void SaveProfile(); - void SaveExit(); - void CancelExit(); private: Ui::pad_settings_dialog *ui; @@ -151,6 +149,9 @@ private: // Input timer. Its Callback handles the input QTimer m_timer_input; + void SaveExit(); + void CancelExit(); + // Set vibrate data while keeping the current color void SetPadData(u32 large_motor, u32 small_motor); diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.ui b/rpcs3/rpcs3qt/pad_settings_dialog.ui index b76a3005a9..8a1a9e4b24 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.ui +++ b/rpcs3/rpcs3qt/pad_settings_dialog.ui @@ -38,7 +38,7 @@ 0 0 848 - 697 + 668 @@ -980,30 +980,6 @@ - - - - - - Save - - - false - - - - - - - Close - - - true - - - - - @@ -2089,7 +2065,7 @@ - 0 + 1 @@ -2370,30 +2346,6 @@ - - - - - - Filter Noise - - - false - - - - - - - Restore Defaults - - - false - - - - - @@ -2403,6 +2355,16 @@ + + + + QDialogButtonBox::Cancel|QDialogButtonBox::Reset|QDialogButtonBox::RestoreDefaults|QDialogButtonBox::Save + + + false + + +