From e041d9041b34145db0ab9020c7ed54a93b76dd6b Mon Sep 17 00:00:00 2001 From: srikanth r Date: Fri, 4 Aug 2017 23:01:41 +0530 Subject: [PATCH] Implemented cancel to reminders of habits. --- .../uhabits/intents/PendingIntentFactory.kt | 9 +++++++++ .../notifications/AndroidNotificationTray.kt | 8 ++++++++ .../isoron/uhabits/receivers/WidgetReceiver.java | 8 ++++++++ .../main/res/drawable-hdpi/ic_action_cancel.png | Bin 0 -> 266 bytes .../main/res/drawable-mdpi/ic_action_cancel.png | Bin 0 -> 198 bytes .../main/res/drawable-xhdpi/ic_action_cancel.png | Bin 0 -> 323 bytes .../main/res/drawable-xxhdpi/ic_action_cancel.png | Bin 0 -> 531 bytes .../uhabits/core/ui/widgets/WidgetBehavior.java | 6 ++++++ 8 files changed, 31 insertions(+) create mode 100644 uhabits-android/src/main/res/drawable-hdpi/ic_action_cancel.png create mode 100644 uhabits-android/src/main/res/drawable-mdpi/ic_action_cancel.png create mode 100644 uhabits-android/src/main/res/drawable-xhdpi/ic_action_cancel.png create mode 100644 uhabits-android/src/main/res/drawable-xxhdpi/ic_action_cancel.png diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.kt b/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.kt index 2758ba934..5a8d42936 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.kt @@ -54,6 +54,15 @@ class PendingIntentFactory }, FLAG_UPDATE_CURRENT) + fun cancelNotification(habit: Habit): PendingIntent = + PendingIntent.getBroadcast( + context, 3, + Intent(context, WidgetReceiver::class.java).apply { + action = WidgetReceiver.ACTION_CANCEL_REPETITION + data = Uri.parse(habit.uriString) + }, + FLAG_UPDATE_CURRENT) + fun showHabit(habit: Habit): PendingIntent = android.support.v4.app.TaskStackBuilder .create(context) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt index 1a13d417f..e269df6cb 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt +++ b/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt @@ -61,6 +61,12 @@ class AndroidNotificationTray context.getString(R.string.snooze), pendingIntents.snoozeNotification(habit)) + val cancelAction = Action( + R.drawable.ic_action_cancel, + context.getString(android.R.string.no), + pendingIntents.cancelNotification(habit) + ) + val wearableBg = decodeResource(context.resources, R.drawable.stripe) // Even though the set of actions is the same on the phone and @@ -70,6 +76,7 @@ class AndroidNotificationTray .setBackground(wearableBg) .addAction(checkAction) .addAction(snoozeAction) + .addAction(cancelAction) val notification = NotificationCompat.Builder(context) .setSmallIcon(R.drawable.ic_notification) @@ -79,6 +86,7 @@ class AndroidNotificationTray .setDeleteIntent(pendingIntents.dismissNotification(habit)) .addAction(checkAction) .addAction(snoozeAction) + .addAction(cancelAction) .setSound(ringtoneManager.getURI()) .extend(wearableExtender) .setWhen(reminderTime) diff --git a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/WidgetReceiver.java b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/WidgetReceiver.java index 7074224e8..9f98bd191 100644 --- a/uhabits-android/src/main/java/org/isoron/uhabits/receivers/WidgetReceiver.java +++ b/uhabits-android/src/main/java/org/isoron/uhabits/receivers/WidgetReceiver.java @@ -46,6 +46,9 @@ public class WidgetReceiver extends BroadcastReceiver public static final String ACTION_REMOVE_REPETITION = "org.isoron.uhabits.ACTION_REMOVE_REPETITION"; + public static final String ACTION_CANCEL_REPETITION = + "org.isoron.uhabits.ACTION_CANCEL_REPETITION"; + public static final String ACTION_TOGGLE_REPETITION = "org.isoron.uhabits.ACTION_TOGGLE_REPETITION"; @@ -88,6 +91,11 @@ public class WidgetReceiver extends BroadcastReceiver controller.onRemoveRepetition(data.getHabit(), data.getTimestamp()); break; + + case ACTION_CANCEL_REPETITION: + controller.onCancelRepetition(data.getHabit(), + data.getTimestamp()); + break; } } catch (RuntimeException e) diff --git a/uhabits-android/src/main/res/drawable-hdpi/ic_action_cancel.png b/uhabits-android/src/main/res/drawable-hdpi/ic_action_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..374fc6fc0d86b48017197db225217f0bf7ffb7b5 GIT binary patch literal 266 zcmV+l0rmcgP)wdAb70#le3)R_UzmN0Q6q0t&9QBuhSYHQEr?y1tr#BVmb zHcZfb`&5&u3MGA;ip&)Khi=lP$DkIi|Im@3g3v$FC$HCRTW9HaxmOHp@ammd5!K5dX1VahO+0asTPU*P*_oB5vBm}WXRV9e@lNt#qQ&!hJcnIX yGRjU|o;A%yXrAcdyRENl-ZULq_x|DWuS~1%wLOY;eRUD&Fa}RoKbLh*2~7aLE>hqC literal 0 HcmV?d00001 diff --git a/uhabits-android/src/main/res/drawable-xhdpi/ic_action_cancel.png b/uhabits-android/src/main/res/drawable-xhdpi/ic_action_cancel.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd10906c98145ac66e6aa0ddbf8a75e1c57a3c3 GIT binary patch literal 323 zcmV-J0lfZ+P)c=K!vDFrqV-m%SUtywr@n1}ov9KFW zxW5!1Sy;C0q$NHnc1Vd|dd|DzClPzYro;|)@f_JnOT6U_fRYOveMxbCPl$^zW)d8! zQq2Tso>wtJ&5xY%U?Fx4IStfQXUM#k**s}}2Y$^i)0000W#~uA} Vg-Jr&F;D;i002ovPDHLkV1iXP)NLv1@zA{!f}MHcyUcGLxzT z0000000000006)PA;eRnb?a1XFWKZ)#zn?U0yzg6XBlg%ayBwP#UHnrl9ZfIt$mg8 zO!4GAss1$c2fVV|AX|<7_K{1m_^*<*I)}fU5RwdX zI(Bj_?<6Zp7INB(GluLoTTB}2oZoDf!^^8v31E}Tb9%#HB#CXE6G2j=>YOr8j$?Mq zCzS`1RJI%kN#)5INV?C+;a}$jeDRFdbfYR~E|mxGC*>liJV_QsV9dzH3;Zf-AS?MR;)^ZR6{*BlGNufA1Q`ns2O literal 0 HcmV?d00001 diff --git a/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/widgets/WidgetBehavior.java b/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/widgets/WidgetBehavior.java index 1f9500123..4615a2487 100644 --- a/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/widgets/WidgetBehavior.java +++ b/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/widgets/WidgetBehavior.java @@ -61,6 +61,12 @@ public class WidgetBehavior performToggle(habit, timestamp); } + public void onCancelRepetition(@NonNull Habit habit, Timestamp timestamp) + { + onRemoveRepetition(habit, timestamp); + notificationTray.cancel(habit); + } + public void onToggleRepetition(@NonNull Habit habit, Timestamp timestamp) { performToggle(habit, timestamp);