diff --git a/GUI/AppGUI.py b/GUI/AppGUI.py index fe3e3af..619db9f 100644 --- a/GUI/AppGUI.py +++ b/GUI/AppGUI.py @@ -38,6 +38,11 @@ class ThermalMode(Enum): Custom = 'Custom' Balanced = 'Balanced' G_Mode = 'G_Mode' + +class SettingsKey(Enum): + Mode = "app/mode" + CPUFanSpeed = "app/fan/cpu/speed" + GPUFanSpeed = "app/fan/gpu/speed" def errorExit(message: str, message2: str = None) -> None: alert("Oh-oh", message, message2, QtWidgets.QMessageBox.Icon.Critical) @@ -48,7 +53,7 @@ class TCC_GUI(QtWidgets.QWidget): FAILSAFE_CPU_TEMP = 95 FAILSAFE_GPU_TEMP = 85 APP_NAME = "Thermal Control Center for Dell G15 5515" - APP_VERSION = "1.1.0" + APP_VERSION = "1.2.0" APP_DESCRIPTION = "This app is an open-source replacement for Alienware Control Center " APP_URL = "github.com/AlexIII/tcc-g15" @@ -59,6 +64,8 @@ def __init__(self, awcc: AWCCThermal): super().__init__() self._awcc = awcc + self.settings = QtCore.QSettings(self.APP_URL, "AWCC") + # Set main window props self.setFixedSize(600, 0) self.setWindowFlags(QtCore.Qt.Window | QtCore.Qt.WindowMinimizeButtonHint | QtCore.Qt.WindowCloseButtonHint) @@ -139,10 +146,6 @@ def onModeChange(val: str): print(f'Set mode {val}: ' + ('ok' if res else 'fail')) if not res: errorExit(f"Failed to set mode {val}", "Program is terminated") - self._thermalGPU.blockSignals(True) - self._thermalGPU.setSpeedSlider() - self._thermalCPU.setSpeedSlider() - self._thermalGPU.blockSignals(False) updateFanSpeed() self._modeSwitch.setChecked(ThermalMode.Balanced.value) @@ -181,7 +184,20 @@ def updateOutput(): self._thermalGPU.speedSliderChanged(updateFanSpeed) self._thermalCPU.speedSliderChanged(updateFanSpeed) + # Restore saved settings + savedMode = self.settings.value(SettingsKey.Mode.value) + if savedMode: self._modeSwitch.setChecked(savedMode) + savedSpeed = self.settings.value(SettingsKey.CPUFanSpeed.value) + self._thermalCPU.setSpeedSlider(savedSpeed) + savedSpeed = self.settings.value(SettingsKey.GPUFanSpeed.value) + self._thermalGPU.setSpeedSlider(savedSpeed) + def closeEvent(self, event): + # Save settings + self.settings.setValue(SettingsKey.Mode.value, self._modeSwitch.getChecked()) + self.settings.setValue(SettingsKey.CPUFanSpeed.value, self._thermalCPU.getSpeedSlider()) + self.settings.setValue(SettingsKey.GPUFanSpeed.value, self._thermalGPU.getSpeedSlider()) + # Set mode to Balanced before exit self._periodicTask.stop() prevMode = self._modeSwitch.getChecked() self._modeSwitch.setChecked(ThermalMode.Balanced.value) diff --git a/README.md b/README.md index b9d8053..022d613 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ If this alternative works out for you, you can safely remove from your PC: I'll implement these things if the project receives sufficient number of stars* - ✔️ Minimize to tray (10x ⭐) -- Save settings between restarts (20x ⭐) +- ✔️ Save settings between restarts (20x ⭐) - Autorun on system startup option (30x ⭐) - "Target temperature mode" - automatically control the fans to maintain user-specified GPU/CPU temperature (40x ⭐) - Proper Windows installer (50x ⭐)