Loading res/values/strings.xml +18 −2 Original line number Diff line number Diff line Loading @@ -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] --> Loading @@ -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) Loading src/com/android/deskclock/HandleApiCalls.java +42 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -101,7 +102,7 @@ public class HandleApiCalls extends Activity { handleSnoozeAlarm(intent); break; case AlarmClock.ACTION_DISMISS_TIMER: handleDismissTimer(); handleDismissTimer(intent); break; } } catch (Exception e) { Loading Loading @@ -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() { Loading Loading
res/values/strings.xml +18 −2 Original line number Diff line number Diff line Loading @@ -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] --> Loading @@ -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) Loading
src/com/android/deskclock/HandleApiCalls.java +42 −4 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -101,7 +102,7 @@ public class HandleApiCalls extends Activity { handleSnoozeAlarm(intent); break; case AlarmClock.ACTION_DISMISS_TIMER: handleDismissTimer(); handleDismissTimer(intent); break; } } catch (Exception e) { Loading Loading @@ -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() { Loading