blob: 8089de13920b7c10f396a94be17cc3562b8c7602 [file] [log] [blame]
/*
* Copyright 2012 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
*
* 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
* limitations under the License.
*/
package com.android.notificationstudio.editor;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.FragmentTransaction;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TimePicker;
import com.android.notificationstudio.R;
import com.android.notificationstudio.editor.Editors.Editor;
import com.android.notificationstudio.model.EditableItem;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateTimeEditor implements Editor {
private static final SimpleDateFormat YYYY_MM_DD = new SimpleDateFormat("yyyy/MM/dd");
private static final SimpleDateFormat HH_MM_SS = new SimpleDateFormat("HH:mm:ss");
@SuppressWarnings("deprecation")
public Runnable bindEditor(View v, final EditableItem item, final Runnable afterChange) {
final Button dateButton = (Button) v.findViewById(R.id.date_button);
final Button timeButton = (Button) v.findViewById(R.id.time_button);
final Button resetButton = (Button) v.findViewById(R.id.reset_button);
int vPad = v.getResources().getDimensionPixelSize(R.dimen.editor_datetime_padding_v);
int hPad = v.getResources().getDimensionPixelSize(R.dimen.editor_datetime_padding_h);
for (Button b : new Button[] { dateButton, timeButton, resetButton }) {
b.setVisibility(View.VISIBLE);
b.setPadding(hPad, vPad, hPad, vPad);
}
final Runnable updateButtonText = new Runnable() {
public void run() {
Date d = getDateTime(item);
String dateString = YYYY_MM_DD.format(d);
dateButton.setText(dateString);
String timeString = HH_MM_SS.format(d);
timeButton.setText(timeString);
}};
updateButtonText.run();
// wire up date button
DialogFragment datePickerFragment = new DialogFragment() {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Date d = getDateTime(item);
OnDateSetListener onDateSet = new OnDateSetListener() {
public void onDateSet(DatePicker view, int year,
int monthOfYear, int dayOfMonth) {
Date d = getDateTime(item);
d.setYear(year - 1900);
d.setMonth(monthOfYear);
d.setDate(dayOfMonth);
item.setValue(d.getTime());
updateButtonText.run();
afterChange.run();
}
};
return new DatePickerDialog(getActivity(), onDateSet,
d.getYear() + 1900, d.getMonth(), d.getDate());
}
};
Activity activity = (Activity) v.getContext();
launchDialogOnClick(activity, "datePicker", dateButton, datePickerFragment);
// wire up time button
DialogFragment timePickerFragment = new DialogFragment() {
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Date d = getDateTime(item);
OnTimeSetListener onTimeSet = new OnTimeSetListener() {
public void onTimeSet(TimePicker view, int hourOfDay,
int minute) {
Date d = getDateTime(item);
d.setHours(hourOfDay);
d.setMinutes(minute);
item.setValue(d.getTime());
updateButtonText.run();
afterChange.run();
}
};
return new TimePickerDialog(getActivity(),
onTimeSet, d.getHours(), d.getMinutes(), true);
}
};
launchDialogOnClick(activity, "timePicker", timeButton, timePickerFragment);
// wire up reset button
resetButton.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
item.setValue(null);
updateButtonText.run();
afterChange.run();
}});
return updateButtonText;
}
private static Date getDateTime(EditableItem item) {
long value = item.hasValue() ? item.getValueLong() : System.currentTimeMillis();
return new Date(value);
}
private static void launchDialogOnClick(final Activity activity,
final String tag, Button button, final DialogFragment fragment) {
button.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
FragmentTransaction ft = activity.getFragmentManager().beginTransaction();
fragment.show(ft, tag);
}});
}
}