diff --git a/astrid/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java b/astrid/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java index 6cd2db3c8..ebf2a3da7 100644 --- a/astrid/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java +++ b/astrid/src/main/java/com/todoroo/astrid/calls/MissedCallActivity.java @@ -25,8 +25,8 @@ import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.astrid.activity.EditPreferences; import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.reminders.NotificationFragment.SnoozeDialog; import com.todoroo.astrid.reminders.SnoozeCallback; +import com.todoroo.astrid.reminders.SnoozeDialog; import com.todoroo.astrid.service.StartupService; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.service.ThemeService; diff --git a/astrid/src/main/java/com/todoroo/astrid/reminders/NotificationFragment.java b/astrid/src/main/java/com/todoroo/astrid/reminders/NotificationFragment.java index 5fef2d4cf..59444bf59 100644 --- a/astrid/src/main/java/com/todoroo/astrid/reminders/NotificationFragment.java +++ b/astrid/src/main/java/com/todoroo/astrid/reminders/NotificationFragment.java @@ -5,36 +5,16 @@ */ package com.todoroo.astrid.reminders; -import android.app.Activity; -import android.app.AlertDialog; -import android.app.TimePickerDialog; -import android.app.TimePickerDialog.OnTimeSetListener; -import android.content.Context; -import android.content.DialogInterface; -import android.view.LayoutInflater; -import android.view.MotionEvent; import android.view.View; -import android.widget.FrameLayout; -import android.widget.LinearLayout; -import android.widget.Spinner; -import com.todoroo.andlib.utility.AndroidUtilities; -import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.activity.TaskListFragment; -import com.todoroo.astrid.repeats.RepeatControlSet; import com.todoroo.astrid.service.TaskService; -import com.todoroo.astrid.ui.NumberPicker; import org.tasks.R; -import java.util.Date; - import javax.inject.Inject; -import static org.tasks.date.DateTimeUtils.newDate; - /** * This activity is launched when a user opens up a notification from the * tray. It launches the appropriate activity based on the passed in parameters. @@ -70,89 +50,4 @@ public class NotificationFragment extends TaskListFragment { long taskId = extras.getLong(TOKEN_ID); new ReminderDialog(taskService, (AstridActivity) getActivity(), taskId, title).show(); } - - public static class SnoozeDialog extends FrameLayout implements DialogInterface.OnClickListener { - - LinearLayout snoozePicker; - NumberPicker snoozeValue; - Spinner snoozeUnits; - SnoozeCallback snoozeCallback; - - public SnoozeDialog(Activity activity, SnoozeCallback callback) { - super(activity); - this.snoozeCallback = callback; - - LayoutInflater mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - mInflater.inflate(R.layout.snooze_dialog, this, true); - - snoozePicker = (LinearLayout) findViewById(R.id.snoozePicker); - snoozeValue = (NumberPicker) findViewById(R.id.numberPicker); - snoozeUnits = (Spinner) findViewById(R.id.numberUnits); - - snoozeValue.setIncrementBy(1); - snoozeValue.setRange(1, 99); - snoozeUnits.setSelection(RepeatControlSet.INTERVAL_HOURS); - snoozeUnits.setOnTouchListener(new OnTouchListener() { - @Override - public boolean onTouch(View v, MotionEvent event) { - AndroidUtilities.hideSoftInputForViews(getContext(), snoozePicker); - return false; - } - }); - } - - @Override - public void onClick(DialogInterface dialog, int which) { - long time = DateUtilities.now(); - int value = snoozeValue.getCurrent(); - switch(snoozeUnits.getSelectedItemPosition()) { - case RepeatControlSet.INTERVAL_DAYS: - time += value * DateUtilities.ONE_DAY; - break; - case RepeatControlSet.INTERVAL_HOURS: - time += value * DateUtilities.ONE_HOUR; - break; - case RepeatControlSet.INTERVAL_MINUTES: - time += value * DateUtilities.ONE_MINUTE; - break; - case RepeatControlSet.INTERVAL_WEEKS: - time += value * 7 * DateUtilities.ONE_DAY; - break; - case RepeatControlSet.INTERVAL_MONTHS: - time = DateUtilities.addCalendarMonthsToUnixtime(time, 1); - break; - case RepeatControlSet.INTERVAL_YEARS: - time = DateUtilities.addCalendarMonthsToUnixtime(time, 12); - break; - } - - snoozeCallback.snoozeForTime(time); - } - - } - - /** - * Snooze and re-trigger this alarm - */ - public static void snooze(Activity activity, OnTimeSetListener onTimeSet, SnoozeCallback snoozeCallback) { - if(Preferences.getBoolean(R.string.p_rmd_snooze_dialog, false)) { - Date now = newDate(); - now.setHours(now.getHours() + 1); - int hour = now.getHours(); - int minute = now.getMinutes(); - TimePickerDialog tpd = new TimePickerDialog(activity, onTimeSet, hour, minute, - DateUtilities.is24HourFormat(activity)); - tpd.show(); - tpd.setOwnerActivity(activity); - } else { - SnoozeDialog sd = new SnoozeDialog(activity, snoozeCallback); - new AlertDialog.Builder(activity) - .setTitle(R.string.rmd_NoA_snooze) - .setView(sd) - .setPositiveButton(android.R.string.ok, sd) - .setNegativeButton(android.R.string.cancel, null) - .show().setOwnerActivity(activity); - } - } - } diff --git a/astrid/src/main/java/com/todoroo/astrid/reminders/ReminderDialog.java b/astrid/src/main/java/com/todoroo/astrid/reminders/ReminderDialog.java index ed7328dbb..01b43ae11 100644 --- a/astrid/src/main/java/com/todoroo/astrid/reminders/ReminderDialog.java +++ b/astrid/src/main/java/com/todoroo/astrid/reminders/ReminderDialog.java @@ -5,7 +5,10 @@ */ package com.todoroo.astrid.reminders; +import android.app.Activity; +import android.app.AlertDialog; import android.app.Dialog; +import android.app.TimePickerDialog; import android.app.TimePickerDialog.OnTimeSetListener; import android.content.Intent; import android.view.View; @@ -15,6 +18,7 @@ import android.widget.TimePicker; import android.widget.Toast; import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.activity.AstridActivity; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.data.Task; @@ -76,7 +80,7 @@ public class ReminderDialog extends Dialog { findViewById(R.id.reminder_snooze).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { - NotificationFragment.snooze(activity, onTimeSet, dialogSnooze); + snooze(activity, onTimeSet, dialogSnooze); } }); @@ -112,4 +116,28 @@ public class ReminderDialog extends Dialog { LinearLayout container = (LinearLayout) findViewById(R.id.speech_bubble_container); container.setVisibility(View.GONE); } + + /** + * Snooze and re-trigger this alarm + */ + private void snooze(Activity activity, OnTimeSetListener onTimeSet, SnoozeCallback snoozeCallback) { + if(Preferences.getBoolean(R.string.p_rmd_snooze_dialog, false)) { + Date now = newDate(); + now.setHours(now.getHours() + 1); + int hour = now.getHours(); + int minute = now.getMinutes(); + TimePickerDialog tpd = new TimePickerDialog(activity, onTimeSet, hour, minute, + DateUtilities.is24HourFormat(activity)); + tpd.show(); + tpd.setOwnerActivity(activity); + } else { + SnoozeDialog sd = new SnoozeDialog(activity, snoozeCallback); + new AlertDialog.Builder(activity) + .setTitle(R.string.rmd_NoA_snooze) + .setView(sd) + .setPositiveButton(android.R.string.ok, sd) + .setNegativeButton(android.R.string.cancel, null) + .show().setOwnerActivity(activity); + } + } } diff --git a/astrid/src/main/java/com/todoroo/astrid/reminders/SnoozeDialog.java b/astrid/src/main/java/com/todoroo/astrid/reminders/SnoozeDialog.java new file mode 100644 index 000000000..a8eec1cd0 --- /dev/null +++ b/astrid/src/main/java/com/todoroo/astrid/reminders/SnoozeDialog.java @@ -0,0 +1,77 @@ +package com.todoroo.astrid.reminders; + +import android.app.Activity; +import android.content.Context; +import android.content.DialogInterface; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.Spinner; + +import com.todoroo.andlib.utility.AndroidUtilities; +import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.astrid.repeats.RepeatControlSet; +import com.todoroo.astrid.ui.NumberPicker; + +import org.tasks.R; + +public class SnoozeDialog extends FrameLayout implements DialogInterface.OnClickListener { + + LinearLayout snoozePicker; + NumberPicker snoozeValue; + Spinner snoozeUnits; + SnoozeCallback snoozeCallback; + + public SnoozeDialog(Activity activity, SnoozeCallback callback) { + super(activity); + this.snoozeCallback = callback; + + LayoutInflater mInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); + mInflater.inflate(R.layout.snooze_dialog, this, true); + + snoozePicker = (LinearLayout) findViewById(R.id.snoozePicker); + snoozeValue = (NumberPicker) findViewById(R.id.numberPicker); + snoozeUnits = (Spinner) findViewById(R.id.numberUnits); + + snoozeValue.setIncrementBy(1); + snoozeValue.setRange(1, 99); + snoozeUnits.setSelection(RepeatControlSet.INTERVAL_HOURS); + snoozeUnits.setOnTouchListener(new OnTouchListener() { + @Override + public boolean onTouch(View v, MotionEvent event) { + AndroidUtilities.hideSoftInputForViews(getContext(), snoozePicker); + return false; + } + }); + } + + @Override + public void onClick(DialogInterface dialog, int which) { + long time = DateUtilities.now(); + int value = snoozeValue.getCurrent(); + switch(snoozeUnits.getSelectedItemPosition()) { + case RepeatControlSet.INTERVAL_DAYS: + time += value * DateUtilities.ONE_DAY; + break; + case RepeatControlSet.INTERVAL_HOURS: + time += value * DateUtilities.ONE_HOUR; + break; + case RepeatControlSet.INTERVAL_MINUTES: + time += value * DateUtilities.ONE_MINUTE; + break; + case RepeatControlSet.INTERVAL_WEEKS: + time += value * 7 * DateUtilities.ONE_DAY; + break; + case RepeatControlSet.INTERVAL_MONTHS: + time = DateUtilities.addCalendarMonthsToUnixtime(time, 1); + break; + case RepeatControlSet.INTERVAL_YEARS: + time = DateUtilities.addCalendarMonthsToUnixtime(time, 12); + break; + } + + snoozeCallback.snoozeForTime(time); + } +} \ No newline at end of file