From 93066eb9ec30ec23ca0eba8eebf4148533f5bd90 Mon Sep 17 00:00:00 2001 From: Fabian Vogt Date: Mon, 17 Jun 2024 11:49:22 +0200 Subject: [PATCH] Revert "Added setting for battery conservation mode (Lenovo)" This reverts commit 53f688de8eff37a52efed55b52d9e51f5217a185. --- daemon/chargethreshold_helper_actions.actions | 120 ------------- daemon/chargethresholdhelper.cpp | 52 ------ daemon/chargethresholdhelper.h | 4 - daemon/dbus/org.kde.Solid.PowerManagement.xml | 6 - daemon/powerdevilcore.cpp | 30 ---- daemon/powerdevilcore.h | 4 - kcmodule/profiles/ExternalServiceSettings.cpp | 158 +++++------------- kcmodule/profiles/ExternalServiceSettings.h | 20 --- kcmodule/profiles/PowerKCM.cpp | 6 - kcmodule/profiles/PowerKCM.h | 3 - kcmodule/profiles/ui/GlobalConfig.qml | 16 +- 11 files changed, 43 insertions(+), 376 deletions(-) Index: powerdevil-6.1.0/daemon/chargethreshold_helper_actions.actions =================================================================== --- powerdevil-6.1.0.orig/daemon/chargethreshold_helper_actions.actions +++ powerdevil-6.1.0/daemon/chargethreshold_helper_actions.actions @@ -231,111 +231,3 @@ Description[zh_CN]=请进行身份验证 Description[zh_TW]=認證以設定電池充電限制。 Policy=auth_admin Persistence=session - -[org.kde.powerdevil.chargethresholdhelper.getconservationmode] -Name=Check battery conservation mode -Name[ar]=تحقق من وضع الحفاظ على البطارية -Name[bg]=Проверка на режима за пестене на батерията -Name[ca]=Comprova el mode de conservació de la bateria -Name[ca@valencia]=Comprova el mode de conservació de la bateria -Name[en_GB]=Check battery conservation mode -Name[eo]=Kontroli baterikonservan reĝimon -Name[es]=Comprobar el modo de conservación de la batería -Name[eu]=Egiaztatu bateriaren kontserbazio-modua -Name[fr]=Vérifier le mode d'économie d'énergie -Name[he]=בדיקת מצב שימור סוללה -Name[hu]=Akkumulátorkíméló mód ellenőrzése -Name[ia]=Verifica le modo de conservation de batteria -Name[it]=Controlla la modalità di risparmio della batteria -Name[ka]=ელემენტის შენახვის რეჟიმის შემოწმება -Name[lt]=Tikrinti akumuliatoriaus saugojimo veikseną -Name[nl]=Conserveringsmodus van batterij controleren -Name[pl]=Odczytaj tryb zarządzania baterią -Name[sk]=Skontrolovať režim ochrany batérie -Name[sl]=Preverite način varčevanja z baterijo -Name[tr]=Pil Tasarrufu Kipini Denetle -Name[uk]=Перевірка режиму консервації акумулятора -Name[x-test]=xxCheck battery conservation modexx -Name[zh_CN]=检查节电模式模式 -Name[zh_TW]=查看電池保護模式 -Description=Authenticate to check the current state of battery conservation mode. -Description[ar]=استوثق للتحقق من الحالة الحالية لوضع الحفاظ على البطارية. -Description[bg]=Удостоверете автентичността си, за да проверите текущото състояние на режима за пестене на батерията. -Description[ca]=Autenticació per a comprovar l'estat actual del mode de conservació de la bateria. -Description[ca@valencia]=Autenticació per a comprovar l'estat actual del mode de conservació de la bateria. -Description[en_GB]=Authenticate to check the current state of battery conservation mode. -Description[eo]=Aŭtentiĝu por kontroli la aktualan staton de bateriokonserva reĝimo. -Description[es]=Debe autenticarse para comprobar el estado actual del modo de conservación de la batería. -Description[eu]=Kautotu bateriaren kontserbazio-moduaren uneko egoera egiaztatzeko. -Description[fr]=S'authentifier pour vérifier l'état courant à la limite actuelle de charge de la batterie -Description[he]=יש לעבור אימות כדי לבדוק את מה המצב הנוכחי של מצב שימור הסוללה. -Description[hu]=Hitelesítés szükséges az akkumulátorkímélő mód jelenlegi állapotának ellenőrzéséhez. -Description[ia]=Authentica per verificar le stato currente del modo de conservation de batteria. -Description[it]=Autenticati per controllare lo stato attuale della modalità di risparmio della batteria. -Description[ka]=გაიარეთ ავთენტიკაცია ელემენტის შენახვის მიმდინარე რეჟიმის მისაღებად. -Description[lt]=Norint tikrinti akumuliatoriaus saugojimo veikseną, turi būti nustatyta tapatybė. -Description[nl]=Authenticeren om de huidige status van de conserveringsmodus van de batterij te controleren. -Description[pl]=Uwierzytelnij, aby odczytaj tryb zarządzania baterią. -Description[sk]=Overenie totožnosti na zobrazenie aktuálneho režimu ochrany batérie. -Description[sl]=Avtenticirajte se, da preverite trenutno stanje načina varčevanja baterije. -Description[tr]=Pil tasarrufu kipinin geçerli durumunu denetlemek için kimliğinizi doğrulayın. -Description[uk]=Пройдіть розпізнавання для перевірки поточного стану режиму консервації акумулятора. -Description[x-test]=xxAuthenticate to check the current state of battery conservation mode.xx -Description[zh_CN]=进行身份验证以检查节电模式的当前状态。 -Description[zh_TW]=認證以查看目前的電池保護模式。 -Policy=yes -PolicyInactive=yes - -[org.kde.powerdevil.chargethresholdhelper.setconservationmode] -Name=Set battery conservation mode -Name[ar]=عيّن وضع الحفاظ على البطارية -Name[bg]=Задаване на режим за пестене на батерията -Name[ca]=Estableix el mode de conservació de la bateria -Name[ca@valencia]=Establix el mode de conservació de la bateria -Name[en_GB]=Set battery conservation mode -Name[eo]=Agordi baterikonservan reĝimon -Name[es]=Definir el modo de conservación de la batería -Name[eu]=Ezarri bateriaren kontserbazio-modua -Name[fr]=Définir le mode d'économie de la batterie -Name[he]=הגדרת מצב שימור סוללה -Name[hu]=Akkumulátorkímélő mód beállítása -Name[ia]=Fixa le modo de conservation del batteria -Name[it]=Imposta la modalità di risparmio della batteria -Name[ka]=ელემენტის შენახვის რეჟიმის დაყენება -Name[lt]=Nustatyti akumuliatoriaus saugojimo veikseną -Name[nl]=De conserveringsmodus van de batterij instellen -Name[pl]=Ustaw tryb zarządzania baterią -Name[sk]=Nastaviť režim ochrany batérie -Name[sl]=Nastavi način varčevanja baterije -Name[tr]=Pil Tasarrufu Kipini Ayarla -Name[uk]=Встановлення режиму консервації акумулятора -Name[x-test]=xxSet battery conservation modexx -Name[zh_CN]=设置节电模式 -Name[zh_TW]=設定電池保護模式 -Description=Authenticate to set the battery conservation mode. -Description[ar]=استوثق لتعيين وضع الحفاظ على البطارية. -Description[bg]=Удостоверете автентичността си, за да зададете режима за пестене на батерията. -Description[ca]=Autenticació per a establir el mode de conservació de la bateria. -Description[ca@valencia]=Autenticació per a establir el mode de conservació de la bateria. -Description[en_GB]=Authenticate to set the battery conservation mode. -Description[eo]=Aŭtentiĝu por meti la bateriokonservan reĝimon. -Description[es]=Debe autenticarse para definir el modo de conservación de la batería. -Description[eu]=Kautotu bateriaren kontserbazio-modua ezartzeko. -Description[fr]=S'authentifier pour définir l'état d'économie de la batterie -Description[he]=יש לעבור אימות כדי להגדיר את מצב שימור הסוללה. -Description[hu]=Hitelesítés szükséges az akkumulátorkímélő mód beállításához. -Description[ia]=Authentica per fixar le modo de conservation de batteria. -Description[it]=Autenticati per impostare la modalità di risparmio della batteria. -Description[ka]=გაიარეთ ავთენტიკაცია ელემენტის შენახვის დონის დასაყენებლად. -Description[lt]=Norint nustatyti akumuliatoriaus saugojimo veikseną, turi būti nustatyta tapatybė. -Description[nl]=Authenticeren om de conserveringsmodus van de batterij in te stellen. -Description[pl]=Uwierzytelnij, aby ustawić tryb zarządzania baterią. -Description[sk]=Overenie totožnosti na nastavenie režimu ochrany batérie. -Description[sl]=Avtenticirajte se, da bi nastavili način varčevanje baterije. -Description[tr]=Pil tasarrufu kipini ayarlamak için kimliğinizi doğrulayın. -Description[uk]=Пройдіть розпізнавання для встановлення режиму консервації акумулятора. -Description[x-test]=xxAuthenticate to set the battery conservation mode.xx -Description[zh_CN]=进行身份验证以设置节电模式。 -Description[zh_TW]=認證以設定電池保護模式。 -Policy=auth_admin -Persistence=session Index: powerdevil-6.1.0/daemon/chargethresholdhelper.cpp =================================================================== --- powerdevil-6.1.0.orig/daemon/chargethresholdhelper.cpp +++ powerdevil-6.1.0/daemon/chargethresholdhelper.cpp @@ -1,6 +1,5 @@ /* * SPDX-FileCopyrightText: 2020 Kai Uwe Broulik - * SPDX-FileCopyrightText: 2023 Fabian Arndt * * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ @@ -17,7 +16,6 @@ #include static const QString s_powerSupplySysFsPath = QStringLiteral("/sys/class/power_supply"); -static const QString s_conservationModeSysFsPath = QStringLiteral("/sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode"); static const QString s_chargeStartThreshold = QStringLiteral("charge_control_start_threshold"); static const QString s_chargeEndThreshold = QStringLiteral("charge_control_end_threshold"); @@ -174,56 +172,6 @@ ActionReply ChargeThresholdHelper::setth return reply; } - return ActionReply(); -} - -// This handles Lenovo's "battery conservation mode" that limits the threshold to a fixed value -// This value differs from model to model (most 55-60%, others ~80%) and is unknown (last checked in Kernel 6.3) -ActionReply ChargeThresholdHelper::getconservationmode(const QVariantMap &args) -{ - Q_UNUSED(args); - - QFile file(s_conservationModeSysFsPath); - if (!file.open(QIODevice::ReadOnly)) { - auto reply = ActionReply::HelperErrorReply(); - reply.setErrorDescription(QStringLiteral("Battery conservation mode is not supported")); - return reply; - } - - int state = 0; - QTextStream stream(&file); - stream >> state; - - if (state < 0 || state > 1) { - auto reply = ActionReply::HelperErrorReply(); - reply.setErrorDescription(QStringLiteral("Battery conservation mode is in an invalid state")); - return reply; - } - - ActionReply reply; - reply.setData({ - {QStringLiteral("batteryConservationModeEnabled"), !!state} - }); - return reply; -} - -ActionReply ChargeThresholdHelper::setconservationmode(const QVariantMap &args) -{ - const bool enabled = args.value(QStringLiteral("batteryConservationModeEnabled"), 0).toBool(); - QFile file(s_conservationModeSysFsPath); - - if (!file.open(QIODevice::WriteOnly)) { - auto reply = ActionReply::HelperErrorReply(); - reply.setErrorDescription(QStringLiteral("Failed to open battery conservation mode file")); - return reply; - } - - if (file.write(QByteArray::number(enabled)) == -1) { - auto reply = ActionReply::HelperErrorReply(); - reply.setErrorDescription(QStringLiteral("Failed to set battery conservation mode")); - return reply; - } - return ActionReply(); } Index: powerdevil-6.1.0/daemon/chargethresholdhelper.h =================================================================== --- powerdevil-6.1.0.orig/daemon/chargethresholdhelper.h +++ powerdevil-6.1.0/daemon/chargethresholdhelper.h @@ -1,6 +1,5 @@ /* * SPDX-FileCopyrightText: 2020 Kai Uwe Broulik - * SPDX-FileCopyrightText: 2023 Fabian Arndt * * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL */ @@ -22,7 +21,4 @@ public: public Q_SLOTS: ActionReply getthreshold(const QVariantMap &args); ActionReply setthreshold(const QVariantMap &args); - - ActionReply getconservationmode(const QVariantMap &args); - ActionReply setconservationmode(const QVariantMap &args); }; Index: powerdevil-6.1.0/daemon/dbus/org.kde.Solid.PowerManagement.xml =================================================================== --- powerdevil-6.1.0.orig/daemon/dbus/org.kde.Solid.PowerManagement.xml +++ powerdevil-6.1.0/daemon/dbus/org.kde.Solid.PowerManagement.xml @@ -31,9 +31,6 @@ - - - @@ -108,9 +105,6 @@ - - - Index: powerdevil-6.1.0/daemon/powerdevilcore.cpp =================================================================== --- powerdevil-6.1.0.orig/daemon/powerdevilcore.cpp +++ powerdevil-6.1.0/daemon/powerdevilcore.cpp @@ -70,7 +70,6 @@ Core::Core(QObject *parent) discreteGpuJob->start(); readChargeThreshold(); - readBatteryConservationMode(); } Core::~Core() @@ -271,7 +270,6 @@ void Core::reparseConfiguration() } readChargeThreshold(); - readBatteryConservationMode(); } QString Core::currentProfile() const @@ -954,29 +952,6 @@ void Core::readChargeThreshold() job->start(); } -void Core::readBatteryConservationMode() -{ - KAuth::Action action(QStringLiteral("org.kde.powerdevil.chargethresholdhelper.getconservationmode")); - action.setHelperId(QStringLiteral("org.kde.powerdevil.chargethresholdhelper")); - KAuth::ExecuteJob *job = action.execute(); - connect(job, &KJob::result, this, [this, job] { - if (job->error()) { - qCWarning(POWERDEVIL) << "org.kde.powerdevil.chargethresholdhelper.getconservationmode failed" << job->errorText(); - return; - } - - const auto data = job->data(); - const bool enabled = data.value(QStringLiteral("batteryConservationModeEnabled")).toBool(); - if (m_batteryConservationModeEnabled != enabled) { - m_batteryConservationModeEnabled = enabled; - Q_EMIT batteryConservationModeChanged(enabled); - } - - qCDebug(POWERDEVIL) << "Battery conservation mode is" << (enabled ? "enabled" : "disabled"); - }); - job->start(); -} - SuspendController *Core::suspendController() { return m_suspendController.get(); @@ -1021,11 +996,6 @@ bool Core::hasDualGpu() const return m_hasDualGpu; } -bool Core::isBatteryConservationModeEnabled() const -{ - return m_batteryConservationModeEnabled; -} - int Core::chargeStartThreshold() const { return m_chargeStartThreshold; Index: powerdevil-6.1.0/daemon/powerdevilcore.h =================================================================== --- powerdevil-6.1.0.orig/daemon/powerdevilcore.h +++ powerdevil-6.1.0/daemon/powerdevilcore.h @@ -105,7 +105,6 @@ public Q_SLOTS: bool isLidPresent() const; bool isActionSupported(const QString &actionName); bool hasDualGpu() const; - bool isBatteryConservationModeEnabled() const; int chargeStartThreshold() const; int chargeStopThreshold() const; @@ -124,7 +123,6 @@ Q_SIGNALS: void batteryRemainingTimeChanged(qulonglong time); void smoothedBatteryRemainingTimeChanged(qulonglong time); void lidClosedChanged(bool closed); - void batteryConservationModeChanged(bool enabled); void chargeStartThresholdChanged(int threshold); void chargeStopThresholdChanged(int threshold); @@ -139,7 +137,6 @@ private: void triggerCriticalBatteryAction(); void readChargeThreshold(); - void readBatteryConservationMode(); /** * Computes the current global charge percentage. @@ -150,7 +147,6 @@ private: friend class Action; bool m_hasDualGpu; - bool m_batteryConservationModeEnabled = false; int m_chargeStartThreshold = 0; int m_chargeStopThreshold = 100; Index: powerdevil-6.1.0/kcmodule/profiles/ExternalServiceSettings.cpp =================================================================== --- powerdevil-6.1.0.orig/kcmodule/profiles/ExternalServiceSettings.cpp +++ powerdevil-6.1.0/kcmodule/profiles/ExternalServiceSettings.cpp @@ -1,7 +1,6 @@ /* * SPDX-FileCopyrightText: 2008-2010 Dario Freddi * SPDX-FileCopyrightText: 2023 Jakob Petsovits - * SPDX-FileCopyrightText: 2024 Fabian Arndt * * SPDX-License-Identifier: GPL-2.0-or-later */ @@ -23,9 +22,6 @@ #include #include -// debug category for qCInfo() -#include - namespace { constexpr int ChargeThresholdUnsupported = -1; @@ -36,138 +32,81 @@ namespace PowerDevil ExternalServiceSettings::ExternalServiceSettings(QObject *parent) : QObject(parent) - , m_batteryConservationMode(false) , m_chargeStartThreshold(ChargeThresholdUnsupported) , m_chargeStopThreshold(ChargeThresholdUnsupported) - , m_savedBatteryConservationMode(false) , m_savedChargeStartThreshold(ChargeThresholdUnsupported) , m_savedChargeStopThreshold(ChargeThresholdUnsupported) - , m_isBatteryConservationModeSupported(false) , m_chargeStopThresholdMightNeedReconnect(false) { } -void ExternalServiceSettings::executeChargeThresholdHelperAction(const QString &actionName, - QWindow *parentWindowForKAuth, - const QVariantMap &arguments, - const std::function callback) +void ExternalServiceSettings::load(QWindow *parentWindowForKAuth) { - KAuth::Action action(QStringLiteral("org.kde.powerdevil.chargethresholdhelper.") + actionName); + KAuth::Action action(QStringLiteral("org.kde.powerdevil.chargethresholdhelper.getthreshold")); action.setHelperId(QStringLiteral("org.kde.powerdevil.chargethresholdhelper")); action.setParentWindow(parentWindowForKAuth); - action.setArguments(arguments); - KAuth::ExecuteJob *job = action.execute(); + QPointer thisAlive(this); QPointer jobAlive(job); job->exec(); - if (!thisAlive || !jobAlive) { - qCInfo(POWERDEVIL) << action.name() << "failed: was deleted during job execution"; - return; - } - - if (job->error()) { - qCInfo(POWERDEVIL) << "KAuth action" << action.name() << "failed:" << job->errorText(); - } - callback(job); -} - -void ExternalServiceSettings::load(QWindow *parentWindowForKAuth) -{ - // Battery thresholds (start / stop) - executeChargeThresholdHelperAction("getthreshold", parentWindowForKAuth, {}, [&](KAuth::ExecuteJob *job) { - if (job->error()) { + if (thisAlive && jobAlive) { + if (!job->error()) { + const auto data = job->data(); + setSavedChargeStartThreshold(data.value(QStringLiteral("chargeStartThreshold")).toInt()); + setSavedChargeStopThreshold(data.value(QStringLiteral("chargeStopThreshold")).toInt()); + setChargeStopThreshold(m_savedChargeStopThreshold); + setChargeStartThreshold(m_savedChargeStartThreshold); + } else { + qWarning() << "org.kde.powerdevil.chargethresholdhelper.getthreshold failed:" << job->errorText(); setSavedChargeStartThreshold(ChargeThresholdUnsupported); setSavedChargeStopThreshold(ChargeThresholdUnsupported); - return; - } - - const auto data = job->data(); - setSavedChargeStartThreshold(data.value(QStringLiteral("chargeStartThreshold")).toInt()); - setSavedChargeStopThreshold(data.value(QStringLiteral("chargeStopThreshold")).toInt()); - setChargeStopThreshold(m_savedChargeStopThreshold); - setChargeStartThreshold(m_savedChargeStartThreshold); - }); - - // Battery Conservation Mode (fixed) - executeChargeThresholdHelperAction("getconservationmode", parentWindowForKAuth, {}, [&](KAuth::ExecuteJob *job) { - if (job->error()) { - setSavedBatteryConservationMode(false); - m_isBatteryConservationModeSupported = false; - return; } - - const auto data = job->data(); - setSavedBatteryConservationMode(data.value(QStringLiteral("batteryConservationModeEnabled")).toBool()); - setBatteryConservationMode(m_batteryConservationMode); - m_isBatteryConservationModeSupported = true; - }); + } else { + qWarning() << "org.kde.powerdevil.chargethresholdhelper.getthreshold failed: was deleted during job execution"; + } } void ExternalServiceSettings::save(QWindow *parentWindowForKAuth) { - // Battery threshold (start / stop) if ((isChargeStartThresholdSupported() && m_chargeStartThreshold != m_savedChargeStartThreshold) || (isChargeStopThresholdSupported() && m_chargeStopThreshold != m_savedChargeStopThreshold)) { int newChargeStartThreshold = isChargeStartThresholdSupported() ? m_chargeStartThreshold : ChargeThresholdUnsupported; int newChargeStopThreshold = isChargeStopThresholdSupported() ? m_chargeStopThreshold : ChargeThresholdUnsupported; - executeChargeThresholdHelperAction("setthreshold", - parentWindowForKAuth, - { - {QStringLiteral("chargeStartThreshold"), newChargeStartThreshold}, - {QStringLiteral("chargeStopThreshold"), newChargeStopThreshold}, - }, - [&](KAuth::ExecuteJob *job) { - if (job->error()) { - setChargeStopThreshold(m_savedChargeStopThreshold); - setChargeStartThreshold(m_savedChargeStartThreshold); - return; - } - - setSavedChargeStartThreshold(newChargeStartThreshold); - setSavedChargeStopThreshold(newChargeStopThreshold); - }); - } - - // Battery Conservation Mode (fixed) - if (isBatteryConservationModeSupported() && m_batteryConservationMode != m_savedBatteryConservationMode) { - executeChargeThresholdHelperAction("setconservationmode", - parentWindowForKAuth, - { - {QStringLiteral("batteryConservationModeEnabled"), m_batteryConservationMode}, - }, - [&](KAuth::ExecuteJob *job) { - if (job->error()) { - setBatteryConservationMode(m_savedBatteryConservationMode); - return; - } - - setSavedBatteryConservationMode(m_batteryConservationMode); - }); + KAuth::Action action(QStringLiteral("org.kde.powerdevil.chargethresholdhelper.setthreshold")); + action.setHelperId(QStringLiteral("org.kde.powerdevil.chargethresholdhelper")); + action.setArguments({ + {QStringLiteral("chargeStartThreshold"), newChargeStartThreshold}, + {QStringLiteral("chargeStopThreshold"), newChargeStopThreshold}, + }); + action.setParentWindow(parentWindowForKAuth); + KAuth::ExecuteJob *job = action.execute(); + + QPointer thisAlive(this); + QPointer jobAlive(job); + job->exec(); + + if (thisAlive && jobAlive) { + if (!job->error()) { + setSavedChargeStartThreshold(newChargeStartThreshold); + setSavedChargeStopThreshold(newChargeStopThreshold); + } else { + qWarning() << "org.kde.powerdevil.chargethresholdhelper.setthreshold failed:" << job->errorText(); + } + setChargeStopThreshold(m_savedChargeStopThreshold); + setChargeStartThreshold(m_savedChargeStartThreshold); + } else { + qWarning() << "org.kde.powerdevil.chargethresholdhelper.setthreshold failed: was deleted during job execution"; + } } } bool ExternalServiceSettings::isSaveNeeded() const { return (isChargeStartThresholdSupported() && m_chargeStartThreshold != m_savedChargeStartThreshold) - || (isChargeStopThresholdSupported() && m_chargeStopThreshold != m_savedChargeStopThreshold) - || (isBatteryConservationModeSupported() && m_batteryConservationMode != m_savedBatteryConservationMode); -} - -bool ExternalServiceSettings::isBatteryConservationModeSupported() const -{ - return m_isBatteryConservationModeSupported; -} - -void ExternalServiceSettings::setSavedBatteryConservationMode(bool enabled) -{ - bool wasSavedBatteryConservationModeSupported = isBatteryConservationModeSupported(); - m_savedBatteryConservationMode = enabled; - if (wasSavedBatteryConservationModeSupported != isBatteryConservationModeSupported()) { - Q_EMIT isBatteryConservationModeSupportedChanged(); - } + || (isChargeStopThresholdSupported() && m_chargeStopThreshold != m_savedChargeStopThreshold); } bool ExternalServiceSettings::isChargeStartThresholdSupported() const @@ -198,21 +137,6 @@ void ExternalServiceSettings::setSavedCh } } -bool ExternalServiceSettings::batteryConservationMode() const -{ - return m_batteryConservationMode; -} - -void ExternalServiceSettings::setBatteryConservationMode(bool enabled) -{ - if (enabled == m_batteryConservationMode) { - return; - } - m_batteryConservationMode = enabled; - Q_EMIT batteryConservationModeChanged(); - Q_EMIT settingsChanged(); -} - int ExternalServiceSettings::chargeStartThreshold() const { return m_chargeStartThreshold; Index: powerdevil-6.1.0/kcmodule/profiles/ExternalServiceSettings.h =================================================================== --- powerdevil-6.1.0.orig/kcmodule/profiles/ExternalServiceSettings.h +++ powerdevil-6.1.0/kcmodule/profiles/ExternalServiceSettings.h @@ -1,6 +1,5 @@ /* * SPDX-FileCopyrightText: 2023 Jakob Petsovits - * SPDX-FileCopyrightText: 2024 Fabian Arndt * * SPDX-License-Identifier: GPL-2.0-or-later */ @@ -8,7 +7,6 @@ #pragma once #include -#include class QWindow; @@ -21,28 +19,23 @@ class ExternalServiceSettings : public Q Q_PROPERTY(int chargeStartThreshold READ chargeStartThreshold WRITE setChargeStartThreshold NOTIFY chargeStartThresholdChanged) Q_PROPERTY(int chargeStopThreshold READ chargeStopThreshold WRITE setChargeStopThreshold NOTIFY chargeStopThresholdChanged) - Q_PROPERTY(int batteryConservationMode READ batteryConservationMode WRITE setBatteryConservationMode NOTIFY batteryConservationModeChanged) public: explicit ExternalServiceSettings(QObject *parent); bool isSaveNeeded() const; - bool batteryConservationMode() const; int chargeStartThreshold() const; int chargeStopThreshold() const; - bool isBatteryConservationModeSupported() const; bool isChargeStartThresholdSupported() const; bool isChargeStopThresholdSupported() const; - bool chargeStopThresholdMightNeedReconnect() const; public Q_SLOTS: void load(QWindow *parentWindowForKAuth = nullptr); void save(QWindow *parentWindowForKAuth = nullptr); - void setBatteryConservationMode(bool); void setChargeStartThreshold(int); void setChargeStopThreshold(int); @@ -50,36 +43,23 @@ Q_SIGNALS: void settingsChanged(); // settings, which in addition to their own signal also trigger settingsChanged() - void batteryConservationModeChanged(); void chargeStartThresholdChanged(); void chargeStopThresholdChanged(); // not settings per se, so these don't trigger settingsChanged() - void isBatteryConservationModeSupportedChanged(); void isChargeStartThresholdSupportedChanged(); void isChargeStopThresholdSupportedChanged(); void chargeStopThresholdMightNeedReconnectChanged(); private: - void setSavedBatteryConservationMode(bool); void setSavedChargeStartThreshold(int); void setSavedChargeStopThreshold(int); void setChargeStopThresholdMightNeedReconnect(bool); - void executeChargeThresholdHelperAction(const QString &actionName, - QWindow *parentWindowForKAuth, - const QVariantMap &arguments, - const std::function callback); - - bool m_batteryConservationMode; int m_chargeStartThreshold; int m_chargeStopThreshold; - - bool m_savedBatteryConservationMode; int m_savedChargeStartThreshold; int m_savedChargeStopThreshold; - - bool m_isBatteryConservationModeSupported; bool m_chargeStopThresholdMightNeedReconnect; }; Index: powerdevil-6.1.0/kcmodule/profiles/PowerKCM.cpp =================================================================== --- powerdevil-6.1.0.orig/kcmodule/profiles/PowerKCM.cpp +++ powerdevil-6.1.0/kcmodule/profiles/PowerKCM.cpp @@ -151,7 +151,6 @@ PowerKCM::PowerKCM(QObject *parent, cons this, &PowerKCM::isChargeStartThresholdSupportedChanged); connect(m_externalServiceSettings, &ExternalServiceSettings::isChargeStopThresholdSupportedChanged, this, &PowerKCM::isChargeStopThresholdSupportedChanged); - connect(m_externalServiceSettings, &ExternalServiceSettings::isBatteryConservationModeSupportedChanged, this, &PowerKCM::isBatteryConservationModeSupportedChanged); connect(m_externalServiceSettings, &ExternalServiceSettings::chargeStopThresholdMightNeedReconnectChanged, this, @@ -291,11 +290,6 @@ void PowerKCM::setSupportsBatteryProfile Q_EMIT supportsBatteryProfilesChanged(); } -bool PowerKCM::isBatteryConservationModeSupported() const -{ - return m_externalServiceSettings->isBatteryConservationModeSupported(); -} - bool PowerKCM::isChargeStartThresholdSupported() const { return m_externalServiceSettings->isChargeStartThresholdSupported(); Index: powerdevil-6.1.0/kcmodule/profiles/PowerKCM.h =================================================================== --- powerdevil-6.1.0.orig/kcmodule/profiles/PowerKCM.h +++ powerdevil-6.1.0/kcmodule/profiles/PowerKCM.h @@ -65,7 +65,6 @@ class PowerKCM : public KQuickManagedCon Q_PROPERTY(bool isLidPresent READ isLidPresent NOTIFY isLidPresentChanged) Q_PROPERTY(bool isPowerButtonPresent READ isPowerButtonPresent NOTIFY isPowerButtonPresentChanged) - Q_PROPERTY(bool isBatteryConservationModeSupported READ isBatteryConservationModeSupported NOTIFY isBatteryConservationModeSupportedChanged) Q_PROPERTY(bool isChargeStartThresholdSupported READ isChargeStartThresholdSupported NOTIFY isChargeStartThresholdSupportedChanged) Q_PROPERTY(bool isChargeStopThresholdSupported READ isChargeStopThresholdSupported NOTIFY isChargeStopThresholdSupportedChanged) Q_PROPERTY(bool chargeStopThresholdMightNeedReconnect READ chargeStopThresholdMightNeedReconnect NOTIFY chargeStopThresholdMightNeedReconnectChanged) @@ -97,7 +96,6 @@ public: bool isLidPresent() const; bool isPowerButtonPresent() const; - bool isBatteryConservationModeSupported() const; bool isChargeStartThresholdSupported() const; bool isChargeStopThresholdSupported() const; bool chargeStopThresholdMightNeedReconnect() const; @@ -127,7 +125,6 @@ Q_SIGNALS: void isLidPresentChanged(); void isPowerButtonPresentChanged(); - void isBatteryConservationModeSupportedChanged(); void isChargeStartThresholdSupportedChanged(); void isChargeStopThresholdSupportedChanged(); void chargeStopThresholdMightNeedReconnectChanged(); Index: powerdevil-6.1.0/kcmodule/profiles/ui/GlobalConfig.qml =================================================================== --- powerdevil-6.1.0.orig/kcmodule/profiles/ui/GlobalConfig.qml +++ powerdevil-6.1.0/kcmodule/profiles/ui/GlobalConfig.qml @@ -221,18 +221,7 @@ Kirigami.ScrollablePage { id: chargeLimitHeader Kirigami.FormData.label: i18nc("@title:group", "Charge Limit") Kirigami.FormData.isSection: true - visible: chargeStopThresholdSpin.visible || chargeStartThresholdSpin.visible || batteryConservationModeCheck.visible - } - - QQC2.CheckBox { - id: batteryConservationModeCheck - visible: kcm.isBatteryConservationModeSupported - checked: externalSettings.batteryConservationMode - onToggled: externalSettings.batteryConservationMode = checked - - Kirigami.FormData.label: i18nc("@label:checkbox", "&Battery protection:") - text: i18nc("@text:checkbox", "Limit the maximum battery charge") - Accessible.name: text + visible: chargeStopThresholdSpin.visible || chargeStartThresholdSpin.visible } QQC2.SpinBox { @@ -330,8 +319,7 @@ Kirigami.ScrollablePage { Kirigami.FormData.isSection: true // iFixit suggests keeping the charge between 40-80%, Battery University lists 25-85% as a decent tradeoff. // Show this reminder only when high charge thresholds are configured. - visible: (chargeLimitHeader.visible && !chargeStopThresholdReconnectMessage.visible && chargeStopThresholdSpin.value > 85) - || (batteryConservationModeCheck.visible && !batteryConservationModeCheck.checked) + visible: chargeLimitHeader.visible && !chargeStopThresholdReconnectMessage.visible && chargeStopThresholdSpin.value > 85 implicitWidth: Kirigami.Units.gridUnit * 16 text: i18nc("@info", "Regularly charging the battery close to 100%, or fully discharging it, may accelerate deterioration of battery health. By limiting the maximum battery charge, you can help extend the battery lifespan.") }