aboutsummaryrefslogtreecommitdiff
path: root/apps/NotificationStudio/src/com/android/notificationstudio/editor/DateTimeEditor.java
diff options
context:
space:
mode:
Diffstat (limited to 'apps/NotificationStudio/src/com/android/notificationstudio/editor/DateTimeEditor.java')
-rw-r--r--apps/NotificationStudio/src/com/android/notificationstudio/editor/DateTimeEditor.java139
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);
+ }});
+ }
+
+}