diff --git a/src/main/java/com/todoroo/astrid/reminders/SnoozeCallback.java b/src/main/java/com/todoroo/astrid/reminders/SnoozeCallback.java index 73f406d87..094ed66ee 100644 --- a/src/main/java/com/todoroo/astrid/reminders/SnoozeCallback.java +++ b/src/main/java/com/todoroo/astrid/reminders/SnoozeCallback.java @@ -9,4 +9,6 @@ public interface SnoozeCallback { void snoozeForTime(long time); + void pickDateTime(); + } diff --git a/src/main/java/org/tasks/reminders/SnoozeActivity.java b/src/main/java/org/tasks/reminders/SnoozeActivity.java index a4a0831af..91cea3224 100644 --- a/src/main/java/org/tasks/reminders/SnoozeActivity.java +++ b/src/main/java/org/tasks/reminders/SnoozeActivity.java @@ -10,6 +10,8 @@ import com.todoroo.astrid.reminders.SnoozeCallback; import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.TaskService; +import org.joda.time.DateTime; +import org.tasks.activities.DateAndTimePickerActivity; import org.tasks.activities.TimePickerActivity; import org.tasks.injection.InjectingFragmentActivity; import org.tasks.notifications.NotificationManager; @@ -19,6 +21,8 @@ import javax.inject.Inject; public class SnoozeActivity extends InjectingFragmentActivity implements SnoozeCallback, DialogInterface.OnCancelListener { private static final String FRAG_TAG_SNOOZE_DIALOG = "frag_tag_snooze_dialog"; + private static final String EXTRA_PICKING_DATE_TIME = "extra_picking_date_time"; + private static final int REQUEST_DATE_TIME = 10101; public static final String EXTRA_TASK_ID = "id"; @@ -27,11 +31,21 @@ public class SnoozeActivity extends InjectingFragmentActivity implements SnoozeC @Inject NotificationManager notificationManager; private long taskId; + private boolean pickingDateTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + taskId = getIntent().getLongExtra(EXTRA_TASK_ID, 0L); + + if (savedInstanceState != null) { + pickingDateTime = savedInstanceState.getBoolean(EXTRA_PICKING_DATE_TIME, false); + if (pickingDateTime) { + return; + } + } + startupService.onStartupApplication(this); FragmentManager supportFragmentManager = getSupportFragmentManager(); @@ -40,7 +54,6 @@ public class SnoozeActivity extends InjectingFragmentActivity implements SnoozeC fragmentByTag = new SnoozeDialog(); fragmentByTag.show(supportFragmentManager, FRAG_TAG_SNOOZE_DIALOG); } - taskId = getIntent().getLongExtra(EXTRA_TASK_ID, 0L); fragmentByTag.setOnCancelListener(this); fragmentByTag.setSnoozeCallback(this); } @@ -56,6 +69,21 @@ public class SnoozeActivity extends InjectingFragmentActivity implements SnoozeC finish(); } + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putBoolean(EXTRA_PICKING_DATE_TIME, pickingDateTime); + } + + @Override + public void pickDateTime() { + pickingDateTime = true; + + startActivityForResult(new Intent(this, DateAndTimePickerActivity.class) {{ + putExtra(DateAndTimePickerActivity.EXTRA_TIMESTAMP, new DateTime().plusMinutes(30).getMillis()); + }}, REQUEST_DATE_TIME); + } + @Override public void onCancel(DialogInterface dialog) { finish(); @@ -63,13 +91,12 @@ public class SnoozeActivity extends InjectingFragmentActivity implements SnoozeC @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { - if (requestCode == SnoozeDialog.REQUEST_DATE_TIME) { + if (requestCode == REQUEST_DATE_TIME) { if (resultCode == RESULT_OK && data != null) { snoozeForTime(data.getLongExtra(TimePickerActivity.EXTRA_TIMESTAMP, 0L)); } else { finish(); } - overridePendingTransition(0, 0); } else { super.onActivityResult(requestCode, resultCode, data); } diff --git a/src/main/java/org/tasks/reminders/SnoozeDialog.java b/src/main/java/org/tasks/reminders/SnoozeDialog.java index 233b9f4e8..be7e6614e 100644 --- a/src/main/java/org/tasks/reminders/SnoozeDialog.java +++ b/src/main/java/org/tasks/reminders/SnoozeDialog.java @@ -3,7 +3,6 @@ package org.tasks.reminders; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; -import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AlertDialog; @@ -13,7 +12,6 @@ import com.todoroo.astrid.reminders.SnoozeCallback; import org.joda.time.DateTime; import org.tasks.R; -import org.tasks.activities.DateAndTimePickerActivity; import org.tasks.injection.ForApplication; import org.tasks.injection.InjectingDialogFragment; import org.tasks.preferences.Preferences; @@ -28,8 +26,6 @@ import static com.todoroo.andlib.utility.DateUtilities.getTimeString; public class SnoozeDialog extends InjectingDialogFragment { - public static final int REQUEST_DATE_TIME = 10101; - @Inject Preferences preferences; @Inject @ForApplication Context context; @@ -97,9 +93,7 @@ public class SnoozeDialog extends InjectingDialogFragment { break; case 3: dialog.dismiss(); - getActivity().startActivityForResult(new Intent(context, DateAndTimePickerActivity.class) {{ - putExtra(DateAndTimePickerActivity.EXTRA_TIMESTAMP, new DateTime().plusMinutes(30).getMillis()); - }}, REQUEST_DATE_TIME); + snoozeCallback.pickDateTime(); break; } }