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

Commit 6bebe551 authored by Christine Franks's avatar Christine Franks
Browse files

Change timer selection for ACTION_DISMISS_TIMER

Bug; 70336445
Test: make -j100 && cts-tradefed run cts-dev -m CtsAlarmClockTestCases
&& adb shell am start -a android.intent.action.DISMISS_TIMER

Change-Id: I3e0bf02bd2280cc4a00bd8a1377db558c4e7477e
parent dbaa720e
Loading
Loading
Loading
Loading
+18 −2
Original line number Diff line number Diff line
@@ -1007,9 +1007,13 @@
    -->
    <string name="timer_created">Timer created</string>

    <!-- String that represents that the user has successfully dismissed a timer. [CHAR_LIMIT=NONE]
    <!-- String that represents that the user has successfully dismissed timers.
    [CHAR_LIMIT=NONE]
    -->
    <string name="timer_dismissed">Timer dismissed</string>
    <plurals name="expired_timers_dismissed">
        <item quantity="one">Timer dismissed</item>
        <item quantity="other"><xliff:g id="number" example="5">%d</xliff:g> timers dismissed</item>
    </plurals>

    <!-- String that represents that the user has successfully deleted a timer. [CHAR LIMIT=NONE]
    -->
@@ -1021,6 +1025,18 @@
    -->
    <string name="invalid_timer_length">Invalid timer length</string>

    <!-- String that represents that the user attempted to dismiss a timer through a voice action
    but specified an invalid timer Uri.
    [CHAR_LIMIT=NONE]
    -->
    <string name="invalid_timer">Invalid timer selected</string>

    <!-- String that represents that the user attempted to dismiss a timer through a voice action
    but no expired timers were eligible for dismissal.
    [CHAR_LIMIT=NONE]
    -->
    <string name="no_expired_timers">No expired timers</string>

    <!-- String that represents that the user attempted to dismiss an alarm that is more than
    24 hours away
    %s represents the time of the alarm (e.g. 15:39)
+42 −4
Original line number Diff line number Diff line
@@ -18,6 +18,7 @@ package com.android.deskclock;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.net.Uri;
@@ -101,7 +102,7 @@ public class HandleApiCalls extends Activity {
                    handleSnoozeAlarm(intent);
                    break;
                case AlarmClock.ACTION_DISMISS_TIMER:
                    handleDismissTimer();
                    handleDismissTimer(intent);
                    break;
            }
        } catch (Exception e) {
@@ -385,9 +386,46 @@ public class HandleApiCalls extends Activity {
        Controller.getController().notifyVoiceSuccess(this, getString(R.string.alarm_is_set, time));
    }

    private void handleDismissTimer() {
        DataModel.getDataModel().resetOrDeleteExpiredTimers(R.string.label_intent);
        Controller.getController().notifyVoiceSuccess(this, getString(R.string.timer_dismissed));
    private void handleDismissTimer(Intent intent) {
        final Uri dataUri = intent.getData();
        if (dataUri != null) {
            final Timer selectedTimer = getSelectedTimer(dataUri);
            if (selectedTimer != null) {
                DataModel.getDataModel().resetOrDeleteTimer(selectedTimer, R.string.label_intent);
                Controller.getController().notifyVoiceSuccess(this,
                        getResources().getQuantityString(R.plurals.expired_timers_dismissed, 1));
                LOGGER.i("Timer dismissed: " + selectedTimer);
            } else {
                Controller.getController().notifyVoiceFailure(this,
                        getString(R.string.invalid_timer));
                LOGGER.e("Could not dismiss timer: invalid URI");
            }
        } else {
            final List<Timer> expiredTimers = DataModel.getDataModel().getExpiredTimers();
            if (!expiredTimers.isEmpty()) {
                for (Timer timer : expiredTimers) {
                    DataModel.getDataModel().resetOrDeleteTimer(timer, R.string.label_intent);
                }
                final int numberOfTimers = expiredTimers.size();
                final String timersDismissedMessage = getResources().getQuantityString(
                        R.plurals.expired_timers_dismissed, numberOfTimers, numberOfTimers);
                Controller.getController().notifyVoiceSuccess(this, timersDismissedMessage);
                LOGGER.i(timersDismissedMessage);
            } else {
                Controller.getController().notifyVoiceFailure(this,
                        getString(R.string.no_expired_timers));
                LOGGER.e("Could not dismiss timer: no expired timers");
            }
        }
    }

    private Timer getSelectedTimer(Uri dataUri) {
        try {
            final int timerId = (int) ContentUris.parseId(dataUri);
            return DataModel.getDataModel().getTimer(timerId);
        } catch (NumberFormatException e) {
            return null;
        }
    }

    private void handleShowAlarms() {