summaryrefslogtreecommitdiffstats
path: root/src/com/android/deskclock/SetAlarm.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/deskclock/SetAlarm.java')
-rw-r--r--src/com/android/deskclock/SetAlarm.java74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/com/android/deskclock/SetAlarm.java b/src/com/android/deskclock/SetAlarm.java
index ebe6e5054..db0ced7e7 100644
--- a/src/com/android/deskclock/SetAlarm.java
+++ b/src/com/android/deskclock/SetAlarm.java
@@ -16,11 +16,14 @@
package com.android.deskclock;
+import java.util.ArrayList;
+
import android.app.AlertDialog;
import android.app.TimePickerDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
+import android.content.Intent.ShortcutIconResource;
import android.os.Bundle;
import android.os.Handler;
import android.preference.CheckBoxPreference;
@@ -48,6 +51,8 @@ public class SetAlarm extends PreferenceActivity
implements TimePickerDialog.OnTimeSetListener,
Preference.OnPreferenceChangeListener {
+ private static final int CODE_PICK_APP = 1;
+
private EditTextPreference mLabel;
private CheckBoxPreference mEnabledPref;
private Preference mTimePref;
@@ -55,6 +60,8 @@ public class SetAlarm extends PreferenceActivity
private CheckBoxPreference mVibratePref;
private RepeatPreference mRepeatPref;
private MenuItem mTestAlarmItem;
+ private Preference mIntentPref;
+ private CheckBoxPreference mNoDialogPref;
private int mId;
private int mHour;
@@ -112,6 +119,9 @@ public class SetAlarm extends PreferenceActivity
mVibratePref.setOnPreferenceChangeListener(this);
mRepeatPref = (RepeatPreference) findPreference("setRepeat");
mRepeatPref.setOnPreferenceChangeListener(this);
+ mNoDialogPref = (CheckBoxPreference) findPreference("no_dialog");
+ mNoDialogPref.setOnPreferenceChangeListener(this);
+ mIntentPref = findPreference("intent");
Intent i = getIntent();
mId = i.getIntExtra(Alarms.ALARM_ID, -1);
@@ -211,7 +221,9 @@ public class SetAlarm extends PreferenceActivity
mVibratePref.setChecked(alarm.vibrate);
// Give the alert uri to the preference.
mAlarmPref.setAlert(alarm.alert);
+ mIntentPref.setSummary(alarm.intent);
updateTime();
+ updateNoDialog(alarm);
}
@Override
@@ -219,6 +231,8 @@ public class SetAlarm extends PreferenceActivity
Preference preference) {
if (preference == mTimePref) {
showTimePicker();
+ } else if (preference == mIntentPref) {
+ showAppPicker();
}
return super.onPreferenceTreeClick(preferenceScreen, preference);
@@ -240,6 +254,48 @@ public class SetAlarm extends PreferenceActivity
DateFormat.is24HourFormat(this)).show();
}
+ private void showAppPicker() {
+ Bundle bundle = new Bundle();
+
+ ArrayList<String> shortcutNames = new ArrayList<String>();
+ shortcutNames.add(getString(R.string.application_none));
+ bundle.putStringArrayList(Intent.EXTRA_SHORTCUT_NAME, shortcutNames);
+
+ ArrayList<ShortcutIconResource> shortcutIcons = new ArrayList<ShortcutIconResource>();
+ shortcutIcons
+ .add(ShortcutIconResource.fromContext(this, android.R.drawable.ic_menu_delete));
+ bundle.putParcelableArrayList(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, shortcutIcons);
+
+ Intent appIntent = new Intent(Intent.ACTION_PICK_ACTIVITY);
+ Intent filterIntent = new Intent(Intent.ACTION_MAIN);
+ filterIntent.addCategory(Intent.CATEGORY_LAUNCHER);
+ appIntent.putExtra(Intent.EXTRA_INTENT, filterIntent);
+ appIntent.putExtra(Intent.EXTRA_TITLE, getText(R.string.application_title));
+ appIntent.putExtras(bundle);
+ startActivityForResult(appIntent, CODE_PICK_APP);
+ }
+
+ @Override
+ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+ switch (requestCode) {
+ case CODE_PICK_APP:
+ setAlarmIntent(resultCode, data);
+ default:
+ super.onActivityResult(requestCode, resultCode, data);
+ }
+ }
+
+ private void setAlarmIntent(int resultCode, Intent data) {
+ if (resultCode == RESULT_CANCELED || data == null) return;
+
+ String none = getString(R.string.application_none);
+ if (none.equals(data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME))) {
+ mIntentPref.setSummary("");
+ } else {
+ mIntentPref.setSummary(data.toUri(Intent.URI_INTENT_SCHEME));
+ }
+ }
+
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
// onTimeSet is called when the user clicks "Set"
mTimePickerCancelled = false;
@@ -259,6 +315,20 @@ public class SetAlarm extends PreferenceActivity
mTimePref.setSummary(Alarms.formatTime(this, mHour, mMinutes,
mRepeatPref.getDaysOfWeek()));
}
+
+ private void updateNoDialog(Alarm alarm) {
+ // If the alarm has vibration or sound, the dialog must be shown.
+ boolean silent = alarm.silent
+ || (alarm.alert == null || Alarms.ALARM_ALERT_SILENT.equals(alarm.alert));
+ if (!silent || alarm.vibrate) {
+ mNoDialogPref.setEnabled(false);
+ alarm.noDialog = false;
+ } else {
+ mNoDialogPref.setEnabled(true);
+ }
+
+ mNoDialogPref.setChecked(alarm.noDialog);
+ }
private long saveAlarmAndEnableRevert() {
// Enable "Revert" to go back to the original Alarm.
@@ -277,6 +347,10 @@ public class SetAlarm extends PreferenceActivity
alarm.vibrate = mVibratePref.isChecked();
alarm.label = mLabel.getText();
alarm.alert = mAlarmPref.getAlert();
+ CharSequence intent = mIntentPref.getSummary();
+ alarm.intent = intent == null ? "" : intent.toString();
+ alarm.noDialog = mNoDialogPref.isChecked();
+ updateNoDialog(alarm);
long time;
if (alarm.id == -1) {