Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 87cfc528 authored by Mao Jinlong's avatar Mao Jinlong Committed by Sam Mortimer
Browse files

DeskClock : Add set and cancel power off alarm actions

Power off alarm feature is based on DeskClock app. Add set and cancel
power off alarm actions for this feature.

CRs-Fixed: 2032439
change-Id: Ic03f87018e163adf6f6e6013963a497d340fbec7
parent 20e7c5bc
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -143,6 +143,17 @@ public final class AlarmStateManager extends BroadcastReceiver {
    private static StateChangeScheduler sStateChangeScheduler =
            new AlarmManagerStateChangeScheduler();

    private static final String ACTION_SET_POWEROFF_ALARM =
            "org.codeaurora.poweroffalarm.action.SET_ALARM";

    private static final String ACTION_CANCEL_POWEROFF_ALARM =
            "org.codeaurora.poweroffalarm.action.CANCEL_ALARM";

    private static final String POWER_OFF_ALARM_PACKAGE =
            "com.qualcomm.qti.poweroffalarm";

    private static final String TIME = "time";

    private static Calendar getCurrentTime() {
        return sCurrentTimeFactory == null
                ? DataModel.getDataModel().getCalendar()
@@ -167,6 +178,10 @@ public final class AlarmStateManager extends BroadcastReceiver {
    private static void updateNextAlarm(Context context) {
        final AlarmInstance nextAlarm = getNextFiringAlarm(context);

        if (nextAlarm != null) {
            setPowerOffAlarm(context, nextAlarm);
        }

        if (Utils.isPreL()) {
            updateNextAlarmInSystemSettings(context, nextAlarm);
        } else {
@@ -543,6 +558,7 @@ public final class AlarmStateManager extends BroadcastReceiver {
        scheduleInstanceStateChange(context, instance.getMissedTimeToLive(),
                instance, AlarmInstance.DISMISSED_STATE);

        cancelPowerOffAlarm(context, instance);
        // Instance is not valid anymore, so find next alarm that will fire and notify system
        updateNextAlarm(context);
    }
@@ -572,6 +588,7 @@ public final class AlarmStateManager extends BroadcastReceiver {
            updateParentAlarm(context, instance);
        }

        cancelPowerOffAlarm(context, instance);
        updateNextAlarm(context);
    }

@@ -583,6 +600,8 @@ public final class AlarmStateManager extends BroadcastReceiver {
        instance.mAlarmState = AlarmInstance.DISMISSED_STATE;
        final ContentResolver contentResolver = context.getContentResolver();
        AlarmInstance.updateInstance(contentResolver, instance);

        cancelPowerOffAlarm(context, instance);
    }

    /**
@@ -992,6 +1011,21 @@ public final class AlarmStateManager extends BroadcastReceiver {
        void cancelScheduledInstanceStateChange(Context context, AlarmInstance instance);
    }

    private static void setPowerOffAlarm(Context context, AlarmInstance instance) {
         LogUtils.i("Set next power off alarm : instance id "+ instance.mId);
         Intent intent = new Intent(ACTION_SET_POWEROFF_ALARM);
         intent.setPackage(POWER_OFF_ALARM_PACKAGE);
         intent.putExtra(TIME, instance.getAlarmTime().getTimeInMillis());
         context.sendBroadcast(intent);
    }

    private static void cancelPowerOffAlarm(Context context, AlarmInstance instance) {
         Intent intent = new Intent(ACTION_CANCEL_POWEROFF_ALARM);
         intent.putExtra(TIME, instance.getAlarmTime().getTimeInMillis());
         intent.setPackage(POWER_OFF_ALARM_PACKAGE);
         context.sendBroadcast(intent);
    }

    /**
     * Schedules state change callbacks within the AlarmManager.
     */