Finish implementing system default timepicker
This commit is contained in:
parent
5539e4fabb
commit
f4852f6a25
@ -4,45 +4,48 @@ import android.app.Dialog;
|
|||||||
import android.app.TimePickerDialog;
|
import android.app.TimePickerDialog;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
import android.text.format.DateFormat;
|
import android.support.v4.app.DialogFragment;
|
||||||
import android.util.Log;
|
|
||||||
import android.widget.TimePicker;
|
import android.widget.TimePicker;
|
||||||
|
|
||||||
import com.philliphsu.clock2.timepickers.BaseTimePickerDialog;
|
import com.philliphsu.clock2.timepickers.BaseTimePickerDialog;
|
||||||
|
|
||||||
import java.util.Calendar;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Created by Phillip Hsu on 9/28/2016.
|
* 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,
|
public static SystemTimePickerDialog newInstance(BaseTimePickerDialog.OnTimeSetListener l,
|
||||||
int hourOfDay, int minute, boolean is24HourMode) {
|
int hourOfDay, int minute, boolean is24HourMode) {
|
||||||
SystemTimePickerDialog dialog = new SystemTimePickerDialog();
|
SystemTimePickerDialog dialog = new SystemTimePickerDialog();
|
||||||
|
dialog.mListener = l;
|
||||||
|
dialog.mInitialHourOfDay = hourOfDay;
|
||||||
|
dialog.mInitialMinute = minute;
|
||||||
|
dialog.mIs24HourMode = is24HourMode;
|
||||||
return dialog;
|
return dialog;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setOnTimeSetListener(BaseTimePickerDialog.OnTimeSetListener listener) {
|
||||||
|
mListener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
// Use the current time as the default values for the picker
|
return new TimePickerDialog(getActivity(), this, mInitialHourOfDay, mInitialMinute, mIs24HourMode);
|
||||||
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()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
||||||
// http://stackoverflow.com/q/19452993/5055032
|
// 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!
|
// the 'Done' button will end up calling this twice!
|
||||||
if (view.isShown()) {
|
if (view.isShown() && mListener != null) {
|
||||||
Log.d("dfljsdlfkj", "Calling onTimeSet");
|
mListener.onTimeSet(view, hourOfDay, minute);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,12 +1,10 @@
|
|||||||
package com.philliphsu.clock2.dialogs;
|
package com.philliphsu.clock2.dialogs;
|
||||||
|
|
||||||
import android.app.TimePickerDialog;
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
|
import android.support.v4.app.DialogFragment;
|
||||||
import android.support.v4.app.FragmentManager;
|
import android.support.v4.app.FragmentManager;
|
||||||
import android.text.format.DateFormat;
|
import android.text.format.DateFormat;
|
||||||
import android.util.Log;
|
|
||||||
import android.widget.TimePicker;
|
|
||||||
|
|
||||||
import com.philliphsu.clock2.R;
|
import com.philliphsu.clock2.R;
|
||||||
import com.philliphsu.clock2.timepickers.BaseTimePickerDialog;
|
import com.philliphsu.clock2.timepickers.BaseTimePickerDialog;
|
||||||
@ -49,13 +47,9 @@ public final class TimePickerDialogController extends DialogFragmentController<B
|
|||||||
initialMinute,
|
initialMinute,
|
||||||
DateFormat.is24HourFormat(mContext));
|
DateFormat.is24HourFormat(mContext));
|
||||||
} else {
|
} else {
|
||||||
// Use system default
|
SystemTimePickerDialog timepicker = SystemTimePickerDialog.newInstance(
|
||||||
// TimePickerDialog sysDefDialog = new TimePickerDialog(
|
mListener, initialHourOfDay, initialMinute, DateFormat.is24HourFormat(mContext));
|
||||||
// mContext, new ForwardingOnTimeSetListener(mListener),
|
timepicker.show(mFragmentManager, tag);
|
||||||
// initialHourOfDay, initialMinute, DateFormat.is24HourFormat(mContext));
|
|
||||||
// sysDefDialog.show();
|
|
||||||
SystemTimePickerDialog timepicker = new SystemTimePickerDialog();
|
|
||||||
timepicker.show(mFragmentManager, "dfsd");
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
show(dialog, tag);
|
show(dialog, tag);
|
||||||
@ -63,29 +57,12 @@ public final class TimePickerDialogController extends DialogFragmentController<B
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void tryRestoreCallback(String tag) {
|
public void tryRestoreCallback(String tag) {
|
||||||
BaseTimePickerDialog picker = findDialog(tag);
|
// Can't use #findDialog()!
|
||||||
if (picker != null) {
|
DialogFragment picker = (DialogFragment) mFragmentManager.findFragmentByTag(tag);
|
||||||
Log.i(TAG, "Restoring time picker callback: " + mListener);
|
if (picker instanceof BaseTimePickerDialog) {
|
||||||
picker.setOnTimeSetListener(mListener);
|
((BaseTimePickerDialog) picker).setOnTimeSetListener(mListener);
|
||||||
}
|
} else if (picker instanceof SystemTimePickerDialog) {
|
||||||
}
|
((SystemTimePickerDialog) picker).setOnTimeSetListener(mListener);
|
||||||
|
|
||||||
/**
|
|
||||||
* The listener to set on system's default time picker.
|
|
||||||
*/
|
|
||||||
private static final class ForwardingOnTimeSetListener implements TimePickerDialog.OnTimeSetListener {
|
|
||||||
private final BaseTimePickerDialog.OnTimeSetListener mListener;
|
|
||||||
|
|
||||||
private ForwardingOnTimeSetListener(BaseTimePickerDialog.OnTimeSetListener listener) {
|
|
||||||
mListener = listener;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
|
|
||||||
Log.d(TAG, "Calling onTimeSet");
|
|
||||||
if (mListener != null) {
|
|
||||||
mListener.onTimeSet(view, hourOfDay, minute);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user