diff options
Diffstat (limited to 'apps/NotificationStudio/src/com/android/notificationstudio/editor/DateTimeEditor.java')
-rw-r--r-- | apps/NotificationStudio/src/com/android/notificationstudio/editor/DateTimeEditor.java | 139 |
1 files changed, 139 insertions, 0 deletions
diff --git a/apps/NotificationStudio/src/com/android/notificationstudio/editor/DateTimeEditor.java b/apps/NotificationStudio/src/com/android/notificationstudio/editor/DateTimeEditor.java new file mode 100644 index 000000000..8089de139 --- /dev/null +++ b/apps/NotificationStudio/src/com/android/notificationstudio/editor/DateTimeEditor.java @@ -0,0 +1,139 @@ +/* + * 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); + }}); + } + +} |