Use DatePickerDialog instead of DatePicker

Change-Id: I24c3e369616f8cf84b37d3c46cdb7d67ed36b7fa
diff --git a/res/layout/date_picker.xml b/res/layout/date_picker.xml
deleted file mode 100644
index 41205cb..0000000
--- a/res/layout/date_picker.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<DatePicker
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/date_picker"
-    android:layout_width="wrap_content"
-    android:layout_height="wrap_content"
-    android:calendarViewShown="false"
- />
\ No newline at end of file
diff --git a/src/com/android/emergency/DatePreference.java b/src/com/android/emergency/DatePreference.java
index fa82f28..ebe748e 100644
--- a/src/com/android/emergency/DatePreference.java
+++ b/src/com/android/emergency/DatePreference.java
@@ -15,9 +15,11 @@
  */
 package com.android.emergency;
 
+import android.app.DatePickerDialog;
 import android.content.Context;
 import android.content.res.TypedArray;
-import android.preference.DialogPreference;
+import android.preference.Preference;
+import android.preference.Preference.OnPreferenceClickListener;
 import android.util.AttributeSet;
 import android.view.View;
 import android.widget.DatePicker;
@@ -27,16 +29,17 @@
 
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.util.Calendar;
 import java.util.GregorianCalendar;
 
-/** A base class for {@link DialogPreference} to select a date upon it being clicked. */
-public class DatePreference extends DialogPreference {
+/** A base class for {@link Preference} to select a date upon it being clicked. */
+public class DatePreference extends Preference implements DatePickerDialog.OnDateSetListener{
     private static final String SEPARATOR = "/";
     private static final int YEAR_INDEX = 0;
     private static final int MONTH_INDEX = 1;
     private static final int DAY_INDEX = 2;
 
-    private DatePicker mDatePicker = null;
+    private final DatePickerDialog mDatePickerDialog;
     private int mYear;
     private int mMonth;
     private int mDay;
@@ -47,22 +50,30 @@
     public DatePreference(Context context, AttributeSet attrs) {
         super(context, attrs);
         mDateFormat = SimpleDateFormat.getDateInstance();
+        final Calendar calendar = Calendar.getInstance();
+        mDatePickerDialog = new DatePickerDialog(
+                context,
+                this,
+                calendar.get(Calendar.YEAR),
+                calendar.get(Calendar.MONTH),
+                calendar.get(Calendar.DAY_OF_MONTH));
+        setOnPreferenceClickListener( new OnPreferenceClickListener() {
+            @Override
+            public boolean onPreferenceClick(Preference preference) {
+                showDatePickerDialog();
+                return true;
+            }
+        });
     }
 
-    @Override
-    protected View onCreateDialogView() {
-        mDatePicker = (DatePicker) View.inflate(getContext(), R.layout.date_picker, null);
-        return mDatePicker;
-    }
-
-    @Override
-    protected void onBindDialogView(View v) {
-        super.onBindDialogView(v);
+    private void showDatePickerDialog() {
         if (mDateExists) {
-            mDatePicker.updateDate(mYear, mMonth, mDay);
+            mDatePickerDialog.updateDate(mYear, mMonth, mDay);
         }
+        mDatePickerDialog.show();
     }
 
+
     @Override
     protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
         String date;
@@ -79,16 +90,10 @@
     }
 
     @Override
-    protected void onDialogClosed(boolean positiveResult) {
-        super.onDialogClosed(positiveResult);
-        if (positiveResult) {
-            int year = mDatePicker.getYear();
-            int month = mDatePicker.getMonth();
-            int day = mDatePicker.getDayOfMonth();
-            String date = serialize(year, month, day);
-            if (callChangeListener(date)) {
-                setDate(year, month, day);
-            }
+    public void onDateSet(DatePicker view, int year, int month, int day) {
+        String date = serialize(year, month, day);
+        if (callChangeListener(date)) {
+            setDate(year, month, day);
         }
     }
 
@@ -107,7 +112,7 @@
     }
 
     private void setDate(int year, int month, int day) {
-        if (!mDateExists ||year != mYear || month != mMonth || day != mDay) {
+        if (!mDateExists || year != mYear || month != mMonth || day != mDay) {
             mYear = year;
             mMonth = month;
             mDay = day;