OSDN Git Service

am cda260fb: (-s ours) Import revised translations. DO NOT MERGE
[android-x86/packages-apps-DeskClock.git] / src / com / android / deskclock / SetAlarm.java
index 17e0ceb..2a14448 100644 (file)
 
 package com.android.deskclock;
 
+import android.app.AlertDialog;
 import android.app.TimePickerDialog;
 import android.content.Context;
+import android.content.DialogInterface;
 import android.content.Intent;
 import android.media.RingtoneManager;
 import android.net.Uri;
@@ -47,15 +49,14 @@ public class SetAlarm extends PreferenceActivity
         implements TimePickerDialog.OnTimeSetListener {
 
     private EditTextPreference mLabel;
+    private CheckBoxPreference mEnabledPref;
     private Preference mTimePref;
     private AlarmPreference mAlarmPref;
     private CheckBoxPreference mVibratePref;
     private RepeatPreference mRepeatPref;
-    private MenuItem mDeleteAlarmItem;
     private MenuItem mTestAlarmItem;
 
     private int     mId;
-    private boolean mEnabled;
     private int     mHour;
     private int     mMinutes;
 
@@ -80,6 +81,7 @@ public class SetAlarm extends PreferenceActivity
                         return true;
                     }
                 });
+        mEnabledPref = (CheckBoxPreference) findPreference("enabled");
         mTimePref = findPreference("time");
         mAlarmPref = (AlarmPreference) findPreference("alarm");
         mVibratePref = (CheckBoxPreference) findPreference("vibrate");
@@ -98,7 +100,7 @@ public class SetAlarm extends PreferenceActivity
             finish();
             return;
         }
-        mEnabled = alarm.enabled;
+        mEnabledPref.setChecked(alarm.enabled);
         mLabel.setText(alarm.label);
         mLabel.setSummary(alarm.label);
         mHour = alarm.hour;
@@ -143,7 +145,7 @@ public class SetAlarm extends PreferenceActivity
         b.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     // Enable the alarm when clicking "Done"
-                    mEnabled = true;
+                    mEnabledPref.setChecked(true);
                     saveAlarm();
                     finish();
                 }
@@ -154,6 +156,12 @@ public class SetAlarm extends PreferenceActivity
                     finish();
                 }
         });
+        b = (Button) v.findViewById(R.id.alarm_delete);
+        b.setOnClickListener(new View.OnClickListener() {
+                public void onClick(View v) {
+                    deleteAlarm();
+                }
+        });
 
         // Replace the old content view with our new one.
         setContentView(ll);
@@ -181,7 +189,7 @@ public class SetAlarm extends PreferenceActivity
         mMinutes = minute;
         updateTime();
         // If the time has been changed, enable the alarm.
-        mEnabled = true;
+        mEnabledPref.setChecked(true);
     }
 
     private void updateTime() {
@@ -194,19 +202,34 @@ public class SetAlarm extends PreferenceActivity
 
     private void saveAlarm() {
         final String alert = mAlarmPref.getAlertString();
-        Alarms.setAlarm(this, mId, mEnabled, mHour, mMinutes,
-                mRepeatPref.getDaysOfWeek(), mVibratePref.isChecked(),
+        long time = Alarms.setAlarm(this, mId, mEnabledPref.isChecked(), mHour,
+                mMinutes, mRepeatPref.getDaysOfWeek(), mVibratePref.isChecked(),
                 mLabel.getText(), alert);
 
-        if (mEnabled) {
-            popAlarmSetToast(this, mHour, mMinutes,
-                    mRepeatPref.getDaysOfWeek());
+        if (mEnabledPref.isChecked()) {
+            popAlarmSetToast(this, time);
         }
     }
 
+    private void deleteAlarm() {
+        new AlertDialog.Builder(this)
+                .setTitle(getString(R.string.delete_alarm))
+                .setMessage(getString(R.string.delete_alarm_confirm))
+                .setPositiveButton(android.R.string.ok,
+                        new DialogInterface.OnClickListener() {
+                            public void onClick(DialogInterface d, int w) {
+                                Alarms.deleteAlarm(SetAlarm.this, mId);
+                                finish();
+                            }
+                        })
+                .setNegativeButton(android.R.string.cancel, null)
+                .show();
+    }
+
     /**
      * Write alarm out to persistent store and pops toast if alarm
-     * enabled
+     * enabled.
+     * Used only in test code.
      */
     private static void saveAlarm(
             Context context, int id, boolean enabled, int hour, int minute,
@@ -216,11 +239,11 @@ public class SetAlarm extends PreferenceActivity
                 + " " + hour + " " + minute + " vibe " + vibrate);
 
         // Fix alert string first
-        Alarms.setAlarm(context, id, enabled, hour, minute, daysOfWeek, vibrate,
-                label, alert);
+        long time = Alarms.setAlarm(context, id, enabled, hour, minute,
+                daysOfWeek, vibrate, label, alert);
 
         if (enabled && popToast) {
-            popAlarmSetToast(context, hour, minute, daysOfWeek);
+            popAlarmSetToast(context, time);
         }
     }
 
@@ -230,8 +253,13 @@ public class SetAlarm extends PreferenceActivity
      */
     static void popAlarmSetToast(Context context, int hour, int minute,
                                  Alarm.DaysOfWeek daysOfWeek) {
+        popAlarmSetToast(context,
+                Alarms.calculateAlarm(hour, minute, daysOfWeek)
+                .getTimeInMillis());
+    }
 
-        String toastText = formatToast(context, hour, minute, daysOfWeek);
+    private static void popAlarmSetToast(Context context, long timeInMillis) {
+        String toastText = formatToast(context, timeInMillis);
         Toast toast = Toast.makeText(context, toastText, Toast.LENGTH_LONG);
         ToastMaster.setToast(toast);
         toast.show();
@@ -241,11 +269,8 @@ public class SetAlarm extends PreferenceActivity
      * format "Alarm set for 2 days 7 hours and 53 minutes from
      * now"
      */
-    static String formatToast(Context context, int hour, int minute,
-                              Alarm.DaysOfWeek daysOfWeek) {
-        long alarm = Alarms.calculateAlarm(hour, minute,
-                                           daysOfWeek).getTimeInMillis();
-        long delta = alarm - System.currentTimeMillis();;
+    static String formatToast(Context context, long timeInMillis) {
+        long delta = timeInMillis - System.currentTimeMillis();
         long hours = delta / (1000 * 60 * 60);
         long minutes = delta / (1000 * 60) % 60;
         long days = hours / 24;
@@ -278,9 +303,6 @@ public class SetAlarm extends PreferenceActivity
     public boolean onCreateOptionsMenu(Menu menu) {
         super.onCreateOptionsMenu(menu);
 
-        mDeleteAlarmItem = menu.add(0, 0, 0, R.string.delete_alarm);
-        mDeleteAlarmItem.setIcon(android.R.drawable.ic_menu_delete);
-
         if (AlarmClock.DEBUG) {
             mTestAlarmItem = menu.add(0, 0, 0, "test alarm");
         }
@@ -289,11 +311,6 @@ public class SetAlarm extends PreferenceActivity
     }
 
     public boolean onOptionsItemSelected(MenuItem item) {
-        if (item == mDeleteAlarmItem) {
-            Alarms.deleteAlarm(this, mId);
-            finish();
-            return true;
-        }
         if (AlarmClock.DEBUG) {
             if (item == mTestAlarmItem) {
                 setTestAlarm();