use non-custom missed called

Daniel Gultsch created

Change summary

art/ic_missed_call_notification.svg                                    | 344 
src/main/java/eu/siacs/conversations/services/NotificationService.java |  82 
src/main/res/drawable-hdpi/ic_missed_call_notification.png             |   0 
src/main/res/drawable-mdpi/ic_missed_call_notification.png             |   0 
src/main/res/drawable-xhdpi/ic_missed_call_notification.png            |   0 
src/main/res/drawable-xxhdpi/ic_missed_call_notification.png           |   0 
src/main/res/drawable-xxxhdpi/ic_missed_call_notification.png          |   0 
src/main/res/drawable/ic_call_missed_white_24db.xml                    |   5 
8 files changed, 43 insertions(+), 388 deletions(-)

Detailed changes

art/ic_missed_call_notification.svg 🔗

@@ -1,344 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="512"
-   height="512"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.92.3 (2405546, 2018-03-11)"
-   sodipodi:docname="ic_missed_call_notification.svg"
-   inkscape:export-filename="/home/diesys/diesys/grafica/conversation/conversation_bubble.png"
-   inkscape:export-xdpi="100"
-   inkscape:export-ydpi="100">
-  <defs
-     id="defs4">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3874">
-      <stop
-         style="stop-color:#00a000;stop-opacity:1;"
-         offset="0"
-         id="stop3876" />
-      <stop
-         style="stop-color:#00a000;stop-opacity:0;"
-         offset="1"
-         id="stop3878" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3913">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop3915" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3917" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient3818">
-      <stop
-         style="stop-color:#669900;stop-opacity:1"
-         offset="0"
-         id="stop3820" />
-      <stop
-         style="stop-color:#99cc00;stop-opacity:1"
-         offset="1"
-         id="stop3822" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3818"
-       id="radialGradient3824"
-       cx="212.07048"
-       cy="1045.9178"
-       fx="212.07048"
-       fy="1045.9178"
-       r="238.57143"
-       gradientTransform="matrix(1.9491621,-0.90817722,0.65829208,1.4128498,-879.63121,-248.98648)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3913"
-       id="radialGradient3919"
-       cx="362.98563"
-       cy="379.77524"
-       fx="362.98563"
-       fy="379.77524"
-       r="139.95312"
-       gradientTransform="matrix(1.3800477,1.0445431,-1.3325077,1.7605059,339.09383,-577.83938)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       gradientUnits="userSpaceOnUse"
-       y2="-155.75885"
-       x2="114.59022"
-       y1="35.545681"
-       x1="114.55434"
-       id="linearGradient3794"
-       xlink:href="#linearGradient3788"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient3788">
-      <stop
-         id="stop3790"
-         offset="0"
-         style="stop-color:#1eed00;stop-opacity:1;" />
-      <stop
-         id="stop3792"
-         offset="1"
-         style="stop-color:#abff28;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3821">
-      <stop
-         style="stop-color:#ff283d;stop-opacity:1;"
-         offset="0"
-         id="stop3823" />
-      <stop
-         style="stop-color:#ff28ae;stop-opacity:1;"
-         offset="1"
-         id="stop3825" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4543">
-      <stop
-         style="stop-color:#2e45bf;stop-opacity:1;"
-         offset="0"
-         id="stop4545" />
-      <stop
-         style="stop-color:#28a7ff;stop-opacity:1;"
-         offset="1"
-         id="stop4547" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4098">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop4100" />
-      <stop
-         style="stop-color:#e6e6e6;stop-opacity:1"
-         offset="1"
-         id="stop4102" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4098"
-       id="linearGradient3833"
-       x1="273.81851"
-       y1="764.74677"
-       x2="304.14023"
-       y2="936.47272"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4098"
-       id="linearGradient3853"
-       gradientUnits="userSpaceOnUse"
-       x1="273.81851"
-       y1="764.74677"
-       x2="304.14023"
-       y2="936.47272" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3818"
-       id="radialGradient3863"
-       cx="262.33273"
-       cy="945.23846"
-       fx="262.33273"
-       fy="945.23846"
-       r="185.49754"
-       gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,170.11831)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3818"
-       id="radialGradient3866"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,170.11831)"
-       cx="262.33273"
-       cy="945.23846"
-       fx="262.33273"
-       fy="945.23846"
-       r="185.49754" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3913"
-       id="radialGradient3873"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.3800477,1.0445431,-1.3325077,1.7605059,339.09383,-577.83938)"
-       cx="321.75275"
-       cy="386.38751"
-       fx="321.75275"
-       fy="386.38751"
-       r="139.95312" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3818"
-       id="radialGradient3880"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.2253203,-0.54206726,0.43090148,0.97403458,-466.4135,-370.24387)"
-       cx="262.33273"
-       cy="945.23846"
-       fx="262.33273"
-       fy="945.23846"
-       r="185.49754" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3913"
-       id="radialGradient3883"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.4430075,-0.63865195,0.50745433,1.1475866,-594.40824,44.803037)"
-       cx="262.33273"
-       cy="945.23846"
-       fx="262.33273"
-       fy="945.23846"
-       r="185.49754" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3874"
-       id="radialGradient3881"
-       cx="150.35715"
-       cy="236.28571"
-       fx="150.35715"
-       fy="236.28571"
-       r="26.887305"
-       gradientTransform="matrix(1,0,0,0.98671703,0,3.1385771)"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4142136"
-     inkscape:cx="260.34974"
-     inkscape:cy="246.85245"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="956"
-     inkscape:window-height="1039"
-     inkscape:window-x="960"
-     inkscape:window-y="18"
-     inkscape:window-maximized="0"
-     showguides="false"
-     inkscape:guide-bbox="true"
-     inkscape:snap-to-guides="true"
-     inkscape:snap-grids="false"
-     inkscape:object-paths="true"
-     inkscape:object-nodes="false"
-     inkscape:snap-nodes="false"
-     inkscape:pagecheckerboard="true">
-    <sodipodi:guide
-       orientation="1,0"
-       position="0,534.28571"
-       id="guide3004"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="394.28571,511.42857"
-       id="guide3006"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="511.42857,320"
-       id="guide3008"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="401.42857,0"
-       id="guide3010"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="17.142857,258.57143"
-       id="guide3012"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="327.14286,494.28571"
-       id="guide3014"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="324.28571,17.142857"
-       id="guide3016"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="494.28571,237.14286"
-       id="guide3018"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="255.71429,302.85714"
-       id="guide3022"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="1,0"
-       position="660,-315"
-       id="guide3904"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="554.28571,475.71429"
-       id="guide3931"
-       inkscape:locked="false" />
-    <sodipodi:guide
-       orientation="0,1"
-       position="581.42857,244.28571"
-       id="guide3933"
-       inkscape:locked="false" />
-  </sodipodi:namedview>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-540.36218)"
-     style="display:inline">
-    <path
-       style="fill:#ffffff;fill-opacity:1;stroke:none"
-       d="m 253.21875,17.71875 c -127.0747,0 -230.75,101.16492 -230.75,226.03125 0,124.86632 103.66932,226.09375 230.75,226.09375 39.52056,0 69.99755,-8.10776 104.78125,-20.75 L 468.46875,493.625 c 11.02016,4.46685 22.45453,-5.45389 19.59375,-17 L 458.125,355.65625 C 477.35631,321.88611 483.9375,283.41561 483.9375,243.75 483.9375,118.88673 380.29349,17.71875 253.21875,17.71875 Z m 127.29102,163.70508 23.93164,23.93164 -141.7461,141.74609 -107.1914,-107.1914 v 72.28125 H 121.6582 v -130.0586 h 130.06055 v 33.84375 h -72.2832 l 83.25976,83.26172 z"
-       transform="translate(0,540.36218)"
-       id="path3868"
-       inkscape:connector-curvature="0"
-       sodipodi:nodetypes="sssccccsscccccccccccc" />
-    <path
-       sodipodi:nodetypes="ccsssscc"
-       inkscape:connector-curvature="0"
-       id="path3845"
-       d="M 478.64112,1025.218 447.36049,898.60749 c 19.89028,-31.99834 26.74288,-69.57172 26.74288,-109.76189 0,-116.81686 -96.79943,-211.48385 -216.18374,-211.48385 -119.38425,0 -216.183656,94.66699 -216.183656,211.48385 0,116.81685 96.799406,211.5536 216.183656,211.5536 39.63617,0 68.58847,-8.14219 105.19417,-21.76075 z"
-       style="opacity:0;fill:none;stroke:#000000;stroke-width:23.55835724;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:94.23343197, 94.23343197;stroke-dashoffset:0" />
-  </g>
-  <g
-     inkscape:groupmode="layer"
-     id="layer4"
-     inkscape:label="Dots" />
-</svg>

src/main/java/eu/siacs/conversations/services/NotificationService.java 🔗

@@ -36,6 +36,7 @@ import androidx.core.app.RemoteInput;
 import androidx.core.content.ContextCompat;
 import androidx.core.graphics.drawable.IconCompat;
 
+import com.google.common.base.Joiner;
 import com.google.common.base.Strings;
 import com.google.common.collect.Iterables;
 
@@ -973,19 +974,15 @@ public class NotificationService {
         final Builder builder =
                 new NotificationCompat.Builder(mXmppConnectionService, "missed_calls");
         int totalCalls = 0;
-        final StringBuilder names = new StringBuilder();
+        final List<String> names = new ArrayList<>();
         long lastTime = 0;
-        for (Map.Entry<Conversational, MissedCallsInfo> entry : mMissedCalls.entrySet()) {
+        for (final Map.Entry<Conversational, MissedCallsInfo> entry : mMissedCalls.entrySet()) {
             final Conversational conversation = entry.getKey();
             final MissedCallsInfo missedCallsInfo = entry.getValue();
-            names.append(conversation.getContact().getDisplayName());
-            names.append(", ");
+            names.add(conversation.getContact().getDisplayName());
             totalCalls += missedCallsInfo.getNumberOfCalls();
             lastTime = Math.max(lastTime, missedCallsInfo.getLastTime());
         }
-        if (names.length() >= 2) {
-            names.delete(names.length() - 2, names.length());
-        }
         final String title =
                 (totalCalls == 1)
                         ? mXmppConnectionService.getString(R.string.missed_call)
@@ -999,9 +996,9 @@ public class NotificationService {
         builder.setContentTitle(title);
         builder.setTicker(title);
         if (!publicVersion) {
-            builder.setContentText(names.toString());
+            builder.setContentText(Joiner.on(", ").join(names));
         }
-        builder.setSmallIcon(R.drawable.ic_missed_call_notification);
+        builder.setSmallIcon(R.drawable.ic_call_missed_white_24db);
         builder.setGroupSummary(true);
         builder.setGroup(MISSED_CALLS_GROUP);
         builder.setGroupAlertBehavior(NotificationCompat.GROUP_ALERT_CHILDREN);
@@ -1047,7 +1044,7 @@ public class NotificationService {
             }
             builder.setContentText(name);
         }
-        builder.setSmallIcon(R.drawable.ic_missed_call_notification);
+        builder.setSmallIcon(R.drawable.ic_call_missed_white_24db);
         builder.setGroup(MISSED_CALLS_GROUP);
         builder.setCategory(NotificationCompat.CATEGORY_CALL);
         builder.setWhen(info.getLastTime());
@@ -1091,42 +1088,39 @@ public class NotificationService {
                                 R.plurals.x_unread_conversations,
                                 notifications.size(),
                                 notifications.size()));
-        final StringBuilder names = new StringBuilder();
+        final List<String> names = new ArrayList<>();
         Conversation conversation = null;
         for (final ArrayList<Message> messages : notifications.values()) {
-            if (messages.size() > 0) {
-                conversation = (Conversation) messages.get(0).getConversation();
-                final String name = conversation.getName().toString();
-                SpannableString styledString;
-                if (Config.HIDE_MESSAGE_TEXT_IN_NOTIFICATION) {
-                    int count = messages.size();
-                    styledString =
-                            new SpannableString(
-                                    name
-                                            + ": "
-                                            + mXmppConnectionService
-                                                    .getResources()
-                                                    .getQuantityString(
-                                                            R.plurals.x_messages, count, count));
-                    styledString.setSpan(new StyleSpan(Typeface.BOLD), 0, name.length(), 0);
-                    style.addLine(styledString);
-                } else {
-                    styledString =
-                            new SpannableString(
-                                    name
-                                            + ": "
-                                            + UIHelper.getMessagePreview(
-                                                            mXmppConnectionService, messages.get(0))
-                                                    .first);
-                    styledString.setSpan(new StyleSpan(Typeface.BOLD), 0, name.length(), 0);
-                    style.addLine(styledString);
-                }
-                names.append(name);
-                names.append(", ");
+            if (messages.isEmpty()) {
+                continue;
             }
-        }
-        if (names.length() >= 2) {
-            names.delete(names.length() - 2, names.length());
+            conversation = (Conversation) messages.get(0).getConversation();
+            final String name = conversation.getName().toString();
+            SpannableString styledString;
+            if (Config.HIDE_MESSAGE_TEXT_IN_NOTIFICATION) {
+                int count = messages.size();
+                styledString =
+                        new SpannableString(
+                                name
+                                        + ": "
+                                        + mXmppConnectionService
+                                                .getResources()
+                                                .getQuantityString(
+                                                        R.plurals.x_messages, count, count));
+                styledString.setSpan(new StyleSpan(Typeface.BOLD), 0, name.length(), 0);
+                style.addLine(styledString);
+            } else {
+                styledString =
+                        new SpannableString(
+                                name
+                                        + ": "
+                                        + UIHelper.getMessagePreview(
+                                                        mXmppConnectionService, messages.get(0))
+                                                .first);
+                styledString.setSpan(new StyleSpan(Typeface.BOLD), 0, name.length(), 0);
+                style.addLine(styledString);
+            }
+            names.add(name);
         }
         final String contentTitle =
                 mXmppConnectionService
@@ -1137,7 +1131,7 @@ public class NotificationService {
                                 notifications.size());
         mBuilder.setContentTitle(contentTitle);
         mBuilder.setTicker(contentTitle);
-        mBuilder.setContentText(names.toString());
+        mBuilder.setContentText(Joiner.on(", ").join(names));
         mBuilder.setStyle(style);
         if (conversation != null) {
             mBuilder.setContentIntent(createContentIntent(conversation));

src/main/res/drawable/ic_call_missed_white_24db.xml 🔗

@@ -0,0 +1,5 @@
+<vector android:autoMirrored="true" android:height="24dp"
+    android:tint="#FFFFFF" android:viewportHeight="24"
+    android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M19.59,7L12,14.59 6.41,9H11V7H3v8h2v-4.59l7,7 9,-9z"/>
+</vector>