diff --git a/src/org/lineageos/lineageparts/statusbar/StatusBarSettings.java b/src/org/lineageos/lineageparts/statusbar/StatusBarSettings.java index d256392de97cfdd996f50b10e051139a37c77113..bc4e3625b38f7e914e0c31c316004a39e75a381e 100644 --- a/src/org/lineageos/lineageparts/statusbar/StatusBarSettings.java +++ b/src/org/lineageos/lineageparts/statusbar/StatusBarSettings.java @@ -1,10 +1,14 @@ /* * SPDX-FileCopyrightText: 2014-2015 The CyanogenMod Project - * SPDX-FileCopyrightText: 2017-2023 The LineageOS Project + * SPDX-FileCopyrightText: 2017-2024 The LineageOS Project * SPDX-License-Identifier: Apache-2.0 */ package org.lineageos.lineageparts.statusbar; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.os.BatteryManager; import android.os.Bundle; import android.provider.Settings; import android.text.TextUtils; @@ -51,6 +55,8 @@ public class StatusBarSettings extends SettingsPreferenceFragment private PreferenceCategory mStatusBarBatteryCategory; private PreferenceCategory mStatusBarClockCategory; + private boolean mBatteryPresent; + @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); @@ -68,6 +74,10 @@ public class StatusBarSettings extends SettingsPreferenceFragment statusBarBattery.setOnPreferenceChangeListener(this); enableStatusBarBatteryDependents(statusBarBattery.getIntValue(2)); + Intent intent = getBatteryIntent(getContext()); + if (intent != null) { + mBatteryPresent = intent.getBooleanExtra(BatteryManager.EXTRA_PRESENT, true); + } mStatusBarBatteryCategory = getPreferenceScreen().findPreference(CATEGORY_BATTERY); mQuickPulldown = findPreference(STATUS_BAR_QUICK_QS_PULLDOWN); @@ -88,7 +98,8 @@ public class StatusBarSettings extends SettingsPreferenceFragment getPreferenceScreen().addPreference(mStatusBarClockCategory); } - if (TextUtils.delimitedStringContains(curIconBlacklist, ',', "battery")) { + if (!mBatteryPresent || + TextUtils.delimitedStringContains(curIconBlacklist, ',', "battery")) { getPreferenceScreen().removePreference(mStatusBarBatteryCategory); } else { getPreferenceScreen().addPreference(mStatusBarBatteryCategory); @@ -145,6 +156,12 @@ public class StatusBarSettings extends SettingsPreferenceFragment mStatusBarBatteryShowPercent.setEnabled(batteryIconStyle != STATUS_BAR_BATTERY_STYLE_TEXT); } + /** Gets the latest sticky battery intent from the Android system. */ + public static Intent getBatteryIntent(Context context) { + return context.registerReceiver( + /*receiver=*/ null, new IntentFilter(Intent.ACTION_BATTERY_CHANGED)); + } + private void updateQuickPulldownSummary(int value) { String summary=""; switch (value) {