package org.ohmage.prompt.timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import org.ohmage.R;
import org.ohmage.prompt.AbstractPrompt;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.LinearLayout;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
public class TimestampPrompt extends AbstractPrompt {
private Calendar mTime;
@Override
protected Object getTypeSpecificResponseObject() {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss");
return dateFormat.format(mTime.getTime());
}
@Override
protected Object getTypeSpecificExtrasObject() {
// TODO Auto-generated method stub
return null;
}
@Override
protected void clearTypeSpecificResponseData() {
mTime = Calendar.getInstance();
}
@Override
public String getUnansweredPromptText() {
return "Please enter a valid time.";
}
@Override
public boolean isPromptAnswered() {
// TODO Auto-generated method stub
if (mTime == null) {
return false;
} else {
return true;
}
}
@Override
public View getView(final Context context) {
// TODO Auto-generated method stub
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.prompt_timestamp, null);
TimePicker timePicker = (TimePicker) layout.findViewById(R.id.time_picker);
final Button dateButton = (Button) layout.findViewById(R.id.date_button);
if (mTime == null) {
mTime = Calendar.getInstance();
}
timePicker.setCurrentHour(mTime.get(Calendar.HOUR_OF_DAY));
timePicker.setCurrentMinute(mTime.get(Calendar.MINUTE));
final SimpleDateFormat dateFormat = new SimpleDateFormat("MMM d, yyyy");
dateButton.setText(dateFormat.format(mTime.getTime()));
timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
// TODO Auto-generated method stub
mTime.set(Calendar.HOUR_OF_DAY, hourOfDay);
mTime.set(Calendar.MINUTE, minute);
mTime.set(Calendar.SECOND, 0);
}
});
final OnDateSetListener listener = new OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) {
// TODO Auto-generated method stub
mTime.set(year, monthOfYear, dayOfMonth);
dateButton.setText(dateFormat.format(mTime.getTime()));
}
};
dateButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
new DatePickerDialog(context, listener, mTime.get(Calendar.YEAR), mTime.get(Calendar.MONTH), mTime.get(Calendar.DAY_OF_MONTH)).show();
}
});
return layout;
}
}