package com.android.contacts.ui.widget;
import java.text.ParseException;
import java.util.Calendar;
import java.util.Date;
import android.content.Context;
import android.text.TextUtils;
import android.text.format.DateFormat;
import android.util.Log;
import android.view.*;
import android.widget.DatePicker;
import android.widget.TextView;
import android.app.*;
public class DateTimePickerHooker implements View.OnTouchListener, DatePickerDialog.OnDateSetListener {
private final static String TAG = "DateTimePickerHooker";
private Context mContext;
private TextView mTextView;
private java.text.DateFormat mDateFormat;
private java.util.Calendar mCalendar;
public DateTimePickerHooker(Context itemContext, TextView editText) {
mContext = itemContext;
mTextView = editText;
mDateFormat = DateFormat.getDateFormat(itemContext); // get system default
mCalendar = java.util.Calendar.getInstance();
// mCalendar.set(1990, 0, 1); // set default date 1900-1-1
// showDatePicker();
}
/**
* show time picker
*/
private void showDatePicker() {
try {
String str = mTextView.getText().toString();
if(!TextUtils.isEmpty(str)){
Date date = mDateFormat.parse(str);
mCalendar.setTime(date);
}
showDatePickerDialog();
} catch (Exception e) {
e.printStackTrace();
Log.i(TAG,"showDatePicker error");
}
}
private void showDatePickerDialog() {
new DatePickerDialog(
mContext, this,
mCalendar.get(java.util.Calendar.YEAR),
mCalendar.get(java.util.Calendar.MONTH),
mCalendar.get(java.util.Calendar.DAY_OF_MONTH)).show();
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if(event.getAction() == MotionEvent.ACTION_UP) {
showDatePicker();
}
return true;
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
mCalendar.set(year, monthOfYear, dayOfMonth);
Date localDate = mCalendar.getTime();
String mBirthdayString = mDateFormat.format(localDate);
String[] mBirthdayArray = mBirthdayString.split("/");
String newString = "";
if(mBirthdayArray.length == 3) {
newString = mBirthdayArray[2] + "-" + mBirthdayArray[0] + "-" + mBirthdayArray[1];
newString.trim();
mTextView.setText(newString);
} else {
mTextView.setText(mBirthdayString);
}
}
}