From 4d7d5f82ed8f385b2141c739b3c96d0d09d1a541 Mon Sep 17 00:00:00 2001 From: Jiogo18 <30299784+Jiogo18@users.noreply.github.com> Date: Wed, 18 Mar 2026 00:20:22 -0400 Subject: [PATCH 1/4] Fix user mode ignores advanced fan mode Fan mode was always auto or silent after changing user mode or starting the application. Fixes #246 --- src/operate.cpp | 5 +++++ src/settings.cpp | 4 ++++ src/settings.h | 1 + 3 files changed, 10 insertions(+) diff --git a/src/operate.cpp b/src/operate.cpp index ecaacce..6aaa646 100644 --- a/src/operate.cpp +++ b/src/operate.cpp @@ -392,6 +392,11 @@ void Operate::setUserMode(user_mode userMode) const { bool superBattery = false; QString userModeStr; + Settings s; + if (s.getValue(settingsGroup + "fanModeAdvanced", false).toBool()) { + fanMode = fan_mode::advanced_fan_mode; + } + switch (userMode) { case user_mode::balanced_mode: userModeStr = "balanced_mode"; diff --git a/src/settings.cpp b/src/settings.cpp index 164dd3d..3ba07c0 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -26,6 +26,10 @@ QVariant Settings::getValue(const QString &key) { return settings.value(key); } +QVariant Settings::getValue(const QString &key, const QVariant &defaultValue) { + return settings.value(key, defaultValue); +} + QVector Settings::getValueVector(const QString &key) { QVector value; std::stringstream string_stream(settings.value(key).toString().toStdString()); diff --git a/src/settings.h b/src/settings.h index fda9604..9cc63c9 100644 --- a/src/settings.h +++ b/src/settings.h @@ -25,6 +25,7 @@ class Settings { public: QVariant getValue(const QString &key); + QVariant getValue(const QString &key, const QVariant &defaultValue); QVector getValueVector(const QString &key); static void setValue(const QString &key, const QVariant &value); static void setValue(const QString &key, const QVector &value); From 31a9a168ca56caf729a7378e46b7235e410906ca Mon Sep 17 00:00:00 2001 From: Jiogo18 <30299784+Jiogo18@users.noreply.github.com> Date: Sat, 21 Mar 2026 00:37:09 -0400 Subject: [PATCH 2/4] getValue default to false --- src/operate.cpp | 2 +- src/settings.cpp | 4 ---- src/settings.h | 1 - 3 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/operate.cpp b/src/operate.cpp index 6aaa646..93b401c 100644 --- a/src/operate.cpp +++ b/src/operate.cpp @@ -393,7 +393,7 @@ void Operate::setUserMode(user_mode userMode) const { QString userModeStr; Settings s; - if (s.getValue(settingsGroup + "fanModeAdvanced", false).toBool()) { + if (s.getValue(settingsGroup + "fanModeAdvanced").toBool()) { fanMode = fan_mode::advanced_fan_mode; } diff --git a/src/settings.cpp b/src/settings.cpp index 3ba07c0..164dd3d 100644 --- a/src/settings.cpp +++ b/src/settings.cpp @@ -26,10 +26,6 @@ QVariant Settings::getValue(const QString &key) { return settings.value(key); } -QVariant Settings::getValue(const QString &key, const QVariant &defaultValue) { - return settings.value(key, defaultValue); -} - QVector Settings::getValueVector(const QString &key) { QVector value; std::stringstream string_stream(settings.value(key).toString().toStdString()); diff --git a/src/settings.h b/src/settings.h index 9cc63c9..fda9604 100644 --- a/src/settings.h +++ b/src/settings.h @@ -25,7 +25,6 @@ class Settings { public: QVariant getValue(const QString &key); - QVariant getValue(const QString &key, const QVariant &defaultValue); QVector getValueVector(const QString &key); static void setValue(const QString &key, const QVariant &value); static void setValue(const QString &key, const QVector &value); From a69f51c2cc986d13d80fbf92f8b0c6da11848d4a Mon Sep 17 00:00:00 2001 From: Jiogo18 <30299784+Jiogo18@users.noreply.github.com> Date: Sun, 22 Mar 2026 18:37:27 -0400 Subject: [PATCH 3/4] restore advanced only in performance --- src/operate.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/operate.cpp b/src/operate.cpp index 93b401c..87e5f8e 100644 --- a/src/operate.cpp +++ b/src/operate.cpp @@ -391,11 +391,7 @@ void Operate::setUserMode(user_mode userMode) const { fan_mode fanMode = fan_mode::auto_fan_mode; bool superBattery = false; QString userModeStr; - Settings s; - if (s.getValue(settingsGroup + "fanModeAdvanced").toBool()) { - fanMode = fan_mode::advanced_fan_mode; - } switch (userMode) { case user_mode::balanced_mode: @@ -404,6 +400,9 @@ void Operate::setUserMode(user_mode userMode) const { case user_mode::performance_mode: shiftMode = shift_mode::turbo_mode; // sport on some devices? userModeStr = "performance_mode"; + if (s.getValue(settingsGroup + "fanModeAdvanced").toBool()) { + fanMode = fan_mode::advanced_fan_mode; + } break; case user_mode::silent_mode: fanMode = fan_mode::silent_fan_mode; From 01556b0c5957b4fdaa7a905bd94c1a7018c70a73 Mon Sep 17 00:00:00 2001 From: Jiogo18 <30299784+Jiogo18@users.noreply.github.com> Date: Sun, 22 Mar 2026 18:47:54 -0400 Subject: [PATCH 4/4] apply advanced only in performance --- src/operate.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/operate.cpp b/src/operate.cpp index 87e5f8e..5fd8cc5 100644 --- a/src/operate.cpp +++ b/src/operate.cpp @@ -475,7 +475,7 @@ void Operate::setFanMode(int value) const { } void Operate::setFanModeAdvanced(bool enabled) const { - if (enabled) + if (enabled && getUserMode() == user_mode::performance_mode) helper.putValue(fanModeAddress, fanModeAdvanced); else helper.putValue(fanModeAddress, fanModeAuto);