diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayActivity.java b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayActivity.java
index a32871f65..be0ef36d1 100644
--- a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayActivity.java
+++ b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/SnoozeDelayActivity.java
@@ -1,5 +1,6 @@
package org.isoron.uhabits.notifications;
+import android.app.*;
import android.content.*;
import android.os.*;
import android.support.v4.app.*;
@@ -7,6 +8,7 @@ import android.text.format.*;
import android.util.*;
import com.android.datetimepicker.time.*;
+import com.android.datetimepicker.time.TimePickerDialog;
import org.isoron.uhabits.*;
import org.isoron.uhabits.core.utils.DateUtils;
@@ -18,12 +20,14 @@ import static org.isoron.uhabits.core.ui.ThemeSwitcher.THEME_DARK;
import static org.isoron.uhabits.core.utils.DateUtils.applyTimezone;
public class SnoozeDelayActivity extends FragmentActivity implements
- TimePickerDialog.OnTimeSetListener, DialogInterface.OnDismissListener {
+ TimePickerDialog.OnTimeSetListener, DialogInterface.OnDismissListener, DialogInterface.OnClickListener {
public static final String ACTION_ASK_SNOOZE = "org.isoron.uhabits.ACTION_ASK_SNOOZE";
private static final String TAG = "SnoozeDelayActivity";
+ private AlertDialog activeDelayDialog;
+
@Override
protected void onCreate(Bundle bundle)
{
@@ -45,6 +49,34 @@ public class SnoozeDelayActivity extends FragmentActivity implements
}
private void AskSnooze()
+ {
+ AlertDialog.Builder builder = new AlertDialog.Builder(this);
+ builder.setTitle(R.string.select_snooze_delay)
+ .setItems(R.array.snooze_interval_names_reminder, this);
+ AlertDialog dialog = builder.create();
+ dialog.setOnDismissListener(this);
+ activeDelayDialog = dialog;
+ dialog.show();
+ }
+
+ @Override
+ public void onClick(DialogInterface dialogInterface, int i)
+ {
+ int[] snoozeDelay = getResources().getIntArray(R.array.snooze_interval_values_reminder);
+ assert (i >= 0 && i <= snoozeDelay.length);
+ if( snoozeDelay[ i ] < 0 )
+ {
+ activeDelayDialog.setOnDismissListener(null);
+ AskCustomSnooze();
+ return;
+ }
+ Intent intent = new Intent( ReminderReceiver.ACTION_SNOOZE_REMINDER_DELAY, getIntent().getData(),
+ this, ReminderReceiver.class );
+ intent.putExtra("snoozeDelay", snoozeDelay[ i ]);
+ sendBroadcast(intent);
+ }
+
+ private void AskCustomSnooze()
{
final Calendar calendar = Calendar.getInstance();
int hour = calendar.get(Calendar.HOUR_OF_DAY);
diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderReceiver.java b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderReceiver.java
index c6990b4dd..b80baf11b 100644
--- a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderReceiver.java
+++ b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/ReminderReceiver.java
@@ -49,6 +49,9 @@ public class ReminderReceiver extends BroadcastReceiver
public static final String ACTION_SNOOZE_REMINDER_SET =
"org.isoron.uhabits.ACTION_SNOOZE_REMINDER_SET";
+ public static final String ACTION_SNOOZE_REMINDER_DELAY =
+ "org.isoron.uhabits.ACTION_SNOOZE_REMINDER_DELAY";
+
private static final String TAG = "ReminderReceiver";
@Override
@@ -101,6 +104,12 @@ public class ReminderReceiver extends BroadcastReceiver
reminderController.snoozeNotificationSetReminderTime(habit, reminderTime);
break;
+ case ACTION_SNOOZE_REMINDER_DELAY:
+ if (habit == null) return;
+ long snoozeDelay = intent.getIntExtra("snoozeDelay", 0);
+ reminderController.snoozeNotificationAddDelay(habit, snoozeDelay);
+ break;
+
case Intent.ACTION_BOOT_COMPLETED:
reminderController.onBootCompleted();
break;
diff --git a/uhabits-android/src/main/res/values/constants.xml b/uhabits-android/src/main/res/values/constants.xml
index 1b46ccc5d..e8d08c0b5 100644
--- a/uhabits-android/src/main/res/values/constants.xml
+++ b/uhabits-android/src/main/res/values/constants.xml
@@ -49,6 +49,28 @@
- -1
+
+ - @string/interval_15_minutes
+ - @string/interval_30_minutes
+ - @string/interval_1_hour
+ - @string/interval_2_hour
+ - @string/interval_4_hour
+ - @string/interval_8_hour
+ - @string/interval_24_hour
+ - @string/interval_custom
+
+
+
+ - 15
+ - 30
+ - 60
+ - 120
+ - 240
+ - 480
+ - 1440
+ - -1
+
+
- @string/every_day
- @string/every_week
diff --git a/uhabits-android/src/main/res/values/strings.xml b/uhabits-android/src/main/res/values/strings.xml
index 821cf2298..814a53d32 100644
--- a/uhabits-android/src/main/res/values/strings.xml
+++ b/uhabits-android/src/main/res/values/strings.xml
@@ -84,6 +84,7 @@
8 hours
24 hours
Always ask
+ Custom...
Toggle with short press
Put checkmarks with a single tap instead of press-and-hold. More convenient, but might cause accidental toggles.
Snooze interval on reminders
@@ -96,6 +97,7 @@
Name
Settings
Snooze interval
+ Select snooze delay
Did you know?
To rearrange the entries, press-and-hold on the name of the habit, then drag it to the correct place.