From f4852f6a25f7187279dc5281373f98f3d5c1cd1a Mon Sep 17 00:00:00 2001 From: Phillip Hsu Date: Thu, 29 Sep 2016 01:03:19 -0700 Subject: [PATCH] Finish implementing system default timepicker --- .../dialogs/SystemTimePickerDialog.java | 35 ++++++++------- .../dialogs/TimePickerDialogController.java | 43 +++++-------------- 2 files changed, 29 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/com/philliphsu/clock2/dialogs/SystemTimePickerDialog.java b/app/src/main/java/com/philliphsu/clock2/dialogs/SystemTimePickerDialog.java index bba64cd..e974632 100644 --- a/app/src/main/java/com/philliphsu/clock2/dialogs/SystemTimePickerDialog.java +++ b/app/src/main/java/com/philliphsu/clock2/dialogs/SystemTimePickerDialog.java @@ -4,45 +4,48 @@ import android.app.Dialog; import android.app.TimePickerDialog; import android.os.Bundle; import android.support.annotation.NonNull; -import android.text.format.DateFormat; -import android.util.Log; +import android.support.v4.app.DialogFragment; import android.widget.TimePicker; import com.philliphsu.clock2.timepickers.BaseTimePickerDialog; -import java.util.Calendar; - /** * Created by Phillip Hsu on 9/28/2016. */ -public class SystemTimePickerDialog extends android.support.v4.app.DialogFragment implements TimePickerDialog.OnTimeSetListener { +public class SystemTimePickerDialog extends DialogFragment implements TimePickerDialog.OnTimeSetListener { + + private BaseTimePickerDialog.OnTimeSetListener mListener; + private int mInitialHourOfDay; + private int mInitialMinute; + private boolean mIs24HourMode; public static SystemTimePickerDialog newInstance(BaseTimePickerDialog.OnTimeSetListener l, int hourOfDay, int minute, boolean is24HourMode) { SystemTimePickerDialog dialog = new SystemTimePickerDialog(); + dialog.mListener = l; + dialog.mInitialHourOfDay = hourOfDay; + dialog.mInitialMinute = minute; + dialog.mIs24HourMode = is24HourMode; return dialog; } + public void setOnTimeSetListener(BaseTimePickerDialog.OnTimeSetListener listener) { + mListener = listener; + } + @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - // Use the current time as the default values for the picker - final Calendar c = Calendar.getInstance(); - int hour = c.get(Calendar.HOUR_OF_DAY); - int minute = c.get(Calendar.MINUTE); - - // Create a new instance of TimePickerDialog and return it - return new TimePickerDialog(getActivity(), this, hour, minute, - DateFormat.is24HourFormat(getActivity())); + return new TimePickerDialog(getActivity(), this, mInitialHourOfDay, mInitialMinute, mIs24HourMode); } @Override public void onTimeSet(TimePicker view, int hourOfDay, int minute) { // http://stackoverflow.com/q/19452993/5055032 - // BUG! This is also called when the dialog is dismissed, so clicking + // BUG PRE-LOLLIPOP! This is also called when the dialog is dismissed, so clicking // the 'Done' button will end up calling this twice! - if (view.isShown()) { - Log.d("dfljsdlfkj", "Calling onTimeSet"); + if (view.isShown() && mListener != null) { + mListener.onTimeSet(view, hourOfDay, minute); } } } diff --git a/app/src/main/java/com/philliphsu/clock2/dialogs/TimePickerDialogController.java b/app/src/main/java/com/philliphsu/clock2/dialogs/TimePickerDialogController.java index b073c6f..7d34968 100644 --- a/app/src/main/java/com/philliphsu/clock2/dialogs/TimePickerDialogController.java +++ b/app/src/main/java/com/philliphsu/clock2/dialogs/TimePickerDialogController.java @@ -1,12 +1,10 @@ package com.philliphsu.clock2.dialogs; -import android.app.TimePickerDialog; import android.content.Context; import android.preference.PreferenceManager; +import android.support.v4.app.DialogFragment; import android.support.v4.app.FragmentManager; import android.text.format.DateFormat; -import android.util.Log; -import android.widget.TimePicker; import com.philliphsu.clock2.R; import com.philliphsu.clock2.timepickers.BaseTimePickerDialog; @@ -49,13 +47,9 @@ public final class TimePickerDialogController extends DialogFragmentController