diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.kt
index cb2f84532..7741698b2 100644
--- a/android/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.kt
+++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/intents/PendingIntentFactory.kt
@@ -36,7 +36,7 @@ class PendingIntentFactory
private val intentFactory: IntentFactory) {
fun addCheckmark(habit: Habit, timestamp: Timestamp?): PendingIntent =
- PendingIntent.getBroadcast(
+ getBroadcast(
context, 1,
Intent(context, WidgetReceiver::class.java).apply {
data = Uri.parse(habit.uriString)
@@ -46,7 +46,7 @@ class PendingIntentFactory
FLAG_UPDATE_CURRENT)
fun dismissNotification(habit: Habit): PendingIntent =
- PendingIntent.getBroadcast(
+ getBroadcast(
context, 0,
Intent(context, ReminderReceiver::class.java).apply {
action = WidgetReceiver.ACTION_DISMISS_REMINDER
@@ -55,7 +55,7 @@ class PendingIntentFactory
FLAG_UPDATE_CURRENT)
fun removeRepetition(habit: Habit): PendingIntent =
- PendingIntent.getBroadcast(
+ getBroadcast(
context, 3,
Intent(context, WidgetReceiver::class.java).apply {
action = WidgetReceiver.ACTION_REMOVE_REPETITION
@@ -71,10 +71,8 @@ class PendingIntentFactory
context, habit))
.getPendingIntent(0, FLAG_UPDATE_CURRENT)!!
- fun showReminder(habit: Habit,
- reminderTime: Long?,
- timestamp: Long): PendingIntent =
- PendingIntent.getBroadcast(
+ fun showReminder(habit: Habit, reminderTime: Long?, timestamp: Long): PendingIntent =
+ getBroadcast(
context,
(habit.getId()!! % Integer.MAX_VALUE).toInt() + 1,
Intent(context, ReminderReceiver::class.java).apply {
@@ -86,7 +84,7 @@ class PendingIntentFactory
FLAG_UPDATE_CURRENT)
fun snoozeNotification(habit: Habit): PendingIntent =
- PendingIntent.getBroadcast(
+ getBroadcast(
context, 0,
Intent(context, ReminderReceiver::class.java).apply {
data = Uri.parse(habit.uriString)
@@ -95,7 +93,7 @@ class PendingIntentFactory
FLAG_UPDATE_CURRENT)
fun toggleCheckmark(habit: Habit, timestamp: Long?): PendingIntent =
- PendingIntent.getBroadcast(
+ getBroadcast(
context, 2,
Intent(context, WidgetReceiver::class.java).apply {
data = Uri.parse(habit.uriString)
diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt
index 1f6ab6ad0..f0a3e8d2b 100644
--- a/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt
+++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt
@@ -69,11 +69,11 @@ class AndroidNotificationTray
} catch (e: RuntimeException) {
// Some Xiaomi phones produce a RuntimeException if custom notification sounds are used.
Log.i("AndroidNotificationTray",
- "Failed to show notification. Retrying without sound.")
+ "Failed to show notification. Retrying without sound.")
val n = buildNotification(habit,
- reminderTime,
- timestamp,
- disableSound = true)
+ reminderTime,
+ timestamp,
+ disableSound = true)
notificationManager.notify(notificationId, n)
}
@@ -95,30 +95,41 @@ class AndroidNotificationTray
context.getString(R.string.no),
pendingIntents.removeRepetition(habit))
+ val enterAction = Action(R.drawable.ic_action_check,
+ context.getString(R.string.enter),
+ pendingIntents.setNumericalValue(context, habit, 0, null))
+
val wearableBg = decodeResource(context.resources, R.drawable.stripe)
// Even though the set of actions is the same on the phone and
// on the watch, Pebble requires us to add them to the
// WearableExtender.
- val wearableExtender = WearableExtender()
- .setBackground(wearableBg)
- .addAction(addRepetitionAction)
- .addAction(removeRepetitionAction)
+ val wearableExtender = WearableExtender().setBackground(wearableBg)
val defaultText = context.getString(R.string.default_reminder_question)
val builder = Builder(context, REMINDERS_CHANNEL_ID)
.setSmallIcon(R.drawable.ic_notification)
.setContentTitle(habit.name)
- .setContentText(if(habit.question.isBlank()) defaultText else habit.question)
+ .setContentText(if (habit.question.isBlank()) defaultText else habit.question)
.setContentIntent(pendingIntents.showHabit(habit))
.setDeleteIntent(pendingIntents.dismissNotification(habit))
- .addAction(addRepetitionAction)
- .addAction(removeRepetitionAction)
.setSound(null)
.setWhen(reminderTime)
.setShowWhen(true)
.setOngoing(preferences.shouldMakeNotificationsSticky())
+ if (habit.isNumerical) {
+ wearableExtender.addAction(enterAction)
+ builder.addAction(enterAction)
+ } else {
+ wearableExtender
+ .addAction(addRepetitionAction)
+ .addAction(removeRepetitionAction)
+ builder
+ .addAction(addRepetitionAction)
+ .addAction(removeRepetitionAction)
+ }
+
if (!disableSound)
builder.setSound(ringtoneManager.getURI())
@@ -126,8 +137,8 @@ class AndroidNotificationTray
builder.setLights(Color.RED, 1000, 1000)
val snoozeAction = Action(R.drawable.ic_action_snooze,
- context.getString(R.string.snooze),
- pendingIntents.snoozeNotification(habit))
+ context.getString(R.string.snooze),
+ pendingIntents.snoozeNotification(habit))
wearableExtender.addAction(snoozeAction)
builder.addAction(snoozeAction)
@@ -142,8 +153,8 @@ class AndroidNotificationTray
as NotificationManager
if (SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(REMINDERS_CHANNEL_ID,
- context.resources.getString(R.string.reminder),
- NotificationManager.IMPORTANCE_DEFAULT)
+ context.resources.getString(R.string.reminder),
+ NotificationManager.IMPORTANCE_DEFAULT)
notificationManager.createNotificationChannel(channel)
}
}
diff --git a/android/uhabits-android/src/main/res/values/strings.xml b/android/uhabits-android/src/main/res/values/strings.xml
index 5cd4e7300..d6151882c 100644
--- a/android/uhabits-android/src/main/res/values/strings.xml
+++ b/android/uhabits-android/src/main/res/values/strings.xml
@@ -194,4 +194,5 @@
Every month
Cannot be blank
Today
+ Enter
\ No newline at end of file