diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index 9ec68b2a83..579075ee3b 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1838,7 +1838,6 @@ class Core { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); boolean flags = prefs.getBoolean("flags", true); - boolean notify_group = (prefs.getBoolean("notify_group", true) && canGroup); boolean notify_preview = prefs.getBoolean("notify_preview", true); boolean notify_trash = prefs.getBoolean("notify_trash", true); boolean notify_archive = prefs.getBoolean("notify_archive", true); @@ -1851,60 +1850,58 @@ class Core { for (TupleMessageEx message : messages) messageContact.put(message, ContactInfo.get(context, message.from, false)); - if (notify_group) { - // Build pending intents - Intent summary = new Intent(context, ActivityView.class).setAction("unified"); - PendingIntent piSummary = PendingIntent.getActivity(context, ActivityView.REQUEST_UNIFIED, summary, PendingIntent.FLAG_UPDATE_CURRENT); + // Build pending intents + Intent summary = new Intent(context, ActivityView.class).setAction("unified"); + PendingIntent piSummary = PendingIntent.getActivity(context, ActivityView.REQUEST_UNIFIED, summary, PendingIntent.FLAG_UPDATE_CURRENT); - Intent clear = new Intent(context, ServiceUI.class).setAction("clear"); - PendingIntent piClear = PendingIntent.getService(context, ServiceUI.PI_CLEAR, clear, PendingIntent.FLAG_UPDATE_CURRENT); + Intent clear = new Intent(context, ServiceUI.class).setAction("clear"); + PendingIntent piClear = PendingIntent.getService(context, ServiceUI.PI_CLEAR, clear, PendingIntent.FLAG_UPDATE_CURRENT); - // Build title - String title = context.getResources().getQuantityString( - R.plurals.title_notification_unseen, messages.size(), messages.size()); + // Build title + String title = context.getResources().getQuantityString( + R.plurals.title_notification_unseen, messages.size(), messages.size()); - // Build notification - NotificationCompat.Builder builder = - new NotificationCompat.Builder(context, "notification") - .setSmallIcon(R.drawable.baseline_email_white_24) - .setContentTitle(title) - .setContentIntent(piSummary) - .setNumber(messages.size()) - .setShowWhen(false) - .setDeleteIntent(piClear) - .setPriority(NotificationCompat.PRIORITY_DEFAULT) - .setCategory(NotificationCompat.CATEGORY_STATUS) - .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) - .setGroup(group) - .setGroupSummary(true); - - Notification pub = builder.build(); - builder - .setVisibility(NotificationCompat.VISIBILITY_PRIVATE) - .setPublicVersion(pub); - - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { - setNotificationSoundAndLight(context, builder); - builder.setOnlyAlertOnce(true); - } else - builder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN); - - DateFormat df = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT); - StringBuilder sb = new StringBuilder(); - for (EntityMessage message : messages) { - sb.append("").append(messageContact.get(message).getDisplayName(true)).append(""); - if (!TextUtils.isEmpty(message.subject)) - sb.append(": ").append(message.subject); - sb.append(" ").append(df.format(message.received)); - sb.append("
"); - } + // Build notification + NotificationCompat.Builder builder = + new NotificationCompat.Builder(context, "notification") + .setSmallIcon(R.drawable.baseline_email_white_24) + .setContentTitle(title) + .setContentIntent(piSummary) + .setNumber(messages.size()) + .setShowWhen(false) + .setDeleteIntent(piClear) + .setPriority(NotificationCompat.PRIORITY_DEFAULT) + .setCategory(NotificationCompat.CATEGORY_STATUS) + .setVisibility(NotificationCompat.VISIBILITY_PUBLIC) + .setGroup(group) + .setGroupSummary(true); + + Notification pub = builder.build(); + builder + .setVisibility(NotificationCompat.VISIBILITY_PRIVATE) + .setPublicVersion(pub); + + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + setNotificationSoundAndLight(context, builder); + builder.setOnlyAlertOnce(true); + } else + builder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN); + + DateFormat df = SimpleDateFormat.getDateTimeInstance(SimpleDateFormat.SHORT, SimpleDateFormat.SHORT); + StringBuilder sb = new StringBuilder(); + for (EntityMessage message : messages) { + sb.append("").append(messageContact.get(message).getDisplayName(true)).append(""); + if (!TextUtils.isEmpty(message.subject)) + sb.append(": ").append(message.subject); + sb.append(" ").append(df.format(message.received)); + sb.append("
"); + } - builder.setStyle(new NotificationCompat.BigTextStyle() - .bigText(HtmlHelper.fromHtml(sb.toString())) - .setSummaryText(title)); + builder.setStyle(new NotificationCompat.BigTextStyle() + .bigText(HtmlHelper.fromHtml(sb.toString())) + .setSummaryText(title)); - notifications.add(builder.build()); - } + notifications.add(builder.build()); // Message notifications for (TupleMessageEx message : messages) { @@ -1965,8 +1962,7 @@ class Core { .setVisibility(NotificationCompat.VISIBILITY_PRIVATE) .setOnlyAlertOnce(true); - if (notify_group) - mbuilder.setGroup(group).setGroupSummary(false); + mbuilder.setGroup(group).setGroupSummary(false); if (notify_trash) { Intent trash = new Intent(context, ServiceUI.class) @@ -2065,15 +2061,10 @@ class Core { mbuilder.setColorized(true); } - if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { - if (notify_group) - mbuilder.setSound(null); - else - setNotificationSoundAndLight(context, mbuilder); - } else { - if (notify_group) - mbuilder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN); - } + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) + mbuilder.setSound(null); + else + mbuilder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN); notifications.add(mbuilder.build()); } diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java index e1334888d8..47a778d32f 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsNotifications.java @@ -49,7 +49,6 @@ import androidx.preference.PreferenceManager; import static android.app.Activity.RESULT_OK; public class FragmentOptionsNotifications extends FragmentBase implements SharedPreferences.OnSharedPreferenceChangeListener { - private SwitchCompat swNotifyGroup; private SwitchCompat swNotifyPreview; private CheckBox cbNotifyActionTrash; private CheckBox cbNotifyActionArchive; @@ -64,7 +63,7 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared private Group grpNotification; private final static String[] RESET_OPTIONS = new String[]{ - "notify_group", "notify_preview", "notify_trash", "notify_archive", "notify_reply", "notify_flag", "notify_seen", "light", "sound" + "notify_preview", "notify_trash", "notify_archive", "notify_reply", "notify_flag", "notify_seen", "light", "sound" }; @Override @@ -77,7 +76,6 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared // Get controls - swNotifyGroup = view.findViewById(R.id.swNotifyGroup); swNotifyPreview = view.findViewById(R.id.swNotifyPreview); cbNotifyActionTrash = view.findViewById(R.id.cbNotifyActionTrash); cbNotifyActionArchive = view.findViewById(R.id.cbNotifyActionArchive); @@ -98,13 +96,6 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared PackageManager pm = getContext().getPackageManager(); final SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - swNotifyGroup.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { - @Override - public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { - prefs.edit().putBoolean("notify_group", checked).apply(); - } - }); - swNotifyPreview.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton compoundButton, boolean checked) { @@ -233,8 +224,6 @@ public class FragmentOptionsNotifications extends FragmentBase implements Shared boolean pro = Helper.isPro(getContext()); SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - swNotifyGroup.setChecked(prefs.getBoolean("notify_group", true)); - swNotifyGroup.setVisibility(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N ? View.VISIBLE : View.GONE); swNotifyPreview.setChecked(prefs.getBoolean("notify_preview", true)); cbNotifyActionTrash.setChecked(prefs.getBoolean("notify_trash", true)); diff --git a/app/src/main/res/layout/fragment_options_notifications.xml b/app/src/main/res/layout/fragment_options_notifications.xml index e457ae7082..d5bfdf68eb 100644 --- a/app/src/main/res/layout/fragment_options_notifications.xml +++ b/app/src/main/res/layout/fragment_options_notifications.xml @@ -18,23 +18,13 @@ android:layout_height="wrap_content" android:padding="12dp"> - - Automatically mark messages read on moving messages Confirm moving messages - Group new message notifications Show message preview in notifications Notification actions Trash