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