mirror of https://github.com/tasks/tasks
Use betterpickers calendar and radial pickers
* TimePreference * Custom alarms * Custom HideUntil datespull/281/head
parent
1c35c38319
commit
f42d5013f3
@ -0,0 +1,43 @@
|
|||||||
|
package org.tasks.activities;
|
||||||
|
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.content.Intent;
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.support.v4.app.FragmentActivity;
|
||||||
|
|
||||||
|
import org.joda.time.DateTime;
|
||||||
|
import org.tasks.dialogs.DateAndTimePickerDialog;
|
||||||
|
|
||||||
|
import static org.tasks.date.DateTimeUtils.newDateTime;
|
||||||
|
|
||||||
|
public class TimePickerActivity extends FragmentActivity {
|
||||||
|
|
||||||
|
public static final String EXTRA_HOURS = "extra_hours";
|
||||||
|
public static final String EXTRA_MINUTES = "extra_minutes";
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
|
||||||
|
Intent intent = getIntent();
|
||||||
|
int hour = intent.getIntExtra(EXTRA_HOURS, 0);
|
||||||
|
int minutes = intent.getIntExtra(EXTRA_MINUTES, 0);
|
||||||
|
|
||||||
|
DateAndTimePickerDialog.timePickerDialog(getSupportFragmentManager(), this, newDateTime().withMillisOfDay(0).withHourOfDay(hour).withMinuteOfHour(minutes), new DateAndTimePickerDialog.OnTimePicked() {
|
||||||
|
@Override
|
||||||
|
public void onTimePicked(int millisOfDay) {
|
||||||
|
final DateTime dateTime = newDateTime().withMillisOfDay(millisOfDay);
|
||||||
|
setResult(RESULT_OK, new Intent() {{
|
||||||
|
putExtra(EXTRA_HOURS, dateTime.getHourOfDay());
|
||||||
|
putExtra(EXTRA_MINUTES, dateTime.getMinuteOfHour());
|
||||||
|
}});
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
}, new DialogInterface.OnDismissListener() {
|
||||||
|
@Override
|
||||||
|
public void onDismiss(DialogInterface dialog) {
|
||||||
|
finish();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,78 @@
|
|||||||
|
package org.tasks.dialogs;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
import android.support.v4.app.FragmentManager;
|
||||||
|
import android.text.format.DateFormat;
|
||||||
|
|
||||||
|
import com.doomonafireball.betterpickers.calendardatepicker.CalendarDatePickerDialog;
|
||||||
|
import com.doomonafireball.betterpickers.radialtimepicker.RadialTimePickerDialog;
|
||||||
|
|
||||||
|
import org.joda.time.DateTime;
|
||||||
|
|
||||||
|
import static org.tasks.date.DateTimeUtils.newDateTime;
|
||||||
|
|
||||||
|
public class DateAndTimePickerDialog {
|
||||||
|
|
||||||
|
public interface OnDatePicked {
|
||||||
|
void onDatePicked(DateTime date);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OnTimePicked {
|
||||||
|
void onTimePicked(int millisOfDay);
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface OnDateTimePicked {
|
||||||
|
void onDateTimePicked(DateTime dateTime);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static final String FRAG_TAG_DATE_PICKER = "frag_tag_date_picker";
|
||||||
|
private static final String FRAG_TAG_TIME_PICKER = "frag_tag_time_picker";
|
||||||
|
|
||||||
|
public static void datePickerDialog(FragmentManager fragmentManager, DateTime initial, final OnDatePicked onDatePicked, final DialogInterface.OnDismissListener onDismissListener) {
|
||||||
|
MyCalendarDatePickerDialog dialog = new MyCalendarDatePickerDialog();
|
||||||
|
dialog.setOnDismissListener(onDismissListener);
|
||||||
|
dialog.initialize(new CalendarDatePickerDialog.OnDateSetListener() {
|
||||||
|
@Override
|
||||||
|
public void onDateSet(CalendarDatePickerDialog calendarDatePickerDialog, int year, int month, int day) {
|
||||||
|
onDatePicked.onDatePicked(newDateTime().withYear(year).withMonthOfYear(month + 1).withDayOfMonth(day).withMillisOfDay(0));
|
||||||
|
}
|
||||||
|
}, initial.getYear(), initial.getMonthOfYear() - 1, initial.getDayOfMonth());
|
||||||
|
dialog.show(fragmentManager, FRAG_TAG_DATE_PICKER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void timePickerDialog(FragmentManager fragmentManager, Context context, DateTime initial, final OnTimePicked onTimePicked, final DialogInterface.OnDismissListener onDismissListener) {
|
||||||
|
final boolean[] success = new boolean[1];
|
||||||
|
RadialTimePickerDialog dialog = new RadialTimePickerDialog();
|
||||||
|
dialog.initialize(new RadialTimePickerDialog.OnTimeSetListener() {
|
||||||
|
@Override
|
||||||
|
public void onTimeSet(RadialTimePickerDialog radialTimePickerDialog, int hours, int minutes) {
|
||||||
|
success[0] = true;
|
||||||
|
onTimePicked.onTimePicked(newDateTime().withMillisOfDay(0).withHourOfDay(hours).withMinuteOfHour(minutes).getMillisOfDay());
|
||||||
|
}
|
||||||
|
}, initial.getHourOfDay(), initial.getMinuteOfHour(), DateFormat.is24HourFormat(context));
|
||||||
|
dialog.setOnDismissListener(new RadialTimePickerDialog.OnDialogDismissListener() {
|
||||||
|
@Override
|
||||||
|
public void onDialogDismiss(DialogInterface dialogInterface) {
|
||||||
|
if (!success[0]) {
|
||||||
|
onDismissListener.onDismiss(dialogInterface);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
dialog.show(fragmentManager, FRAG_TAG_TIME_PICKER);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void dateAndTimePickerDialog(final FragmentManager fragmentManager, final Context context, final DateTime dateTime, final OnDateTimePicked dateTimePicked, final DialogInterface.OnDismissListener dismissed) {
|
||||||
|
datePickerDialog(fragmentManager, dateTime, new OnDatePicked() {
|
||||||
|
@Override
|
||||||
|
public void onDatePicked(final DateTime date) {
|
||||||
|
timePickerDialog(fragmentManager, context, dateTime, new OnTimePicked() {
|
||||||
|
@Override
|
||||||
|
public void onTimePicked(int millisOfDay) {
|
||||||
|
dateTimePicked.onDateTimePicked(date.withMillisOfDay(millisOfDay));
|
||||||
|
}
|
||||||
|
}, dismissed);
|
||||||
|
}
|
||||||
|
}, dismissed);
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,21 @@
|
|||||||
|
package org.tasks.dialogs;
|
||||||
|
|
||||||
|
import android.content.DialogInterface;
|
||||||
|
|
||||||
|
import com.doomonafireball.betterpickers.calendardatepicker.CalendarDatePickerDialog;
|
||||||
|
|
||||||
|
public class MyCalendarDatePickerDialog extends CalendarDatePickerDialog {
|
||||||
|
|
||||||
|
private DialogInterface.OnDismissListener listener;
|
||||||
|
|
||||||
|
public void setOnDismissListener(DialogInterface.OnDismissListener listener) {
|
||||||
|
this.listener = listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onCancel(DialogInterface dialog) {
|
||||||
|
if (listener != null) {
|
||||||
|
listener.onDismiss(dialog);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue