mirror of https://github.com/tasks/tasks
Use framework date and time pickers on Android 6+
parent
8404713db0
commit
0329ba2fc4
@ -0,0 +1,68 @@
|
|||||||
|
package org.tasks.dialogs;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.DatePickerDialog;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.widget.DatePicker;
|
||||||
|
|
||||||
|
import org.tasks.injection.InjectingNativeDialogFragment;
|
||||||
|
import org.tasks.injection.NativeDialogFragmentComponent;
|
||||||
|
import org.tasks.themes.Theme;
|
||||||
|
import org.tasks.time.DateTime;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
public class NativeDatePickerDialog extends InjectingNativeDialogFragment implements DatePickerDialog.OnDateSetListener {
|
||||||
|
|
||||||
|
public static NativeDatePickerDialog newNativeDatePickerDialog(DateTime initial) {
|
||||||
|
NativeDatePickerDialog dialog = new NativeDatePickerDialog();
|
||||||
|
dialog.initial = initial;
|
||||||
|
return dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface NativeDatePickerDialogCallback {
|
||||||
|
void cancel();
|
||||||
|
|
||||||
|
void onDateSet(int year, int month, int day);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject Theme theme;
|
||||||
|
|
||||||
|
private NativeDatePickerDialogCallback callback;
|
||||||
|
private DateTime initial;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
|
DatePickerDialog datePickerDialog = new DatePickerDialog(theme.wrap(getActivity()), this, 0, 0, 0);
|
||||||
|
if (initial != null) {
|
||||||
|
datePickerDialog.updateDate(initial.getYear(), initial.getMonthOfYear() - 1, initial.getDayOfMonth());
|
||||||
|
}
|
||||||
|
return datePickerDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onDateSet(DatePicker datePicker, int year, int month, int day) {
|
||||||
|
callback.onDateSet(year, month, day);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel(DialogInterface dialog) {
|
||||||
|
super.onCancel(dialog);
|
||||||
|
|
||||||
|
callback.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
super.onAttach(activity);
|
||||||
|
|
||||||
|
callback = (NativeDatePickerDialogCallback) activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void inject(NativeDialogFragmentComponent component) {
|
||||||
|
component.inject(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,72 @@
|
|||||||
|
package org.tasks.dialogs;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.app.Dialog;
|
||||||
|
import android.app.TimePickerDialog;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.widget.TimePicker;
|
||||||
|
|
||||||
|
import com.todoroo.andlib.utility.DateUtilities;
|
||||||
|
|
||||||
|
import org.tasks.injection.InjectingNativeDialogFragment;
|
||||||
|
import org.tasks.injection.NativeDialogFragmentComponent;
|
||||||
|
import org.tasks.themes.Theme;
|
||||||
|
import org.tasks.time.DateTime;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
public class NativeTimePickerDialog extends InjectingNativeDialogFragment implements TimePickerDialog.OnTimeSetListener {
|
||||||
|
|
||||||
|
public static NativeTimePickerDialog newNativeTimePickerDialog(DateTime initial) {
|
||||||
|
NativeTimePickerDialog dialog = new NativeTimePickerDialog();
|
||||||
|
dialog.initial = initial;
|
||||||
|
return dialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface NativeTimePickerDialogCallback {
|
||||||
|
void cancel();
|
||||||
|
|
||||||
|
void onTimeSet(int hour, int minute);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Inject Theme theme;
|
||||||
|
|
||||||
|
private NativeTimePickerDialogCallback callback;
|
||||||
|
private DateTime initial;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Dialog onCreateDialog(Bundle savedInstanceState) {
|
||||||
|
Context context = theme.wrap(getActivity());
|
||||||
|
TimePickerDialog timePickerDialog = new TimePickerDialog(context, this, 0, 0, DateUtilities.is24HourFormat(context));
|
||||||
|
if (initial != null) {
|
||||||
|
timePickerDialog.updateTime(initial.getHourOfDay(), initial.getMinuteOfHour());
|
||||||
|
}
|
||||||
|
return timePickerDialog;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel(DialogInterface dialog) {
|
||||||
|
super.onCancel(dialog);
|
||||||
|
|
||||||
|
callback.cancel();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onTimeSet(TimePicker timePicker, int hour, int minute) {
|
||||||
|
callback.onTimeSet(hour, minute);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAttach(Activity activity) {
|
||||||
|
super.onAttach(activity);
|
||||||
|
|
||||||
|
callback = (NativeTimePickerDialogCallback) activity;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void inject(NativeDialogFragmentComponent component) {
|
||||||
|
component.inject(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -1,7 +1,13 @@
|
|||||||
package org.tasks.injection;
|
package org.tasks.injection;
|
||||||
|
|
||||||
|
import org.tasks.dialogs.NativeDatePickerDialog;
|
||||||
|
import org.tasks.dialogs.NativeTimePickerDialog;
|
||||||
import org.tasks.locale.LocalePickerDialog;
|
import org.tasks.locale.LocalePickerDialog;
|
||||||
|
|
||||||
public interface BaseNativeDialogFragmentComponent {
|
public interface BaseNativeDialogFragmentComponent {
|
||||||
void inject(LocalePickerDialog localePickerDialog);
|
void inject(LocalePickerDialog localePickerDialog);
|
||||||
|
|
||||||
|
void inject(NativeDatePickerDialog nativeDatePickerDialog);
|
||||||
|
|
||||||
|
void inject(NativeTimePickerDialog nativeTimePickerDialog);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue