From 532b1c967a683136f0bc29616109ff79aa2de099 Mon Sep 17 00:00:00 2001 From: Arisotura Date: Sun, 6 Mar 2022 22:07:42 +0100 Subject: [PATCH] fix up the power management dialog --- .../PowerManagement/PowerManagementDialog.cpp | 30 ++++++++++++++++++- .../PowerManagement/PowerManagementDialog.h | 7 +++++ .../PowerManagement/PowerManagementDialog.ui | 3 ++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.cpp b/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.cpp index 0cd204d6..49b1a550 100644 --- a/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.cpp +++ b/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.cpp @@ -31,14 +31,25 @@ PowerManagementDialog* PowerManagementDialog::currentDlg = nullptr; PowerManagementDialog::PowerManagementDialog(QWidget* parent) : QDialog(parent), ui(new Ui::PowerManagementDialog) { + inited = false; + ui->setupUi(this); setAttribute(Qt::WA_DeleteOnClose); - if (NDS::ConsoleType) + if (NDS::ConsoleType == 1) + { ui->grpDSBattery->setEnabled(false); + + oldDSiBatteryCharging = DSi_BPTWL::GetBatteryCharging(); + oldDSiBatteryLevel = DSi_BPTWL::GetBatteryLevel(); + } else + { ui->grpDSiBattery->setEnabled(false); + oldDSBatteryLevel = SPI_Powerman::GetBatteryLevelOkay(); + } + updateDSBatteryLevelControls(); ui->cbDSiBatteryCharging->setChecked(DSi_BPTWL::GetBatteryCharging()); @@ -52,6 +63,8 @@ PowerManagementDialog::PowerManagementDialog(QWidget* parent) : QDialog(parent), case DSi_BPTWL::batteryLevel_Full: dsiBatterySliderPos = 4; break; } ui->sliderDSiBatteryLevel->setValue(dsiBatterySliderPos); + + inited = true; } PowerManagementDialog::~PowerManagementDialog() @@ -61,6 +74,19 @@ PowerManagementDialog::~PowerManagementDialog() void PowerManagementDialog::done(int r) { + if (r != QDialog::Accepted) + { + if (NDS::ConsoleType == 1) + { + DSi_BPTWL::SetBatteryCharging(oldDSiBatteryCharging); + DSi_BPTWL::SetBatteryLevel(oldDSiBatteryLevel); + } + else + { + SPI_Powerman::SetBatteryLevelOkay(oldDSBatteryLevel); + } + } + QDialog::done(r); closeDlg(); @@ -91,6 +117,8 @@ void PowerManagementDialog::on_cbDSiBatteryCharging_toggled() void PowerManagementDialog::on_sliderDSiBatteryLevel_valueChanged(int value) { + if (!inited) return; + u8 newBatteryLevel; switch (value) { diff --git a/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.h b/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.h index 666bbd69..0c7b853c 100644 --- a/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.h +++ b/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.h @@ -22,6 +22,8 @@ #include #include +#include "types.h" + namespace Ui { class PowerManagementDialog; } class PowerManagementDialog; @@ -63,6 +65,11 @@ private slots: private: Ui::PowerManagementDialog* ui; + bool inited; + bool oldDSBatteryLevel; + bool oldDSiBatteryCharging; + u8 oldDSiBatteryLevel; + void updateDSBatteryLevelControls(); }; diff --git a/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.ui b/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.ui index a2c12160..e0e7c6e8 100644 --- a/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.ui +++ b/src/frontend/qt_sdl/PowerManagement/PowerManagementDialog.ui @@ -20,6 +20,9 @@ Power management - melonDS + + QLayout::SetFixedSize +