diff --git a/src/main/java/org/tasks/activities/TimePickerActivity.java b/src/main/java/org/tasks/activities/TimePickerActivity.java index e32544174..6fe3bea72 100644 --- a/src/main/java/org/tasks/activities/TimePickerActivity.java +++ b/src/main/java/org/tasks/activities/TimePickerActivity.java @@ -1,43 +1,44 @@ package org.tasks.activities; -import android.content.DialogInterface; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.FragmentActivity; +import android.support.v4.app.FragmentManager; +import android.text.format.DateFormat; -import org.joda.time.DateTime; -import org.tasks.dialogs.DateAndTimePickerDialog; +import com.sleepbot.datetimepicker.time.RadialPickerLayout; +import com.sleepbot.datetimepicker.time.TimePickerDialog; -import static org.tasks.date.DateTimeUtils.newDateTime; -public class TimePickerActivity extends FragmentActivity { +public class TimePickerActivity extends FragmentActivity implements TimePickerDialog.OnTimeSetListener { public static final String EXTRA_HOURS = "extra_hours"; public static final String EXTRA_MINUTES = "extra_minutes"; + private static final String FRAG_TAG_TIME_PICKER = "frag_tag_time_picker"; @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(); - } - }); + FragmentManager supportFragmentManager = getSupportFragmentManager(); + TimePickerDialog dialog = (TimePickerDialog) supportFragmentManager.findFragmentByTag(FRAG_TAG_TIME_PICKER); + if (dialog == null) { + Intent intent = getIntent(); + int hours = intent.getIntExtra(EXTRA_HOURS, 0); + int minutes = intent.getIntExtra(EXTRA_MINUTES, 0); + dialog = new TimePickerDialog(); + dialog.initialize(null, hours, minutes, DateFormat.is24HourFormat(this), false); + dialog.show(getSupportFragmentManager(), FRAG_TAG_TIME_PICKER); + } + dialog.setOnTimeSetListener(this); + } + + @Override + public void onTimeSet(RadialPickerLayout radialPickerLayout, final int hours, final int minutes) { + setResult(RESULT_OK, new Intent() {{ + putExtra(EXTRA_HOURS, hours); + putExtra(EXTRA_MINUTES, minutes); + }}); + finish(); } }