X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=src%2Fcom%2Fandroid%2Fdeskclock%2FAlarmAlertFullScreen.java;h=643b3adbec9bea0620f05d7dd15e1a5a2610da79;hb=a3aba0c93c31e89045cca669418e85acfb4e22fb;hp=3442da380f0c901342df32447423ca94321f99f7;hpb=cbf6f5e39b17a84beb93876d95594c26784b8128;p=android-x86%2Fpackages-apps-DeskClock.git diff --git a/src/com/android/deskclock/AlarmAlertFullScreen.java b/src/com/android/deskclock/AlarmAlertFullScreen.java index 3442da3..643b3ad 100644 --- a/src/com/android/deskclock/AlarmAlertFullScreen.java +++ b/src/com/android/deskclock/AlarmAlertFullScreen.java @@ -55,13 +55,21 @@ public class AlarmAlertFullScreen extends Activity { protected Alarm mAlarm; private int mVolumeBehavior; - // Receives the ALARM_KILLED action from the AlarmKlaxon. + // Receives the ALARM_KILLED action from the AlarmKlaxon, + // and also ALARM_SNOOZE_ACTION / ALARM_DISMISS_ACTION from other applications private BroadcastReceiver mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { - Alarm alarm = intent.getParcelableExtra(Alarms.ALARM_INTENT_EXTRA); - if (alarm != null && mAlarm.id == alarm.id) { - dismiss(true); + String action = intent.getAction(); + if (action.equals(Alarms.ALARM_SNOOZE_ACTION)) { + snooze(); + } else if (action.equals(Alarms.ALARM_DISMISS_ACTION)) { + dismiss(false); + } else { + Alarm alarm = intent.getParcelableExtra(Alarms.ALARM_INTENT_EXTRA); + if (alarm != null && mAlarm.id == alarm.id) { + dismiss(true); + } } } }; @@ -88,13 +96,17 @@ public class AlarmAlertFullScreen extends Activity { // subclass. if (!getIntent().getBooleanExtra(SCREEN_OFF, false)) { win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON - | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); + | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON + | WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON); } updateLayout(); - // Register to get the alarm killed intent. - registerReceiver(mReceiver, new IntentFilter(Alarms.ALARM_KILLED)); + // Register to get the alarm killed/snooze/dismiss intent. + IntentFilter filter = new IntentFilter(Alarms.ALARM_KILLED); + filter.addAction(Alarms.ALARM_SNOOZE_ACTION); + filter.addAction(Alarms.ALARM_DISMISS_ACTION); + registerReceiver(mReceiver, filter); } private void setTitle() { @@ -132,6 +144,11 @@ public class AlarmAlertFullScreen extends Activity { // Attempt to snooze this alert. private void snooze() { + // Do not snooze if the snooze button is disabled. + if (!findViewById(R.id.snooze).isEnabled()) { + dismiss(false); + return; + } final String snooze = PreferenceManager.getDefaultSharedPreferences(this) .getString(SettingsActivity.KEY_ALARM_SNOOZE, DEFAULT_SNOOZE); @@ -184,6 +201,7 @@ public class AlarmAlertFullScreen extends Activity { // Dismiss the alarm. private void dismiss(boolean killed) { + Log.i(killed ? "Alarm killed" : "Alarm dismissed by user"); // The service told us that the alarm has been killed, do not modify // the notification or stop the service. if (!killed) { @@ -211,6 +229,16 @@ public class AlarmAlertFullScreen extends Activity { } @Override + protected void onResume() { + super.onResume(); + // If the alarm was deleted at some point, disable snooze. + if (Alarms.getAlarm(getContentResolver(), mAlarm.id) == null) { + Button snooze = (Button) findViewById(R.id.snooze); + snooze.setEnabled(false); + } + } + + @Override protected void onStop() { super.onStop(); if (!isFinishing()) {