health: Update charging control if next alarm is changed

Fixes: https://gitlab.com/LineageOS/issues/android/-/issues/8744
Change-Id: I390f7c2110add51f776f56d9de1ab690721e2e21
diff --git a/src/org/omnirom/omnilib/internal/health/ChargingControlController.java b/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
index ee48d75..534276b 100644
--- a/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
+++ b/src/org/omnirom/omnilib/internal/health/ChargingControlController.java
@@ -46,6 +46,7 @@
     private final ContentResolver mContentResolver;
     private ChargingControlNotification mChargingNotification;
     private OmniRomHealthBatteryBroadcastReceiver mBattReceiver;
+    private BroadcastReceiver mAlarmBroadcastReceiver;
 
     // Defaults
     private boolean mDefaultEnabled = false;
@@ -437,6 +438,26 @@
                 }
             }
         }
+
+        if (mode == MODE_AUTO) {
+            if (mAlarmBroadcastReceiver == null) {
+                IntentFilter alarmChangedFilter = new IntentFilter(
+                        android.app.AlarmManager.ACTION_NEXT_ALARM_CLOCK_CHANGED);
+                mAlarmBroadcastReceiver = new BroadcastReceiver() {
+                    @Override
+                    public void onReceive(Context context, Intent intent) {
+                        Log.i(TAG, "Alarm changed, update charge times");
+                        updateChargeControl();
+                    }
+                };
+                mContext.registerReceiver(mAlarmBroadcastReceiver, alarmChangedFilter);
+            }
+        } else {
+            if (mAlarmBroadcastReceiver != null) {
+                mContext.unregisterReceiver(mAlarmBroadcastReceiver);
+                mAlarmBroadcastReceiver = null;
+            }
+        }
     }
 
     /**