From d1c0820de4519d4e5f322e693b64fb6ce47ac22a Mon Sep 17 00:00:00 2001 From: Phillip Hsu Date: Sat, 16 Jul 2016 20:28:13 -0700 Subject: [PATCH] Created BaseTimePickerDialog --- .../editalarm/BaseTimePickerDialog.java | 21 ++++++++++++++ .../editalarm/NumpadTimePickerDialog.java | 14 ++------- .../editalarm/ScrollingGridTimePicker.java | 29 +++++++++++++++++++ .../ScrollingGridTimePickerDialog.java | 16 ++++++++++ .../clock2/editalarm/TimePicker.java | 1 + 5 files changed, 69 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/com/philliphsu/clock2/editalarm/BaseTimePickerDialog.java create mode 100644 app/src/main/java/com/philliphsu/clock2/editalarm/ScrollingGridTimePicker.java create mode 100644 app/src/main/java/com/philliphsu/clock2/editalarm/ScrollingGridTimePickerDialog.java diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/BaseTimePickerDialog.java b/app/src/main/java/com/philliphsu/clock2/editalarm/BaseTimePickerDialog.java new file mode 100644 index 0000000..e19991f --- /dev/null +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/BaseTimePickerDialog.java @@ -0,0 +1,21 @@ +package com.philliphsu.clock2.editalarm; + +import android.support.v4.app.DialogFragment; + +/** + * Created by Phillip Hsu on 7/16/2016. + */ +public abstract class BaseTimePickerDialog extends DialogFragment { + + /*package*/ TimePicker.OnTimeSetListener mCallback; + + /** + * Empty constructor required for dialog fragment. + * Subclasses do not need to write their own. + */ + public BaseTimePickerDialog() {} + + public final void setOnTimeSetListener(TimePicker.OnTimeSetListener callback) { + mCallback = callback; + } +} diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePickerDialog.java b/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePickerDialog.java index 1cfebfa..444d14a 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePickerDialog.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/NumpadTimePickerDialog.java @@ -1,7 +1,6 @@ package com.philliphsu.clock2.editalarm; import android.os.Bundle; -import android.support.v4.app.DialogFragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -19,15 +18,14 @@ import butterknife.OnTouch; * Created by Phillip Hsu on 7/12/2016. * */ -public class NumpadTimePickerDialog extends DialogFragment implements NumpadTimePicker.OnInputChangeListener { +public class NumpadTimePickerDialog extends BaseTimePickerDialog + implements NumpadTimePicker.OnInputChangeListener { private static final String KEY_HOUR_OF_DAY = "hour_of_day"; private static final String KEY_MINUTE = "minute"; private static final String KEY_IS_24_HOUR_VIEW = "is_24_hour_view"; private static final String KEY_DIGITS_INPUTTED = "digits_inputted"; - private TimePicker.OnTimeSetListener mCallback; - private int mInitialHourOfDay; private int mInitialMinute; private boolean mIs24HourMode; @@ -46,10 +44,6 @@ public class NumpadTimePickerDialog extends DialogFragment implements NumpadTime @Bind(R.id.number_grid) NumpadTimePicker mNumpad; @Bind(R.id.focus_grabber) View mFocusGrabber; - public NumpadTimePickerDialog() { - // Empty constructor required for dialog fragment. - } - // TODO: We don't need to pass in an initial hour and minute for a new instance. // TODO: Delete is24HourMode? @Deprecated @@ -75,10 +69,6 @@ public class NumpadTimePickerDialog extends DialogFragment implements NumpadTime mIs24HourMode = is24HourMode; } - public void setOnTimeSetListener(TimePicker.OnTimeSetListener callback) { - mCallback = callback; - } - @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/ScrollingGridTimePicker.java b/app/src/main/java/com/philliphsu/clock2/editalarm/ScrollingGridTimePicker.java new file mode 100644 index 0000000..3afd858 --- /dev/null +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/ScrollingGridTimePicker.java @@ -0,0 +1,29 @@ +package com.philliphsu.clock2.editalarm; + +import android.content.Context; +import android.support.v7.widget.GridLayout; +import android.util.AttributeSet; + +/** + * Created by Phillip Hsu on 7/16/2016. + */ +public class ScrollingGridTimePicker extends GridLayout implements TimePicker { + + public ScrollingGridTimePicker(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public ScrollingGridTimePicker(Context context) { + super(context); + } + + @Override + public int hourOfDay() { + return 0; + } + + @Override + public int minute() { + return 0; + } +} diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/ScrollingGridTimePickerDialog.java b/app/src/main/java/com/philliphsu/clock2/editalarm/ScrollingGridTimePickerDialog.java new file mode 100644 index 0000000..39ea57b --- /dev/null +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/ScrollingGridTimePickerDialog.java @@ -0,0 +1,16 @@ +package com.philliphsu.clock2.editalarm; + +/** + * Created by Phillip Hsu on 7/16/2016. + */ +public class ScrollingGridTimePickerDialog extends BaseTimePickerDialog { + + private TimePicker.OnTimeSetListener mCallback; + + public static NumpadTimePickerDialog newInstance(TimePicker.OnTimeSetListener callback) { + NumpadTimePickerDialog ret = new NumpadTimePickerDialog(); + ret.setOnTimeSetListener(callback); + return ret; + } + +} diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/TimePicker.java b/app/src/main/java/com/philliphsu/clock2/editalarm/TimePicker.java index ff48a96..9da3a55 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/TimePicker.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/TimePicker.java @@ -22,6 +22,7 @@ public interface TimePicker { * @param hourOfDay The hour that was set. * @param minute The minute that was set. */ + // TODO: Consider changing VG param to TimePicker void onTimeSet(ViewGroup viewGroup, int hourOfDay, int minute); } }