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

Commit 12540ba3 authored by Justin Klaassen's avatar Justin Klaassen
Browse files

Add support to reset timer without deleting

Bug: 30076796
Change-Id: Ibe2e3728cbff6455cf4b944ea12bd5ae58adfe0b
parent 9f4d783b
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -402,6 +402,15 @@ public final class DataModel {
        mTimerModel.expireTimer(service, timer);
    }

    /**
     * @param timer the timer to be reset
     * @return the reset {@code timer}
     */
    public Timer resetTimer(Timer timer) {
        enforceMainLooper();
        return mTimerModel.resetTimer(timer, false /* allowDelete */, 0 /* eventLabelId */);
    }

    /**
     * If the given {@code timer} is expired and marked for deletion after use then this method
     * removes the the timer. The timer is otherwise transitioned to the reset state and continues
@@ -413,7 +422,7 @@ public final class DataModel {
     */
    public Timer resetOrDeleteTimer(Timer timer, @StringRes int eventLabelId) {
        enforceMainLooper();
        return mTimerModel.resetOrDeleteTimer(timer, eventLabelId);
        return mTimerModel.resetTimer(timer, true /* allowDelete */, eventLabelId);
    }

    /**
+16 −9
Original line number Diff line number Diff line
@@ -284,11 +284,13 @@ final class TimerModel {
     * to exist.
     *
     * @param timer        the timer to be reset
     * @param allowDelete  {@code true} if the timer is allowed to be deleted instead of reset
     *                     (e.g. one use timers)
     * @param eventLabelId the label of the timer event to send; 0 if no event should be sent
     * @return the reset {@code timer} or {@code null} if the timer was deleted
     */
    Timer resetOrDeleteTimer(Timer timer, @StringRes int eventLabelId) {
        final Timer result = doResetOrDeleteTimer(timer, eventLabelId);
    Timer resetTimer(Timer timer, boolean allowDelete, @StringRes int eventLabelId) {
        final Timer result = doResetOrDeleteTimer(timer, allowDelete, eventLabelId);

        // Update the notification after updating the timer data.
        if (timer.isMissed()) {
@@ -342,7 +344,7 @@ final class TimerModel {
        final List<Timer> timers = new ArrayList<>(getTimers());
        for (Timer timer : timers) {
            if (timer.isExpired()) {
                doResetOrDeleteTimer(timer, eventLabelId);
                doResetOrDeleteTimer(timer, true /* allowDelete */, eventLabelId);
            }
        }

@@ -359,7 +361,7 @@ final class TimerModel {
        final List<Timer> timers = new ArrayList<>(getTimers());
        for (Timer timer : timers) {
            if (timer.isMissed()) {
                doResetOrDeleteTimer(timer, eventLabelId);
                doResetOrDeleteTimer(timer, true /* allowDelete */, eventLabelId);
            }
        }

@@ -376,7 +378,7 @@ final class TimerModel {
        final List<Timer> timers = new ArrayList<>(getTimers());
        for (Timer timer : timers) {
            if (timer.isRunning() || timer.isPaused()) {
                doResetOrDeleteTimer(timer, eventLabelId);
                doResetOrDeleteTimer(timer, true /* allowDelete */, eventLabelId);
            }
        }

@@ -594,11 +596,16 @@ final class TimerModel {
     * to exist.
     *
     * @param timer the timer to be reset
     * @param allowDelete  {@code true} if the timer is allowed to be deleted instead of reset
     *                     (e.g. one use timers)
     * @param eventLabelId the label of the timer event to send; 0 if no event should be sent
     * @return the reset {@code timer} or {@code null} if the timer was deleted
     */
    private Timer doResetOrDeleteTimer(Timer timer, @StringRes int eventLabelId) {
        if ((timer.isExpired() || timer.isMissed()) && timer.getDeleteAfterUse()) {
    private Timer doResetOrDeleteTimer(Timer timer, boolean allowDelete,
            @StringRes int eventLabelId) {
        if (allowDelete
                && (timer.isExpired() || timer.isMissed())
                && timer.getDeleteAfterUse()) {
            doRemoveTimer(timer);
            if (eventLabelId != 0) {
                Events.sendTimerEvent(R.string.action_delete, eventLabelId);