From b1ac2e60dd872c7062b65e3027be38fcb2073ce2 Mon Sep 17 00:00:00 2001 From: Phillip Hsu Date: Fri, 2 Sep 2016 21:27:48 -0700 Subject: [PATCH] Initialize NumberGridTimePickerDialog with Alarm's previous hour and minute. Expand collapsed ViewHolder when time is clicked. --- .../com/philliphsu/clock2/alarms/AlarmsFragment.java | 2 +- .../philliphsu/clock2/alarms/BaseAlarmViewHolder.java | 4 +++- .../clock2/alarms/CollapsedAlarmViewHolder.java | 7 +++++++ .../philliphsu/clock2/editalarm/TimePickerHelper.java | 9 +++++---- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmsFragment.java b/app/src/main/java/com/philliphsu/clock2/alarms/AlarmsFragment.java index e89b115..186e6c4 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/AlarmsFragment.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/AlarmsFragment.java @@ -131,7 +131,7 @@ public class AlarmsFragment extends RecyclerViewFragment< // If we keep a reference to the dialog, we keep its previous state as well. // So the next time we call show() on it, the input field will show the // last inputted time. - BaseTimePickerDialog dialog = TimePickerHelper.newDialog(getActivity(), this); + BaseTimePickerDialog dialog = TimePickerHelper.newDialog(getActivity(), this, 0, 0); // DISREGARD THE LINT WARNING ABOUT DIALOG BEING NULL. dialog.show(getFragmentManager(), TAG_TIME_PICKER); } diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/BaseAlarmViewHolder.java b/app/src/main/java/com/philliphsu/clock2/alarms/BaseAlarmViewHolder.java index 31601dd..0658f27 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/BaseAlarmViewHolder.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/BaseAlarmViewHolder.java @@ -198,7 +198,9 @@ public abstract class BaseAlarmViewHolder extends BaseViewHolder { @OnClick(R.id.time) void openTimePicker() { - BaseTimePickerDialog dialog = TimePickerHelper.newDialog(getContext(), newOnTimeSetListener()); + Alarm alarm = getAlarm(); + BaseTimePickerDialog dialog = TimePickerHelper.newDialog(getContext(), + newOnTimeSetListener(), alarm.hour(), alarm.minutes()); dialog.show(mFragmentManager, AlarmsFragment.TAG_TIME_PICKER); } diff --git a/app/src/main/java/com/philliphsu/clock2/alarms/CollapsedAlarmViewHolder.java b/app/src/main/java/com/philliphsu/clock2/alarms/CollapsedAlarmViewHolder.java index ba865d9..137890c 100644 --- a/app/src/main/java/com/philliphsu/clock2/alarms/CollapsedAlarmViewHolder.java +++ b/app/src/main/java/com/philliphsu/clock2/alarms/CollapsedAlarmViewHolder.java @@ -98,4 +98,11 @@ public class CollapsedAlarmViewHolder extends BaseAlarmViewHolder { void openLabelEditor() { // DO NOT IMPLEMENT } + + @Override + void openTimePicker() { + super.openTimePicker(); + // Pretend we also clicked the itemView, so we get expanded. + onClick(itemView); + } } diff --git a/app/src/main/java/com/philliphsu/clock2/editalarm/TimePickerHelper.java b/app/src/main/java/com/philliphsu/clock2/editalarm/TimePickerHelper.java index 10a4ced..88a0241 100644 --- a/app/src/main/java/com/philliphsu/clock2/editalarm/TimePickerHelper.java +++ b/app/src/main/java/com/philliphsu/clock2/editalarm/TimePickerHelper.java @@ -13,7 +13,8 @@ import com.philliphsu.clock2.R; */ public final class TimePickerHelper { - public static BaseTimePickerDialog newDialog(Context context, BaseTimePickerDialog.OnTimeSetListener l) { + public static BaseTimePickerDialog newDialog(Context context, BaseTimePickerDialog.OnTimeSetListener l, + int initialHourOfDay, int initialMinute) { BaseTimePickerDialog dialog = null; String numpadStyle = context.getString(R.string.number_pad); String gridStyle = context.getString(R.string.grid_selector); @@ -26,9 +27,9 @@ public final class TimePickerHelper { dialog = NumpadTimePickerDialog.newInstance(l); } else if (prefTimePickerStyle.equals(gridStyle)) { dialog = NumberGridTimePickerDialog.newInstance( - l, // OnTimeSetListener - 0, // Initial hour of day - 0, // Initial minute + l, + initialHourOfDay, + initialMinute, DateFormat.is24HourFormat(context)); } // We don't have a default case, because we don't need one; prefTimePickerStyle