From 25c7459464b7c554a3046d5023378a608027a0a6 Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Fri, 21 Apr 2017 23:04:54 -0700 Subject: [PATCH] Add support for notification priority preference Fixes #6315 // FREEBIE --- res/values/arrays.xml | 12 ++++++++++++ res/values/strings.xml | 7 ++++++- res/xml/preferences_notifications.xml | 8 ++++++++ .../MultipleRecipientNotificationBuilder.java | 3 ++- .../SingleRecipientNotificationBuilder.java | 3 ++- .../preferences/NotificationsPreferenceFragment.java | 3 +++ .../securesms/util/TextSecurePreferences.java | 6 ++++++ 7 files changed, 39 insertions(+), 3 deletions(-) diff --git a/res/values/arrays.xml b/res/values/arrays.xml index 89fac9fae6..215a8f2fb0 100644 --- a/res/values/arrays.xml +++ b/res/values/arrays.xml @@ -291,4 +291,16 @@ 30 + + @string/arrays__default + @string/arrays__high + @string/arrays__max + + + + 0 + 1 + 2 + + diff --git a/res/values/strings.xml b/res/values/strings.xml index 03fbc6b51e..e941b59cc7 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -1080,6 +1080,10 @@ Large Extra large + Default + High + Max + %d hour @@ -1205,7 +1209,8 @@ Display invitation prompts for contacts without Signal Message font size Contact joined Signal - + Priority + diff --git a/res/xml/preferences_notifications.xml b/res/xml/preferences_notifications.xml index 8a5c36a72e..33671270b1 100644 --- a/res/xml/preferences_notifications.xml +++ b/res/xml/preferences_notifications.xml @@ -59,6 +59,14 @@ android:defaultValue="all" android:entries="@array/pref_notification_privacy_entries" android:entryValues="@array/pref_notification_privacy_values"/> + + diff --git a/src/org/thoughtcrime/securesms/notifications/MultipleRecipientNotificationBuilder.java b/src/org/thoughtcrime/securesms/notifications/MultipleRecipientNotificationBuilder.java index d2802ce789..d0e4adce4c 100644 --- a/src/org/thoughtcrime/securesms/notifications/MultipleRecipientNotificationBuilder.java +++ b/src/org/thoughtcrime/securesms/notifications/MultipleRecipientNotificationBuilder.java @@ -12,6 +12,7 @@ import org.thoughtcrime.securesms.ConversationListActivity; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.preferences.NotificationPrivacyPreference; import org.thoughtcrime.securesms.recipients.Recipient; +import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import java.util.LinkedList; @@ -29,7 +30,7 @@ public class MultipleRecipientNotificationBuilder extends AbstractNotificationBu setContentTitle(context.getString(R.string.app_name)); setContentIntent(PendingIntent.getActivity(context, 0, new Intent(context, ConversationListActivity.class), 0)); setCategory(NotificationCompat.CATEGORY_MESSAGE); - setPriority(NotificationCompat.PRIORITY_HIGH); + setPriority(TextSecurePreferences.getNotificationPriority(context)); setGroupSummary(true); } diff --git a/src/org/thoughtcrime/securesms/notifications/SingleRecipientNotificationBuilder.java b/src/org/thoughtcrime/securesms/notifications/SingleRecipientNotificationBuilder.java index d14c619ace..e76931db15 100644 --- a/src/org/thoughtcrime/securesms/notifications/SingleRecipientNotificationBuilder.java +++ b/src/org/thoughtcrime/securesms/notifications/SingleRecipientNotificationBuilder.java @@ -27,6 +27,7 @@ import org.thoughtcrime.securesms.preferences.NotificationPrivacyPreference; import org.thoughtcrime.securesms.recipients.Recipient; import org.thoughtcrime.securesms.recipients.Recipients; import org.thoughtcrime.securesms.util.BitmapUtil; +import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; import java.util.LinkedList; @@ -51,7 +52,7 @@ public class SingleRecipientNotificationBuilder extends AbstractNotificationBuil setSmallIcon(R.drawable.icon_notification); setColor(context.getResources().getColor(R.color.textsecure_primary)); - setPriority(NotificationCompat.PRIORITY_HIGH); + setPriority(TextSecurePreferences.getNotificationPriority(context)); setCategory(NotificationCompat.CATEGORY_MESSAGE); } diff --git a/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java b/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java index 47dcdf32a0..45067ee796 100644 --- a/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java +++ b/src/org/thoughtcrime/securesms/preferences/NotificationsPreferenceFragment.java @@ -39,11 +39,14 @@ public class NotificationsPreferenceFragment extends ListSummaryPreferenceFragme .setOnPreferenceChangeListener(new ListSummaryListener()); this.findPreference(TextSecurePreferences.NOTIFICATION_PRIVACY_PREF) .setOnPreferenceChangeListener(new NotificationPrivacyListener()); + this.findPreference(TextSecurePreferences.NOTIFICATION_PRIORITY_PREF) + .setOnPreferenceChangeListener(new ListSummaryListener()); initializeListSummary((ListPreference) findPreference(TextSecurePreferences.LED_COLOR_PREF)); initializeListSummary((ListPreference) findPreference(TextSecurePreferences.LED_BLINK_PREF)); initializeListSummary((ListPreference) findPreference(TextSecurePreferences.REPEAT_ALERTS_PREF)); initializeListSummary((ListPreference) findPreference(TextSecurePreferences.NOTIFICATION_PRIVACY_PREF)); + initializeListSummary((ListPreference) findPreference(TextSecurePreferences.NOTIFICATION_PRIORITY_PREF)); initializeRingtoneSummary((RingtonePreference) findPreference(TextSecurePreferences.RINGTONE_PREF)); } diff --git a/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java b/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java index 90f36fd527..fb341eee74 100644 --- a/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java +++ b/src/org/thoughtcrime/securesms/util/TextSecurePreferences.java @@ -8,6 +8,7 @@ import android.preference.PreferenceManager; import android.provider.Settings; import android.support.annotation.ArrayRes; import android.support.annotation.NonNull; +import android.support.v4.app.NotificationCompat; import android.util.Log; import com.h6ah4i.android.compat.content.SharedPreferenceCompat; @@ -97,6 +98,7 @@ public class TextSecurePreferences { public static final String REPEAT_ALERTS_PREF = "pref_repeat_alerts"; public static final String NOTIFICATION_PRIVACY_PREF = "pref_notification_privacy"; + public static final String NOTIFICATION_PRIORITY_PREF = "pref_notification_priority"; public static final String NEW_CONTACTS_NOTIFICATIONS = "pref_enable_new_contacts_notifications"; public static final String WEBRTC_CALLING_PREF = "pref_webrtc_calling"; @@ -109,6 +111,10 @@ public class TextSecurePreferences { public static final String DIRECT_CAPTURE_CAMERA_ID = "pref_direct_capture_camera_id"; private static final String ALWAYS_RELAY_CALLS_PREF = "pref_turn_only"; + public static int getNotificationPriority(Context context) { + return Integer.valueOf(getStringPreference(context, NOTIFICATION_PRIORITY_PREF, String.valueOf(NotificationCompat.PRIORITY_HIGH))); + } + public static int getMessageBodyTextSize(Context context) { return Integer.valueOf(getStringPreference(context, MESSAGE_BODY_TEXT_SIZE_PREF, "16")); }