1
0
mirror of https://github.com/AvengeMedia/DankMaterialShell.git synced 2026-01-24 13:32:50 -05:00

Add battery charge limit (#1151)

This commit is contained in:
Aaron Tulino
2025-12-25 10:09:09 -07:00
committed by GitHub
parent 6b6f51cd1f
commit adf92cbc46
6 changed files with 51 additions and 3 deletions

View File

@@ -261,6 +261,7 @@ Singleton {
property int batterySuspendTimeout: 0
property int batterySuspendBehavior: SettingsData.SuspendBehavior.Suspend
property string batteryProfileName: ""
property int batteryChargeLimit: 100
property bool lockBeforeSuspend: false
property bool loginctlLockIntegration: true
property bool fadeToLockEnabled: false

View File

@@ -160,6 +160,7 @@ var SPEC = {
batterySuspendTimeout: { def: 0 },
batterySuspendBehavior: { def: 0 },
batteryProfileName: { def: "" },
batteryChargeLimit: { def: 100 },
lockBeforeSuspend: { def: false },
loginctlLockIntegration: { def: true },
fadeToLockEnabled: { def: false },

View File

@@ -503,6 +503,24 @@ Item {
}
}
}
SettingsCard {
width: parent.width
iconName: "tune"
title: I18n.tr("Advanced")
collapsible: true
expanded: false
SettingsSliderRow {
text: I18n.tr("Battery Charge Limit")
description: I18n.tr("Note: this only changes the percentage, it does not actually limit charging.")
value: SettingsData.batteryChargeLimit
minimum: 50
maximum: 100
defaultValue: 100
onSliderValueChanged: newValue => SettingsData.set("batteryChargeLimit", newValue)
}
}
}
}
}

View File

@@ -12,6 +12,8 @@ Singleton {
property bool suppressSound: true
property bool previousPluggedState: false
readonly property var scale: 100 / SettingsData.batteryChargeLimit
Timer {
id: startupTimer
interval: 500
@@ -43,14 +45,14 @@ Singleton {
return 0;
if (batteryCapacity === 0) {
if (usePreferred && device && device.ready)
return Math.round(device.percentage * 100);
return Math.round(device.percentage * 100 * scale);
const validBatteries = batteries.filter(b => b.ready && b.percentage >= 0);
if (validBatteries.length === 0)
return 0;
const avgPercentage = validBatteries.reduce((sum, b) => sum + b.percentage, 0) / validBatteries.length;
return Math.round(avgPercentage * 100);
return Math.round(avgPercentage * 100 * scale);
}
return Math.round((batteryEnergy * 100) / batteryCapacity);
return Math.round((batteryEnergy * 100) / batteryCapacity * scale);
}
readonly property bool isCharging: batteryAvailable && batteries.some(b => b.state === UPowerDeviceState.Charging)

View File

@@ -869,6 +869,12 @@
"reference": "Modules/Settings/WidgetsTabSection.qml:838, Modules/Settings/WidgetsTab.qml:168, Modules/ControlCenter/Models/WidgetModel.qml:161, Modules/ControlCenter/Widgets/BatteryPill.qml:17",
"comment": ""
},
{
"term": "Battery Charge Limit",
"context": "Battery Charge Limit",
"reference": "Modules/Settings/PowerSleepTab.qml:515",
"comment": ""
},
{
"term": "Battery and power management",
"context": "Battery and power management",
@@ -4799,6 +4805,12 @@
"reference": "Modules/Settings/NetworkTab.qml:744",
"comment": ""
},
{
"term": "Note: this only changes the displayed percentage, it does not actually limit charging.",
"context": "Note: this only changes the displayed percentage, it does not actually limit charging.",
"reference": "Modules/Settings/PowerSleepTab.qml:516",
"comment": ""
},
{
"term": "Notepad",
"context": "Notepad",

View File

@@ -1014,6 +1014,13 @@
"reference": "",
"comment": ""
},
{
"term": "Battery Charge Limit",
"translation": "",
"context": "",
"reference": "",
"comment": ""
},
{
"term": "Battery and power management",
"translation": "",
@@ -5599,6 +5606,13 @@
"reference": "",
"comment": ""
},
{
"term": "Note: this only changes the displayed percentage, it does not actually limit charging.",
"translation": "",
"context": "",
"reference": "",
"comment": ""
},
{
"term": "Notepad",
"translation": "",