Reconfigure how alarms are setup.

Fixes bug:3368780 Canceling in the Middle of Adding an Alarm Flow is Confusing on Tablet

now:
On existing alarm: can delete, cancel, save(ok)
on new alarm: can cancel or save(ok)
time picker is in the first dialog

Change-Id: I3fa86fc8de4b73ee422e78790a796bad14e404e7
diff --git a/res/layout/set_alarm.xml b/res/layout/set_alarm.xml
index a5ebe5c..059b6c3 100644
--- a/res/layout/set_alarm.xml
+++ b/res/layout/set_alarm.xml
@@ -3,16 +3,16 @@
 /*
 ** Copyright 2010, The Android Open Source Project
 **
-** Licensed under the Apache License, Version 2.0 (the "License"); 
-** you may not use this file except in compliance with the License. 
-** You may obtain a copy of the License at 
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
 **
-**     http://www.apache.org/licenses/LICENSE-2.0 
+**     http://www.apache.org/licenses/LICENSE-2.0
 **
-** Unless required by applicable law or agreed to in writing, software 
-** distributed under the License is distributed on an "AS IS" BASIS, 
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
-** See the License for the specific language governing permissions and 
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
 ** limitations under the License.
 */
 -->
@@ -21,6 +21,13 @@
     android:layout_height="match_parent"
     android:orientation="vertical">
 
+    <TimePicker
+        android:id="@+id/timePicker"
+        android:layout_gravity="center_horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        />
+
     <ListView android:id="@android:id/list"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
diff --git a/src/com/android/deskclock/SetAlarm.java b/src/com/android/deskclock/SetAlarm.java
index dd23222..32a7b0a 100644
--- a/src/com/android/deskclock/SetAlarm.java
+++ b/src/com/android/deskclock/SetAlarm.java
@@ -17,7 +17,6 @@
 package com.android.deskclock;
 
 import android.app.AlertDialog;
-import android.app.TimePickerDialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
@@ -41,13 +40,13 @@
 import android.widget.ListView;
 import android.widget.TimePicker;
 import android.widget.Toast;
+import android.widget.TimePicker.OnTimeChangedListener;
 
 /**
  * Manages each alarm
  */
-public class SetAlarm extends PreferenceActivity
-        implements TimePickerDialog.OnTimeSetListener,
-        Preference.OnPreferenceChangeListener {
+public class SetAlarm extends PreferenceActivity implements Preference.OnPreferenceChangeListener,
+        OnTimeChangedListener {
 
     private EditTextPreference mLabel;
     private CheckBoxPreference mEnabledPref;
@@ -55,7 +54,7 @@
     private AlarmPreference mAlarmPref;
     private CheckBoxPreference mVibratePref;
     private RepeatPreference mRepeatPref;
-    private MenuItem mTestAlarmItem;
+    private TimePicker mTimePicker;
 
     private int     mId;
     private int     mHour;
@@ -140,7 +139,7 @@
                 }
         });
         final Button revert = (Button) findViewById(R.id.alarm_revert);
-        revert.setEnabled(false);
+        revert.setEnabled(true);
         revert.setOnClickListener(new View.OnClickListener() {
             public void onClick(View v) {
                 int newId = mId;
@@ -151,14 +150,16 @@
                 } else {
                     saveAlarm();
                 }
-                revert.setEnabled(false);
+                revert.setEnabled(true);
                 finish();
             }
         });
         b = (Button) findViewById(R.id.alarm_delete);
         if (mId == -1) {
             b.setEnabled(false);
+            b.setVisibility(View.GONE);
         } else {
+            b.setVisibility(View.VISIBLE);
             b.setOnClickListener(new View.OnClickListener() {
                 public void onClick(View v) {
                     deleteAlarm();
@@ -228,15 +229,21 @@
     }
 
     private void showTimePicker() {
-        new TimePickerDialog(this, this, mHour, mMinutes,
-                DateFormat.is24HourFormat(this)).show();
+        mTimePicker = (TimePicker) findViewById(R.id.timePicker);
+        mTimePicker.setCurrentHour(mHour);
+        mTimePicker.setCurrentMinute(mMinutes);
+        mTimePicker.setIs24HourView(DateFormat.is24HourFormat(this));
+        mTimePicker.setVisibility(View.VISIBLE);
+        mTimePicker.setOnTimeChangedListener(this);
     }
 
-    public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
+
+    @Override
+    public void onTimeChanged(TimePicker timePicker, int hourOfDay, int minute) {
         // onTimeSet is called when the user clicks "Set"
         mTimePickerCancelled = false;
-        mHour = hourOfDay;
-        mMinutes = minute;
+        mHour = timePicker.getCurrentHour();
+        mMinutes = timePicker.getCurrentMinute();
         updateTime();
         // If the time has been changed, enable the alarm.
         mEnabledPref.setChecked(true);