From 6948c0a30ad686c0b693acd4bf32aea44d93e877 Mon Sep 17 00:00:00 2001 From: Megamouse Date: Sat, 6 Jul 2024 17:47:54 +0200 Subject: [PATCH] Qt: disable battery LED settings if the pad handler doesn't support it --- rpcs3/rpcs3qt/pad_led_settings_dialog.cpp | 20 +++++++++++++++----- rpcs3/rpcs3qt/pad_led_settings_dialog.h | 2 +- rpcs3/rpcs3qt/pad_settings_dialog.cpp | 3 ++- rpcs3/rpcs3qt/pad_settings_dialog.h | 1 + 4 files changed, 19 insertions(+), 7 deletions(-) diff --git a/rpcs3/rpcs3qt/pad_led_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_led_settings_dialog.cpp index 1b1cdcab69..535965c7bc 100644 --- a/rpcs3/rpcs3qt/pad_led_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_led_settings_dialog.cpp @@ -5,7 +5,7 @@ #include #include -pad_led_settings_dialog::pad_led_settings_dialog(QDialog* parent, int colorR, int colorG, int colorB, bool has_rgb, bool has_player_led, bool player_led_enabled, bool has_battery, bool led_low_battery_blink, bool led_battery_indicator, int led_battery_indicator_brightness) +pad_led_settings_dialog::pad_led_settings_dialog(QDialog* parent, int colorR, int colorG, int colorB, bool has_rgb, bool has_player_led, bool player_led_enabled, bool has_battery, bool has_battery_led, bool led_low_battery_blink, bool led_battery_indicator, int led_battery_indicator_brightness) : QDialog(parent) , ui(new Ui::pad_led_settings_dialog) , m_initial{colorR, colorG, colorB, player_led_enabled, led_low_battery_blink, led_battery_indicator, led_battery_indicator_brightness} @@ -23,8 +23,8 @@ pad_led_settings_dialog::pad_led_settings_dialog(QDialog* parent, int colorR, in ui->gb_player_led->setEnabled(has_player_led); ui->gb_led_color->setEnabled(has_rgb); - ui->gb_battery_status->setEnabled(has_battery); - ui->gb_indicator_brightness->setEnabled(has_battery && has_rgb); // Let's restrict this to rgb capable devices for now + ui->gb_battery_status->setEnabled(has_battery && has_battery_led); + ui->gb_indicator_brightness->setEnabled(has_battery && has_battery_led && has_rgb); // Let's restrict this to rgb capable devices for now connect(ui->bb_dialog_buttons, &QDialogButtonBox::clicked, [this](QAbstractButton* button) { @@ -61,8 +61,18 @@ pad_led_settings_dialog::pad_led_settings_dialog(QDialog* parent, int colorR, in redraw_color_sample(); } }); - connect(ui->hs_indicator_brightness, &QAbstractSlider::valueChanged, this, &pad_led_settings_dialog::update_slider_label); - connect(ui->cb_led_indicate, &QCheckBox::toggled, this, &pad_led_settings_dialog::battery_indicator_checked); + + if (ui->gb_battery_status->isEnabled()) + { + connect(ui->hs_indicator_brightness, &QAbstractSlider::valueChanged, this, &pad_led_settings_dialog::update_slider_label); + } + + if (ui->cb_led_indicate->isEnabled()) + { + connect(ui->cb_led_indicate, &QCheckBox::toggled, this, &pad_led_settings_dialog::battery_indicator_checked); + } + + battery_indicator_checked(ui->cb_led_indicate->isChecked()); } // Draw color sample after showing the dialog, in order to have proper dimensions diff --git a/rpcs3/rpcs3qt/pad_led_settings_dialog.h b/rpcs3/rpcs3qt/pad_led_settings_dialog.h index 50f6e55bd8..ca78cec01e 100644 --- a/rpcs3/rpcs3qt/pad_led_settings_dialog.h +++ b/rpcs3/rpcs3qt/pad_led_settings_dialog.h @@ -14,7 +14,7 @@ class pad_led_settings_dialog : public QDialog Q_OBJECT public: - explicit pad_led_settings_dialog(QDialog* parent, int colorR, int colorG, int colorB, bool has_rgb, bool has_player_led, bool player_led_enabled, bool has_battery, bool led_low_battery_blink, bool led_battery_indicator, int led_battery_indicator_brightness); + explicit pad_led_settings_dialog(QDialog* parent, int colorR, int colorG, int colorB, bool has_rgb, bool has_player_led, bool player_led_enabled, bool has_battery, bool has_battery_led, bool led_low_battery_blink, bool led_battery_indicator, int led_battery_indicator_brightness); ~pad_led_settings_dialog(); struct led_settings diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.cpp b/rpcs3/rpcs3qt/pad_settings_dialog.cpp index eaf67869c7..5cbfdff864 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.cpp +++ b/rpcs3/rpcs3qt/pad_settings_dialog.cpp @@ -404,7 +404,7 @@ void pad_settings_dialog::InitButtons() ensure(m_handler); const cfg_pad& cfg = GetPlayerConfig(); SetPadData(0, 0, cfg.led_battery_indicator.get()); - pad_led_settings_dialog dialog(this, cfg.colorR, cfg.colorG, cfg.colorB, m_handler->has_rgb(), m_handler->has_player_led(), cfg.player_led_enabled.get(), m_handler->has_battery(), cfg.led_low_battery_blink.get(), cfg.led_battery_indicator.get(), cfg.led_battery_indicator_brightness); + pad_led_settings_dialog dialog(this, cfg.colorR, cfg.colorG, cfg.colorB, m_handler->has_rgb(), m_handler->has_player_led(), cfg.player_led_enabled.get(), m_handler->has_battery(), m_handler->has_battery_led(), cfg.led_low_battery_blink.get(), cfg.led_battery_indicator.get(), cfg.led_battery_indicator_brightness); connect(&dialog, &pad_led_settings_dialog::pass_led_settings, this, [this](const pad_led_settings_dialog::led_settings& settings) { ensure(m_handler); @@ -1220,6 +1220,7 @@ void pad_settings_dialog::UpdateLabels(bool is_reset) // Apply stored/default LED settings to the device m_enable_led = m_handler->has_led(); + m_enable_battery_led = m_handler->has_battery_led(); SetPadData(0, 0); // Enable battery and LED group box diff --git a/rpcs3/rpcs3qt/pad_settings_dialog.h b/rpcs3/rpcs3qt/pad_settings_dialog.h index 83f1161402..60e331f6a1 100644 --- a/rpcs3/rpcs3qt/pad_settings_dialog.h +++ b/rpcs3/rpcs3qt/pad_settings_dialog.h @@ -118,6 +118,7 @@ private: bool m_enable_deadzones{ false }; bool m_enable_led{ false }; bool m_enable_battery{ false }; + bool m_enable_battery_led{ false }; bool m_enable_motion{ false }; bool m_enable_pressure_intensity_button{ true };