/**
* Copyright (c) 2012 Todoroo Inc
*
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.ui;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.View;
import android.view.Window;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import com.timsu.astrid.R;
import com.todoroo.astrid.service.ThemeService;
public class DateAndTimeDialog extends Dialog {
public interface DateAndTimeDialogListener {
public void onDateAndTimeSelected(long date);
public void onDateAndTimeCancelled();
}
private final DateAndTimePicker dateAndTimePicker;
private final Button okButton;
private final Button cancelButton;
private boolean cancelled = false;
private DateAndTimeDialogListener listener;
public DateAndTimeDialog(Context context, long startDate) {
this(context, startDate, R.layout.date_time_dialog, 0);
}
public DateAndTimeDialog(Context context, long startDate, int contentView, int title) {
super(context, ThemeService.getEditDialogTheme());
if (title == 0)
requestWindowFeature(Window.FEATURE_NO_TITLE);
else
setTitle(title);
/** Design the dialog in main.xml file */
setContentView(contentView);
LayoutParams params = getWindow().getAttributes();
params.height = LayoutParams.FILL_PARENT;
params.width = LayoutParams.FILL_PARENT;
getWindow().setAttributes((android.view.WindowManager.LayoutParams) params);
dateAndTimePicker = (DateAndTimePicker) findViewById(R.id.date_and_time);
dateAndTimePicker.initializeWithDate(startDate);
okButton = (Button) findViewById(R.id.ok);
cancelButton = (Button) findViewById(R.id.cancel);
okButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
if (listener != null)
listener.onDateAndTimeSelected(dateAndTimePicker.constructDueDate());
}
});
cancelButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cancelled = true;
cancel();
if (listener != null)
listener.onDateAndTimeCancelled();
}
});
setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface dialog) {
if (!cancelled) { // i.e. if back button pressed, which we treat as an "OK"
if (listener != null)
listener.onDateAndTimeSelected(dateAndTimePicker.constructDueDate());
} else {
cancelled = false; // reset
}
}
});
}
public long getSelectedDate() {
return dateAndTimePicker.constructDueDate();
}
public void setSelectedDateAndTime(long date) {
dateAndTimePicker.initializeWithDate(date);
}
public boolean hasTime() {
return dateAndTimePicker.hasTime();
}
public void setDateAndTimeDialogListener(DateAndTimeDialogListener listener) {
this.listener = listener;
}
public String getDisplayString(Context context) {
return dateAndTimePicker.getDisplayString(context, false, false);
}
}