From 53fea9e1fe25a1f0f2a7fe219195b0009ecb4f5b Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 2 May 2015 11:38:56 +0200 Subject: [PATCH 01/58] replace send button with quick action button as long as no text has been entered --- art/ic_received_indicator.svg | 16 +- art/ic_send_location_away.svg | 54 ++ art/ic_send_location_dnd.svg | 54 ++ art/ic_send_location_offline.svg | 54 ++ art/ic_send_location_online.svg | 54 ++ art/ic_send_photo_away.svg | 60 ++ art/ic_send_photo_dnd.svg | 60 ++ art/ic_send_photo_offline.svg | 60 ++ art/ic_send_photo_online.svg | 60 ++ art/ic_send_text_away.svg | 69 ++ art/ic_send_text_dnd.svg | 69 ++ art/ic_send_text_offline.svg | 69 ++ ...n_send_now.svg => ic_send_text_online.svg} | 22 +- art/ic_send_voice_away.svg | 54 ++ art/ic_send_voice_dnd.svg | 54 ++ art/ic_send_voice_offline.svg | 54 ++ art/ic_send_voice_online.svg | 54 ++ art/render.rb | 16 + .../ui/ConversationActivity.java | 23 +- .../ui/ConversationFragment.java | 285 +++--- .../drawable-hdpi/ic_action_send_now_away.png | Bin 932 -> 0 bytes .../drawable-hdpi/ic_action_send_now_dnd.png | Bin 1135 -> 0 bytes .../ic_action_send_now_offline.png | Bin 767 -> 0 bytes .../ic_action_send_now_online.png | Bin 1095 -> 0 bytes src/main/res/drawable-hdpi/ic_launcher.png | Bin 4497 -> 4486 bytes .../res/drawable-hdpi/ic_notification.png | Bin 806 -> 798 bytes .../drawable-hdpi/ic_received_indicator.png | Bin 686 -> 560 bytes .../drawable-hdpi/ic_send_location_away.png | Bin 0 -> 1159 bytes .../drawable-hdpi/ic_send_location_dnd.png | Bin 0 -> 1333 bytes .../ic_send_location_offline.png | Bin 0 -> 971 bytes .../drawable-hdpi/ic_send_location_online.png | Bin 0 -> 1341 bytes .../res/drawable-hdpi/ic_send_photo_away.png | Bin 0 -> 1203 bytes .../res/drawable-hdpi/ic_send_photo_dnd.png | Bin 0 -> 1381 bytes .../drawable-hdpi/ic_send_photo_offline.png | Bin 0 -> 987 bytes .../drawable-hdpi/ic_send_photo_online.png | Bin 0 -> 1400 bytes .../res/drawable-hdpi/ic_send_text_away.png | Bin 0 -> 982 bytes .../res/drawable-hdpi/ic_send_text_dnd.png | Bin 0 -> 1126 bytes .../drawable-hdpi/ic_send_text_offline.png | Bin 0 -> 800 bytes .../res/drawable-hdpi/ic_send_text_online.png | Bin 0 -> 1143 bytes .../res/drawable-hdpi/ic_send_voice_away.png | Bin 0 -> 1017 bytes .../res/drawable-hdpi/ic_send_voice_dnd.png | Bin 0 -> 1149 bytes .../drawable-hdpi/ic_send_voice_offline.png | Bin 0 -> 844 bytes .../drawable-hdpi/ic_send_voice_online.png | Bin 0 -> 1162 bytes .../drawable-mdpi/ic_action_send_now_away.png | Bin 650 -> 0 bytes .../drawable-mdpi/ic_action_send_now_dnd.png | Bin 784 -> 0 bytes .../ic_action_send_now_offline.png | Bin 535 -> 0 bytes .../ic_action_send_now_online.png | Bin 779 -> 0 bytes src/main/res/drawable-mdpi/ic_launcher.png | Bin 2741 -> 2762 bytes .../res/drawable-mdpi/ic_notification.png | Bin 553 -> 554 bytes .../drawable-mdpi/ic_received_indicator.png | Bin 447 -> 402 bytes .../drawable-mdpi/ic_send_location_away.png | Bin 0 -> 784 bytes .../drawable-mdpi/ic_send_location_dnd.png | Bin 0 -> 908 bytes .../ic_send_location_offline.png | Bin 0 -> 673 bytes .../drawable-mdpi/ic_send_location_online.png | Bin 0 -> 919 bytes .../res/drawable-mdpi/ic_send_photo_away.png | Bin 0 -> 776 bytes .../res/drawable-mdpi/ic_send_photo_dnd.png | Bin 0 -> 909 bytes .../drawable-mdpi/ic_send_photo_offline.png | Bin 0 -> 666 bytes .../drawable-mdpi/ic_send_photo_online.png | Bin 0 -> 938 bytes .../res/drawable-mdpi/ic_send_text_away.png | Bin 0 -> 677 bytes .../res/drawable-mdpi/ic_send_text_dnd.png | Bin 0 -> 769 bytes .../drawable-mdpi/ic_send_text_offline.png | Bin 0 -> 542 bytes .../res/drawable-mdpi/ic_send_text_online.png | Bin 0 -> 793 bytes .../res/drawable-mdpi/ic_send_voice_away.png | Bin 0 -> 679 bytes .../res/drawable-mdpi/ic_send_voice_dnd.png | Bin 0 -> 774 bytes .../drawable-mdpi/ic_send_voice_offline.png | Bin 0 -> 575 bytes .../drawable-mdpi/ic_send_voice_online.png | Bin 0 -> 788 bytes .../ic_action_send_now_away.png | Bin 1180 -> 0 bytes .../drawable-xhdpi/ic_action_send_now_dnd.png | Bin 1438 -> 0 bytes .../ic_action_send_now_offline.png | Bin 968 -> 0 bytes .../ic_action_send_now_online.png | Bin 1395 -> 0 bytes src/main/res/drawable-xhdpi/ic_launcher.png | Bin 6336 -> 6377 bytes .../res/drawable-xhdpi/ic_notification.png | Bin 1079 -> 1075 bytes .../drawable-xhdpi/ic_received_indicator.png | Bin 855 -> 717 bytes .../drawable-xhdpi/ic_send_location_away.png | Bin 0 -> 1507 bytes .../drawable-xhdpi/ic_send_location_dnd.png | Bin 0 -> 1721 bytes .../ic_send_location_offline.png | Bin 0 -> 1278 bytes .../ic_send_location_online.png | Bin 0 -> 1751 bytes .../res/drawable-xhdpi/ic_send_photo_away.png | Bin 0 -> 1516 bytes .../res/drawable-xhdpi/ic_send_photo_dnd.png | Bin 0 -> 1723 bytes .../drawable-xhdpi/ic_send_photo_offline.png | Bin 0 -> 1247 bytes .../drawable-xhdpi/ic_send_photo_online.png | Bin 0 -> 1755 bytes .../res/drawable-xhdpi/ic_send_text_away.png | Bin 0 -> 1270 bytes .../res/drawable-xhdpi/ic_send_text_dnd.png | Bin 0 -> 1395 bytes .../drawable-xhdpi/ic_send_text_offline.png | Bin 0 -> 1007 bytes .../drawable-xhdpi/ic_send_text_online.png | Bin 0 -> 1468 bytes .../res/drawable-xhdpi/ic_send_voice_away.png | Bin 0 -> 1257 bytes .../res/drawable-xhdpi/ic_send_voice_dnd.png | Bin 0 -> 1426 bytes .../drawable-xhdpi/ic_send_voice_offline.png | Bin 0 -> 1075 bytes .../drawable-xhdpi/ic_send_voice_online.png | Bin 0 -> 1433 bytes .../ic_action_send_now_away.png | Bin 1426 -> 0 bytes .../ic_action_send_now_dnd.png | Bin 1456 -> 0 bytes .../ic_action_send_now_offline.png | Bin 1433 -> 0 bytes .../ic_action_send_now_online.png | Bin 1458 -> 0 bytes src/main/res/drawable-xxhdpi/ic_launcher.png | Bin 10221 -> 10254 bytes .../res/drawable-xxhdpi/ic_notification.png | Bin 1573 -> 1618 bytes .../drawable-xxhdpi/ic_received_indicator.png | Bin 1236 -> 1016 bytes .../drawable-xxhdpi/ic_send_location_away.png | Bin 0 -> 2229 bytes .../drawable-xxhdpi/ic_send_location_dnd.png | Bin 0 -> 2578 bytes .../ic_send_location_offline.png | Bin 0 -> 1881 bytes .../ic_send_location_online.png | Bin 0 -> 2605 bytes .../drawable-xxhdpi/ic_send_photo_away.png | Bin 0 -> 2256 bytes .../res/drawable-xxhdpi/ic_send_photo_dnd.png | Bin 0 -> 2588 bytes .../drawable-xxhdpi/ic_send_photo_offline.png | Bin 0 -> 1802 bytes .../drawable-xxhdpi/ic_send_photo_online.png | Bin 0 -> 2571 bytes .../res/drawable-xxhdpi/ic_send_text_away.png | Bin 0 -> 1776 bytes .../res/drawable-xxhdpi/ic_send_text_dnd.png | Bin 0 -> 2004 bytes .../drawable-xxhdpi/ic_send_text_offline.png | Bin 0 -> 1410 bytes .../drawable-xxhdpi/ic_send_text_online.png | Bin 0 -> 2001 bytes .../drawable-xxhdpi/ic_send_voice_away.png | Bin 0 -> 1895 bytes .../res/drawable-xxhdpi/ic_send_voice_dnd.png | Bin 0 -> 2152 bytes .../drawable-xxhdpi/ic_send_voice_offline.png | Bin 0 -> 1621 bytes .../drawable-xxhdpi/ic_send_voice_online.png | Bin 0 -> 2183 bytes src/main/res/drawable-xxxhdpi/ic_launcher.png | Bin 14234 -> 14117 bytes .../res/drawable-xxxhdpi/ic_notification.png | Bin 2063 -> 2117 bytes .../ic_received_indicator.png | Bin 1608 -> 1303 bytes .../ic_send_location_away.png | Bin 0 -> 3015 bytes .../drawable-xxxhdpi/ic_send_location_dnd.png | Bin 0 -> 3456 bytes .../ic_send_location_offline.png | Bin 0 -> 2523 bytes .../ic_send_location_online.png | Bin 0 -> 3514 bytes .../drawable-xxxhdpi/ic_send_photo_away.png | Bin 0 -> 3040 bytes .../drawable-xxxhdpi/ic_send_photo_dnd.png | Bin 0 -> 3544 bytes .../ic_send_photo_offline.png | Bin 0 -> 2491 bytes .../drawable-xxxhdpi/ic_send_photo_online.png | Bin 0 -> 3566 bytes .../drawable-xxxhdpi/ic_send_text_away.png | Bin 0 -> 2311 bytes .../res/drawable-xxxhdpi/ic_send_text_dnd.png | Bin 0 -> 2597 bytes .../drawable-xxxhdpi/ic_send_text_offline.png | Bin 0 -> 1862 bytes .../drawable-xxxhdpi/ic_send_text_online.png | Bin 0 -> 2708 bytes .../drawable-xxxhdpi/ic_send_voice_away.png | Bin 0 -> 2491 bytes .../drawable-xxxhdpi/ic_send_voice_dnd.png | Bin 0 -> 2811 bytes .../ic_send_voice_offline.png | Bin 0 -> 2092 bytes .../drawable-xxxhdpi/ic_send_voice_online.png | Bin 0 -> 2868 bytes src/main/res/layout/fragment_conversation.xml | 2 +- src/main/res/values/arrays.xml | 15 + src/main/res/values/strings.xml | 813 +++++++++--------- src/main/res/xml/preferences.xml | 8 + 135 files changed, 1544 insertions(+), 535 deletions(-) create mode 100644 art/ic_send_location_away.svg create mode 100644 art/ic_send_location_dnd.svg create mode 100644 art/ic_send_location_offline.svg create mode 100644 art/ic_send_location_online.svg create mode 100644 art/ic_send_photo_away.svg create mode 100644 art/ic_send_photo_dnd.svg create mode 100644 art/ic_send_photo_offline.svg create mode 100644 art/ic_send_photo_online.svg create mode 100644 art/ic_send_text_away.svg create mode 100644 art/ic_send_text_dnd.svg create mode 100644 art/ic_send_text_offline.svg rename art/{ic_action_send_now.svg => ic_send_text_online.svg} (80%) create mode 100644 art/ic_send_voice_away.svg create mode 100644 art/ic_send_voice_dnd.svg create mode 100644 art/ic_send_voice_offline.svg create mode 100644 art/ic_send_voice_online.svg delete mode 100644 src/main/res/drawable-hdpi/ic_action_send_now_away.png delete mode 100644 src/main/res/drawable-hdpi/ic_action_send_now_dnd.png delete mode 100644 src/main/res/drawable-hdpi/ic_action_send_now_offline.png delete mode 100644 src/main/res/drawable-hdpi/ic_action_send_now_online.png create mode 100644 src/main/res/drawable-hdpi/ic_send_location_away.png create mode 100644 src/main/res/drawable-hdpi/ic_send_location_dnd.png create mode 100644 src/main/res/drawable-hdpi/ic_send_location_offline.png create mode 100644 src/main/res/drawable-hdpi/ic_send_location_online.png create mode 100644 src/main/res/drawable-hdpi/ic_send_photo_away.png create mode 100644 src/main/res/drawable-hdpi/ic_send_photo_dnd.png create mode 100644 src/main/res/drawable-hdpi/ic_send_photo_offline.png create mode 100644 src/main/res/drawable-hdpi/ic_send_photo_online.png create mode 100644 src/main/res/drawable-hdpi/ic_send_text_away.png create mode 100644 src/main/res/drawable-hdpi/ic_send_text_dnd.png create mode 100644 src/main/res/drawable-hdpi/ic_send_text_offline.png create mode 100644 src/main/res/drawable-hdpi/ic_send_text_online.png create mode 100644 src/main/res/drawable-hdpi/ic_send_voice_away.png create mode 100644 src/main/res/drawable-hdpi/ic_send_voice_dnd.png create mode 100644 src/main/res/drawable-hdpi/ic_send_voice_offline.png create mode 100644 src/main/res/drawable-hdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-mdpi/ic_action_send_now_away.png delete mode 100644 src/main/res/drawable-mdpi/ic_action_send_now_dnd.png delete mode 100644 src/main/res/drawable-mdpi/ic_action_send_now_offline.png delete mode 100644 src/main/res/drawable-mdpi/ic_action_send_now_online.png create mode 100644 src/main/res/drawable-mdpi/ic_send_location_away.png create mode 100644 src/main/res/drawable-mdpi/ic_send_location_dnd.png create mode 100644 src/main/res/drawable-mdpi/ic_send_location_offline.png create mode 100644 src/main/res/drawable-mdpi/ic_send_location_online.png create mode 100644 src/main/res/drawable-mdpi/ic_send_photo_away.png create mode 100644 src/main/res/drawable-mdpi/ic_send_photo_dnd.png create mode 100644 src/main/res/drawable-mdpi/ic_send_photo_offline.png create mode 100644 src/main/res/drawable-mdpi/ic_send_photo_online.png create mode 100644 src/main/res/drawable-mdpi/ic_send_text_away.png create mode 100644 src/main/res/drawable-mdpi/ic_send_text_dnd.png create mode 100644 src/main/res/drawable-mdpi/ic_send_text_offline.png create mode 100644 src/main/res/drawable-mdpi/ic_send_text_online.png create mode 100644 src/main/res/drawable-mdpi/ic_send_voice_away.png create mode 100644 src/main/res/drawable-mdpi/ic_send_voice_dnd.png create mode 100644 src/main/res/drawable-mdpi/ic_send_voice_offline.png create mode 100644 src/main/res/drawable-mdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-xhdpi/ic_action_send_now_away.png delete mode 100644 src/main/res/drawable-xhdpi/ic_action_send_now_dnd.png delete mode 100644 src/main/res/drawable-xhdpi/ic_action_send_now_offline.png delete mode 100644 src/main/res/drawable-xhdpi/ic_action_send_now_online.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_location_away.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_location_dnd.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_location_offline.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_location_online.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_away.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_dnd.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_offline.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_photo_online.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_text_away.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_text_dnd.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_text_offline.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_text_online.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_away.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_dnd.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_offline.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_voice_online.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_action_send_now_away.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_action_send_now_dnd.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_action_send_now_offline.png delete mode 100644 src/main/res/drawable-xxhdpi/ic_action_send_now_online.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_away.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_dnd.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_offline.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_location_online.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_away.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_offline.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_photo_online.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_away.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_dnd.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_offline.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_text_online.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_away.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_offline.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_voice_online.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_away.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_offline.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_location_online.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_away.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_offline.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_photo_online.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_away.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_offline.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_text_online.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_away.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_offline.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_voice_online.png diff --git a/art/ic_received_indicator.svg b/art/ic_received_indicator.svg index d9378c60d..43689c267 100644 --- a/art/ic_received_indicator.svg +++ b/art/ic_received_indicator.svg @@ -13,7 +13,7 @@ width="95" height="95" id="Yes_check" - inkscape:version="0.48.5 r10040" + inkscape:version="0.91 r13725" sodipodi:docname="ic_received_indicator.svg"> @@ -23,7 +23,7 @@ image/svg+xml - + @@ -36,17 +36,17 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1233" - inkscape:window-height="828" + inkscape:window-width="956" + inkscape:window-height="1156" id="namedview8" showgrid="false" showguides="true" inkscape:guide-bbox="true" inkscape:zoom="5.04" - inkscape:cx="26.829268" + inkscape:cx="-4.3215257" inkscape:cy="37.489149" - inkscape:window-x="0" - inkscape:window-y="0" + inkscape:window-x="2880" + inkscape:window-y="20" inkscape:window-maximized="0" inkscape:current-layer="Yes_check" fit-margin-top="0" @@ -69,7 +69,7 @@ diff --git a/art/ic_send_location_away.svg b/art/ic_send_location_away.svg new file mode 100644 index 000000000..fcd50b521 --- /dev/null +++ b/art/ic_send_location_away.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_location_dnd.svg b/art/ic_send_location_dnd.svg new file mode 100644 index 000000000..d91fa9130 --- /dev/null +++ b/art/ic_send_location_dnd.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_location_offline.svg b/art/ic_send_location_offline.svg new file mode 100644 index 000000000..56529b723 --- /dev/null +++ b/art/ic_send_location_offline.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_location_online.svg b/art/ic_send_location_online.svg new file mode 100644 index 000000000..275a7a789 --- /dev/null +++ b/art/ic_send_location_online.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_photo_away.svg b/art/ic_send_photo_away.svg new file mode 100644 index 000000000..31a20e09f --- /dev/null +++ b/art/ic_send_photo_away.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/art/ic_send_photo_dnd.svg b/art/ic_send_photo_dnd.svg new file mode 100644 index 000000000..0e406edec --- /dev/null +++ b/art/ic_send_photo_dnd.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/art/ic_send_photo_offline.svg b/art/ic_send_photo_offline.svg new file mode 100644 index 000000000..b2ca20a6f --- /dev/null +++ b/art/ic_send_photo_offline.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/art/ic_send_photo_online.svg b/art/ic_send_photo_online.svg new file mode 100644 index 000000000..79f713475 --- /dev/null +++ b/art/ic_send_photo_online.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + diff --git a/art/ic_send_text_away.svg b/art/ic_send_text_away.svg new file mode 100644 index 000000000..ea83086ae --- /dev/null +++ b/art/ic_send_text_away.svg @@ -0,0 +1,69 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/art/ic_send_text_dnd.svg b/art/ic_send_text_dnd.svg new file mode 100644 index 000000000..b594f3195 --- /dev/null +++ b/art/ic_send_text_dnd.svg @@ -0,0 +1,69 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/art/ic_send_text_offline.svg b/art/ic_send_text_offline.svg new file mode 100644 index 000000000..c87bfaac6 --- /dev/null +++ b/art/ic_send_text_offline.svg @@ -0,0 +1,69 @@ + + + + + + + + image/svg+xml + + + + + + + + + + + diff --git a/art/ic_action_send_now.svg b/art/ic_send_text_online.svg similarity index 80% rename from art/ic_action_send_now.svg rename to art/ic_send_text_online.svg index 6bde9158f..39e3d1e8a 100644 --- a/art/ic_action_send_now.svg +++ b/art/ic_send_text_online.svg @@ -11,7 +11,7 @@ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" id="svg3621" version="1.1" - inkscape:version="0.48.4 r9939" + inkscape:version="0.91 r13725" width="96" height="96" sodipodi:docname="ic_action_send_now.svg" @@ -26,7 +26,7 @@ image/svg+xml - + @@ -41,16 +41,16 @@ guidetolerance="10" inkscape:pageopacity="0" inkscape:pageshadow="2" - inkscape:window-width="1916" - inkscape:window-height="1161" + inkscape:window-width="1920" + inkscape:window-height="1200" id="namedview3623" showgrid="true" showguides="true" - inkscape:zoom="1" - inkscape:cx="47.28873" - inkscape:cy="43.262706" - inkscape:window-x="0" - inkscape:window-y="18" + inkscape:zoom="8" + inkscape:cx="69.783303" + inkscape:cy="56.761328" + inkscape:window-x="1920" + inkscape:window-y="0" inkscape:window-maximized="0" inkscape:current-layer="svg3621"> + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_voice_dnd.svg b/art/ic_send_voice_dnd.svg new file mode 100644 index 000000000..372a2ca80 --- /dev/null +++ b/art/ic_send_voice_dnd.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_voice_offline.svg b/art/ic_send_voice_offline.svg new file mode 100644 index 000000000..64ea44731 --- /dev/null +++ b/art/ic_send_voice_offline.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_voice_online.svg b/art/ic_send_voice_online.svg new file mode 100644 index 000000000..97284b021 --- /dev/null +++ b/art/ic_send_voice_online.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/render.rb b/art/render.rb index 2ab3e94fc..32d06f8f7 100755 --- a/art/render.rb +++ b/art/render.rb @@ -10,6 +10,22 @@ images = { 'conversations_baloon.svg' => ['ic_launcher', 48], 'conversations_mono.svg' => ['ic_notification', 24], 'ic_received_indicator.svg' => ['ic_received_indicator', 12], + 'ic_send_text_offline.svg' => ['ic_send_text_offline', 36], + 'ic_send_text_online.svg' => ['ic_send_text_online', 36], + 'ic_send_text_away.svg' => ['ic_send_text_away', 36], + 'ic_send_text_dnd.svg' => ['ic_send_text_dnd', 36], + 'ic_send_photo_online.svg' => ['ic_send_photo_online', 36], + 'ic_send_photo_offline.svg' => ['ic_send_photo_offline', 36], + 'ic_send_photo_away.svg' => ['ic_send_photo_away', 36], + 'ic_send_photo_dnd.svg' => ['ic_send_photo_dnd', 36], + 'ic_send_location_online.svg' => ['ic_send_location_online', 36], + 'ic_send_location_offline.svg' => ['ic_send_location_offline', 36], + 'ic_send_location_away.svg' => ['ic_send_location_away', 36], + 'ic_send_location_dnd.svg' => ['ic_send_location_dnd', 36], + 'ic_send_voice_online.svg' => ['ic_send_voice_online', 36], + 'ic_send_voice_offline.svg' => ['ic_send_voice_offline', 36], + 'ic_send_voice_away.svg' => ['ic_send_voice_away', 36], + 'ic_send_voice_dnd.svg' => ['ic_send_voice_dnd', 36], } images.each do |source, result| resolutions.each do |name, factor| diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index aec755fce..a76efbc35 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -60,11 +60,11 @@ public class ConversationActivity extends XmppActivity public static final int REQUEST_SEND_MESSAGE = 0x0201; public static final int REQUEST_DECRYPT_PGP = 0x0202; public static final int REQUEST_ENCRYPT_MESSAGE = 0x0207; - private static final int ATTACHMENT_CHOICE_CHOOSE_IMAGE = 0x0301; - private static final int ATTACHMENT_CHOICE_TAKE_PHOTO = 0x0302; - private static final int ATTACHMENT_CHOICE_CHOOSE_FILE = 0x0303; - private static final int ATTACHMENT_CHOICE_RECORD_VOICE = 0x0304; - private static final int ATTACHMENT_CHOICE_LOCATION = 0x0305; + public static final int ATTACHMENT_CHOICE_CHOOSE_IMAGE = 0x0301; + public static final int ATTACHMENT_CHOICE_TAKE_PHOTO = 0x0302; + public static final int ATTACHMENT_CHOICE_CHOOSE_FILE = 0x0303; + public static final int ATTACHMENT_CHOICE_RECORD_VOICE = 0x0304; + public static final int ATTACHMENT_CHOICE_LOCATION = 0x0305; private static final String STATE_OPEN_CONVERSATION = "state_open_conversation"; private static final String STATE_PANEL_OPEN = "state_panel_open"; private static final String STATE_PENDING_URI = "state_pending_uri"; @@ -452,7 +452,18 @@ public class ConversationActivity extends XmppActivity } } - private void attachFile(final int attachmentChoice) { + public void attachFile(final int attachmentChoice) { + switch (attachmentChoice) { + case ATTACHMENT_CHOICE_LOCATION: + getPreferences().edit().putString("recently_used_quick_action","location").apply(); + break; + case ATTACHMENT_CHOICE_RECORD_VOICE: + getPreferences().edit().putString("recently_used_quick_action","voice").apply(); + break; + case ATTACHMENT_CHOICE_TAKE_PHOTO: + getPreferences().edit().putString("recently_used_quick_action","photo").apply(); + break; + } final Conversation conversation = getSelectedConversation(); final int encryption = conversation.getNextEncryption(forceEncryption()); if (encryption == Message.ENCRYPTION_PGP) { diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 5b1e9b4d6..37ae00a30 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -119,7 +119,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void onScroll(AbsListView view, int firstVisibleItem, - int visibleItemCount, int totalItemCount) { + int visibleItemCount, int totalItemCount) { synchronized (ConversationFragment.this.messageList) { if (firstVisibleItem < 5 && messagesLoaded && messageList.size() > 0) { long timestamp = ConversationFragment.this.messageList.get(0).getTimeSent(); @@ -145,7 +145,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa try { Message tmpMessage = messageList.get(newPosition); - while(tmpMessage.wasMergedIntoPrevious()) { + while (tmpMessage.wasMergedIntoPrevious()) { offset++; tmpMessage = tmpMessage.prev(); } @@ -174,7 +174,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (ConversationFragment.this.conversation != conversation) { return; } - messageLoaderToast = Toast.makeText(activity,resId,Toast.LENGTH_LONG); + messageLoaderToast = Toast.makeText(activity, resId, Toast.LENGTH_LONG); messageLoaderToast.show(); } }); @@ -208,7 +208,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void onClick(View v) { - activity.verifyOtrSessionDialog(conversation,v); + activity.verifyOtrSessionDialog(conversation, v); } }; private ConcurrentLinkedQueue mEncryptedMessages = new ConcurrentLinkedQueue<>(); @@ -219,7 +219,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if (actionId == EditorInfo.IME_ACTION_SEND) { InputMethodManager imm = (InputMethodManager) v.getContext() - .getSystemService(Context.INPUT_METHOD_SERVICE); + .getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); sendMessage(); return true; @@ -232,7 +232,25 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void onClick(View v) { - sendMessage(); + Object tag = v.getTag(); + if (tag instanceof SendButtonAction) { + SendButtonAction action = (SendButtonAction) tag; + switch (action) { + case TAKE_PHOTO: + activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_TAKE_PHOTO); + break; + case SEND_LOCATION: + activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_LOCATION); + break; + case RECORD_VOICE: + activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_RECORD_VOICE); + break; + default: + sendMessage(); + } + } else { + sendMessage(); + } } }; private OnClickListener clickToMuc = new OnClickListener() { @@ -262,7 +280,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } Message message = new Message(conversation, mEditMessage.getText() .toString(), conversation.getNextEncryption(activity - .forceEncryption())); + .forceEncryption())); if (conversation.getMode() == Conversation.MODE_MULTI) { if (conversation.getNextCounterpart() != null) { message.setCounterpart(conversation.getNextCounterpart()); @@ -282,13 +300,13 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (conversation.getMode() == Conversation.MODE_MULTI && conversation.getNextCounterpart() != null) { this.mEditMessage.setHint(getString( - R.string.send_private_message_to, - conversation.getNextCounterpart().getResourcepart())); + R.string.send_private_message_to, + conversation.getNextCounterpart().getResourcepart())); } else { switch (conversation.getNextEncryption(activity.forceEncryption())) { case Message.ENCRYPTION_NONE: mEditMessage - .setHint(getString(R.string.send_plain_text_message)); + .setHint(getString(R.string.send_plain_text_message)); break; case Message.ENCRYPTION_OTR: mEditMessage.setHint(getString(R.string.send_otr_message)); @@ -304,7 +322,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } private void setupIme() { - if (((ConversationActivity)getActivity()).usingEnterKey()) { + if (((ConversationActivity) getActivity()).usingEnterKey()) { mEditMessage.setInputType(mEditMessage.getInputType() & (~InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE)); } else { mEditMessage.setInputType(mEditMessage.getInputType() | InputType.TYPE_TEXT_VARIATION_SHORT_MESSAGE); @@ -313,8 +331,8 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public View onCreateView(final LayoutInflater inflater, - ViewGroup container, Bundle savedInstanceState) { - final View view = inflater.inflate(R.layout.fragment_conversation,container, false); + ViewGroup container, Bundle savedInstanceState) { + final View view = inflater.inflate(R.layout.fragment_conversation, container, false); view.setOnClickListener(null); mEditMessage = (EditMessage) view.findViewById(R.id.textinput); setupIme(); @@ -365,21 +383,21 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } }); messageListAdapter - .setOnContactPictureLongClicked(new OnContactPictureLongClicked() { + .setOnContactPictureLongClicked(new OnContactPictureLongClicked() { - @Override - public void onContactPictureLongClicked(Message message) { - if (message.getStatus() <= Message.STATUS_RECEIVED) { - if (message.getConversation().getMode() == Conversation.MODE_MULTI) { - if (message.getCounterpart() != null) { - privateMessageWith(message.getCounterpart()); + @Override + public void onContactPictureLongClicked(Message message) { + if (message.getStatus() <= Message.STATUS_RECEIVED) { + if (message.getConversation().getMode() == Conversation.MODE_MULTI) { + if (message.getCounterpart() != null) { + privateMessageWith(message.getCounterpart()); + } } + } else { + activity.showQrCode(); } - } else { - activity.showQrCode(); } - } - }); + }); messagesView.setAdapter(messageListAdapter); registerForContextMenu(messagesView); @@ -389,7 +407,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void onCreateContextMenu(ContextMenu menu, View v, - ContextMenuInfo menuInfo) { + ContextMenuInfo menuInfo) { synchronized (this.messageList) { super.onCreateContextMenu(menu, v, menuInfo); AdapterView.AdapterContextMenuInfo acmi = (AdapterContextMenuInfo) menuInfo; @@ -416,7 +434,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if ((m.getType() == Message.TYPE_TEXT || m.getType() == Message.TYPE_PRIVATE || m.getDownloadable() != null) - && (!GeoHelper.isGeoUri(m.getBody()))) { + && (!GeoHelper.isGeoUri(m.getBody()))) { shareWith.setVisible(false); } if (m.getStatus() != Message.STATUS_SEND_FAILED) { @@ -425,17 +443,17 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (((m.getType() != Message.TYPE_IMAGE && m.getDownloadable() == null) || m.getImageParams().url == null) && !GeoHelper.isGeoUri(m.getBody())) { copyUrl.setVisible(false); - } + } if (m.getType() != Message.TYPE_TEXT || m.getDownloadable() != null || !m.bodyContainsDownloadable()) { downloadImage.setVisible(false); - } + } if (!((m.getDownloadable() != null && !(m.getDownloadable() instanceof DownloadablePlaceholder)) - || (m.isFileOrImage() && (m.getStatus() == Message.STATUS_WAITING - || m.getStatus() == Message.STATUS_OFFERED)))) { + || (m.isFileOrImage() && (m.getStatus() == Message.STATUS_WAITING + || m.getStatus() == Message.STATUS_OFFERED)))) { cancelTransmission.setVisible(false); - } + } } } @@ -483,12 +501,12 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } shareIntent.setType(mime); } - activity.startActivity(Intent.createChooser(shareIntent,getText(R.string.share_with))); + activity.startActivity(Intent.createChooser(shareIntent, getText(R.string.share_with))); } private void copyText(Message message) { if (activity.copyTextToClipboard(message.getMergedBody(), - R.string.message_text)) { + R.string.message_text)) { Toast.makeText(activity, R.string.message_copied_to_clipboard, Toast.LENGTH_SHORT).show(); } @@ -498,7 +516,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (message.getType() == Message.TYPE_FILE || message.getType() == Message.TYPE_IMAGE) { DownloadableFile file = activity.xmppConnectionService.getFileBackend().getFile(message); if (!file.exists()) { - Toast.makeText(activity,R.string.file_deleted,Toast.LENGTH_SHORT).show(); + Toast.makeText(activity, R.string.file_deleted, Toast.LENGTH_SHORT).show(); message.setDownloadable(new DownloadablePlaceholder(Downloadable.STATUS_DELETED)); return; } @@ -519,20 +537,20 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (activity.copyTextToClipboard(url, resId)) { Toast.makeText(activity, R.string.url_copied_to_clipboard, Toast.LENGTH_SHORT).show(); - } + } } private void downloadImage(Message message) { activity.xmppConnectionService.getHttpConnectionManager() - .createNewConnection(message); + .createNewConnection(message); } private void cancelTransmission(Message message) { Downloadable downloadable = message.getDownloadable(); - if (downloadable!=null) { + if (downloadable != null) { downloadable.cancel(); } else { - activity.xmppConnectionService.markMessage(message,Message.STATUS_SEND_FAILED); + activity.xmppConnectionService.markMessage(message, Message.STATUS_SEND_FAILED); } } @@ -548,9 +566,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa mEditMessage.getText().insert(0, nick + ": "); } else { if (mEditMessage.getText().charAt( - mEditMessage.getSelectionStart() - 1) != ' ') { + mEditMessage.getSelectionStart() - 1) != ' ') { nick = " " + nick; - } + } mEditMessage.getText().insert(mEditMessage.getSelectionStart(), nick + " "); } @@ -563,7 +581,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (this.conversation != null) { final String msg = mEditMessage.getText().toString(); this.conversation.setNextMessage(msg); - updateChatState(this.conversation,msg); + updateChatState(this.conversation, msg); } } @@ -586,7 +604,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa final String msg = mEditMessage.getText().toString(); this.conversation.setNextMessage(msg); if (this.conversation != conversation) { - updateChatState(this.conversation,msg); + updateChatState(this.conversation, msg); } this.conversation.trim(); } @@ -632,7 +650,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void onClick(View v) { - final Contact contact = conversation == null ? null :conversation.getContact(); + final Contact contact = conversation == null ? null : conversation.getContact(); if (contact != null) { activity.xmppConnectionService.createContact(contact); activity.switchToContactDetails(contact); @@ -655,7 +673,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa intent.setAction(VerifyOTRActivity.ACTION_VERIFY_CONTACT); intent.putExtra("contact", conversation.getContact().getJid().toBareJid().toString()); intent.putExtra("account", conversation.getAccount().getJid().toBareJid().toString()); - intent.putExtra("mode",VerifyOTRActivity.MODE_ANSWER_QUESTION); + intent.putExtra("mode", VerifyOTRActivity.MODE_ANSWER_QUESTION); startActivity(intent); } }; @@ -665,11 +683,11 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa final Contact contact = conversation.getContact(); final int mode = conversation.getMode(); if (conversation.isBlocked()) { - showSnackbar(R.string.contact_blocked, R.string.unblock,this.mUnblockClickListener); + showSnackbar(R.string.contact_blocked, R.string.unblock, this.mUnblockClickListener); } else if (!contact.showInRoster() && contact.getOption(Contact.Options.PENDING_SUBSCRIPTION_REQUEST)) { - showSnackbar(R.string.contact_added_you, R.string.add_back,this.mAddBackClickListener); + showSnackbar(R.string.contact_added_you, R.string.add_back, this.mAddBackClickListener); } else if (mode == Conversation.MODE_MULTI - &&!conversation.getMucOptions().online() + && !conversation.getMucOptions().online() && account.getStatus() == Account.State.ONLINE) { switch (conversation.getMucOptions().getError()) { case MucOptions.ERROR_NICK_IN_USE: @@ -693,18 +711,18 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa default: break; } - } else if (askForPassphraseIntent != null ) { - showSnackbar(R.string.openpgp_messages_found,R.string.decrypt, clickToDecryptListener); + } else if (askForPassphraseIntent != null) { + showSnackbar(R.string.openpgp_messages_found, R.string.decrypt, clickToDecryptListener); } else if (mode == Conversation.MODE_SINGLE && conversation.smpRequested()) { - showSnackbar(R.string.smp_requested, R.string.verify,this.mAnswerSmpClickListener); + showSnackbar(R.string.smp_requested, R.string.verify, this.mAnswerSmpClickListener); } else if (mode == Conversation.MODE_SINGLE - &&conversation.hasValidOtrSession() + && conversation.hasValidOtrSession() && (conversation.getOtrSession().getSessionStatus() == SessionStatus.ENCRYPTED) && (!conversation.isOtrFingerprintVerified())) { showSnackbar(R.string.unknown_otr_fingerprint, R.string.verify, clickToVerify); } else if (conversation.isMuted()) { - showSnackbar(R.string.notifications_disabled, R.string.enable,this.mUnmuteClickListener); + showSnackbar(R.string.notifications_disabled, R.string.enable, this.mUnmuteClickListener); } else { hideSnackbar(); } @@ -722,12 +740,12 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa for (final Message message : this.messageList) { if (message.getEncryption() == Message.ENCRYPTION_PGP && (message.getStatus() == Message.STATUS_RECEIVED || message - .getStatus() >= Message.STATUS_SEND) + .getStatus() >= Message.STATUS_SEND) && message.getDownloadable() == null) { if (!mEncryptedMessages.contains(message)) { mEncryptedMessages.add(message); } - } + } } decryptNext(); updateStatusMessages(); @@ -790,53 +808,108 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa updateChatMsgHint(); } + enum SendButtonAction {TEXT, TAKE_PHOTO, SEND_LOCATION, RECORD_VOICE} + + private int getSendButtonImageResource(SendButtonAction action, int status) { + switch (action) { + case TEXT: + switch (status) { + case Presences.CHAT: + case Presences.ONLINE: + return R.drawable.ic_send_text_online; + case Presences.AWAY: + return R.drawable.ic_send_text_away; + case Presences.XA: + case Presences.DND: + return R.drawable.ic_send_text_dnd; + default: + return R.drawable.ic_send_text_offline; + } + case TAKE_PHOTO: + switch (status) { + case Presences.CHAT: + case Presences.ONLINE: + return R.drawable.ic_send_photo_online; + case Presences.AWAY: + return R.drawable.ic_send_photo_away; + case Presences.XA: + case Presences.DND: + return R.drawable.ic_send_photo_dnd; + default: + return R.drawable.ic_send_photo_offline; + } + case RECORD_VOICE: + switch (status) { + case Presences.CHAT: + case Presences.ONLINE: + return R.drawable.ic_send_voice_online; + case Presences.AWAY: + return R.drawable.ic_send_voice_away; + case Presences.XA: + case Presences.DND: + return R.drawable.ic_send_voice_dnd; + default: + return R.drawable.ic_send_voice_offline; + } + case SEND_LOCATION: + switch (status) { + case Presences.CHAT: + case Presences.ONLINE: + return R.drawable.ic_send_location_online; + case Presences.AWAY: + return R.drawable.ic_send_location_away; + case Presences.XA: + case Presences.DND: + return R.drawable.ic_send_location_dnd; + default: + return R.drawable.ic_send_location_offline; + } + } + return R.drawable.ic_send_text_offline; + } + public void updateSendButton() { - Conversation c = this.conversation; + final Conversation c = this.conversation; + final SendButtonAction action; + final int status; + if (c.getMode() == Conversation.MODE_MULTI) { + action = SendButtonAction.TEXT; + } else { + if (this.mEditMessage == null || this.mEditMessage.getText().length() == 0) { + String setting = activity.getPreferences().getString("quick_action","recent"); + if (setting.equals("recent")) { + setting = activity.getPreferences().getString("recently_used_quick_action","text"); + } + switch (setting) { + case "photo": + action = SendButtonAction.TAKE_PHOTO; + break; + case "location": + action = SendButtonAction.SEND_LOCATION; + break; + case "voice": + action = SendButtonAction.RECORD_VOICE; + break; + default: + action = SendButtonAction.TEXT; + break; + } + } else { + action = SendButtonAction.TEXT; + } + } if (activity.useSendButtonToIndicateStatus() && c != null && c.getAccount().getStatus() == Account.State.ONLINE) { if (c.getMode() == Conversation.MODE_SINGLE) { - switch (c.getContact().getMostAvailableStatus()) { - case Presences.CHAT: - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_online); - break; - case Presences.ONLINE: - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_online); - break; - case Presences.AWAY: - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_away); - break; - case Presences.XA: - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_away); - break; - case Presences.DND: - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_dnd); - break; - default: - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_offline); - break; - } - } else if (c.getMode() == Conversation.MODE_MULTI) { - if (c.getMucOptions().online()) { - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_online); - } else { - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_offline); - } + status = c.getContact().getMostAvailableStatus(); } else { - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_offline); + status = c.getMucOptions().online() ? Presences.ONLINE : Presences.OFFLINE; } } else { - this.mSendButton - .setImageResource(R.drawable.ic_action_send_now_offline); + status = Presences.OFFLINE; } + this.mSendButton.setTag(action); + this.mSendButton.setImageResource(getSendButtonImageResource(action, status)); } protected void updateStatusMessages() { @@ -865,7 +938,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } protected void showSnackbar(final int message, final int action, - final OnClickListener clickListener) { + final OnClickListener clickListener) { snackbar.setVisibility(View.VISIBLE); snackbar.setOnClickListener(null); snackbarMessage.setText(message); @@ -897,7 +970,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void userInputRequried(PendingIntent pi, - Contact contact) { + Contact contact) { activity.runIntent( pi, ConversationActivity.REQUEST_ENCRYPT_MESSAGE); @@ -921,11 +994,11 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void onClick(DialogInterface dialog, - int which) { + int which) { conversation - .setNextEncryption(Message.ENCRYPTION_NONE); + .setNextEncryption(Message.ENCRYPTION_NONE); xmppService.databaseBackend - .updateConversation(conversation); + .updateConversation(conversation); message.setEncryption(Message.ENCRYPTION_NONE); xmppService.sendMessage(message); messageSent(); @@ -936,9 +1009,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (conversation.getMucOptions().pgpKeysInUse()) { if (!conversation.getMucOptions().everybodyHasKeys()) { Toast warning = Toast - .makeText(getActivity(), - R.string.missing_public_keys, - Toast.LENGTH_LONG); + .makeText(getActivity(), + R.string.missing_public_keys, + Toast.LENGTH_LONG); warning.setGravity(Gravity.CENTER_VERTICAL, 0, 0); warning.show(); } @@ -950,12 +1023,12 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void onClick(DialogInterface dialog, - int which) { + int which) { conversation - .setNextEncryption(Message.ENCRYPTION_NONE); + .setNextEncryption(Message.ENCRYPTION_NONE); message.setEncryption(Message.ENCRYPTION_NONE); xmppService.databaseBackend - .updateConversation(conversation); + .updateConversation(conversation); xmppService.sendMessage(message); messageSent(); } @@ -968,7 +1041,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } public void showNoPGPKeyDialog(boolean plural, - DialogInterface.OnClickListener listener) { + DialogInterface.OnClickListener listener) { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); builder.setIconAttribute(android.R.attr.alertDialogIcon); if (plural) { @@ -1026,6 +1099,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (status == Account.State.ONLINE && conversation.setOutgoingChatState(ChatState.COMPOSING)) { activity.xmppConnectionService.sendChatState(conversation); } + updateSendButton(); } @Override @@ -1042,6 +1116,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (status == Account.State.ONLINE && conversation.setOutgoingChatState(Config.DEFAULT_CHATSTATE)) { activity.xmppConnectionService.sendChatState(conversation); } + updateSendButton(); } } diff --git a/src/main/res/drawable-hdpi/ic_action_send_now_away.png b/src/main/res/drawable-hdpi/ic_action_send_now_away.png deleted file mode 100644 index 505cbe63abc1a4af6e3dd2eef57a82e53edd0e60..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 932 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 diff --git a/src/main/res/drawable-hdpi/ic_action_send_now_online.png b/src/main/res/drawable-hdpi/ic_action_send_now_online.png deleted file mode 100644 index 48676f7bdfd6584d541b65a8d9768703f483e953..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1095 zcmV-N1i1T&P)Bzu(8_v{Ca$>HtFh0dee$K?++Xgir^I z0Wnkz3{0RxLmL=S2WC*<4`5&@NBO4`3!uY^QOBx-mo$5hcFoVMtyR$4PS+ z-#N}_jL*+~KDzhyogL0Bl|NDC?~S{S7S17J5TV$;nWdTea4{^OwNP3ZJ`CSMtRHv( zVzO>#(RsNdEI%l}DgnOjd*z&j(994nhu;%+>Bu8SJcMS3>T=~X17=@(A@&snw zP}Qh)uhqzMuBRIS0O3;jHEC0MoG7o5o`C97rnELPt%iNDBV@JX0) zLyH=(#TEP&v^h6ypSt%2508`2X10O4|YpRg;L*rnjKAx8y#MA&rwgbxWi9#u}cBLb|*ndU%>3+*@>Oa?eB86OTkGYeE|Rv zJ`CR#)yn`KNT+}U;HY+Km>c{c1lwX7tsDwDGT_)D3zSNwG9iD9gTR3uN79*MQb`9N zO1jfL*(P#OJQrHsholNf!|dbPvH0KELE(TMw`+9l&_OT>z)|S{brepRnWUZXLxLRK z0RUTDTM}3xvMmA$q`;1V5LFVXb^Fl*w>zoo#6A6+m~kmLs{|w!_w)rQSmGHh z8yXq~(fS_=#XUU%*MGV`K0a~bwQSX1PFH*`ow%nbVBC#Q0XmdNg+awVJpn{qvYa1v zC}_w|F7yu>}-fK6<^&J2GOBG8neSYNrF zkGQ8BAk5|lHY{<^fjuzT4Q$xro&bRVdHoGQQx71}B!cMa+|y^7+a(|XfXda%m9*cW z&RX2FcLm64B>Y}5D&n5K0BGq%eM*Zvj8?x|UC&=DIRQylmMT-n-oQpw+!K@^lwUdW zf5am$?g`|Aln@{I^r5sUj8;D%ZE;V47}EgGowz3;R8c7Wa^A!}{{e3=9&B8Du*LuY N002ovPDHLkV1kGt>@5HQ diff --git a/src/main/res/drawable-hdpi/ic_launcher.png b/src/main/res/drawable-hdpi/ic_launcher.png index bffc1c65293422066b2d664f5abed906cee2c1f8..25fc8591f694bd7162cddecdb4b51380ac1bcc58 100644 GIT binary patch delta 4417 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 Hu0mjfn%!f8 delta 4428 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 D6A<1p delta 588 zcmV-S0<-z~R)O+ns4Z@_-Q5#zkvP5{upmhLO>l`~RIDliSVLx_dnE8MOi z#gFPlay)rLib(|kXc!8e3ti?rTMh$&_Pz8tHIW*l8`^0IYCju1&hM~A0l>)U@8mb~ z2&L5ASW_1g4}Xb1A;RAvEa8lTky7L8P<}SQQe9UUa_(-u!aCUw09czZj%OZZzHC;< z001F`Bio6qI_W#<8?<%trvX4)&|WRwS-QE^g-mcXINW)yE4OX9<0&Cz{ezNjVizL9 zRl*Y1ESV)`UOrzvmp>qjo$Y4btjLF3di*2)3zbBmFMn{6Yq#zKfKpPMlpad2YmI=2 z{i4Txux-Zbx9*`j)s?s$)xK$Q_p!ET7QrIWAJoi0mwI!La&K!wlu~$(dLm+MROGZD#$NLpQ?wfLjaJS%FY(! z>L}HzQAOD^R*c2e%hYsJ5CEj_rtcN!)TkjD2~#!Ya#FiR=cv*M1WM^&0f4xAUGB|t aTg6Yy$OlBr>_nCT0000Z4mna diff --git a/src/main/res/drawable-hdpi/ic_send_location_away.png b/src/main/res/drawable-hdpi/ic_send_location_away.png new file mode 100644 index 0000000000000000000000000000000000000000..d139818b474bc97feac0eac8f61143355916ef68 GIT binary patch literal 1159 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_location_offline.png b/src/main/res/drawable-hdpi/ic_send_location_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..4aec18af7fee6b12afa5174aceeb477e289386c5 GIT binary patch literal 971 zcmV;+12p`JP)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H114v0kK~!jg?b^$$l~owW@z3#;7b-XrsB|%EAc-X8po`E20--^Z zs8K8z#6Q?vhLa}j^hYU^_92}VH3Cyx8vF&wm;!x zyr;3qmco|femvNHk8l?6;4S>oqA{(6t-}^vRT<}ZY{!Ax294JSkh4L6BRx|s@6?5i;mIyn zn9_zlj1`5x5mw-#62}r@H{i~aWQAOjWHaBs!E3U=TOxy3U&3sXC5L@wmW~`-M?rfsM zZqBs(3(rY&(Z!hQZ00g!-jr#FxUf~3cAw+t47=lcwA+{&d%Ux4nVZby=W{sIZWT6X*lm`7 zcXM+iE-bP~dIWbb^83BgnzN7G;g!b}PRd(xk4xK{P1uVcy6bCj4{izM{Y9D@vWW^i zhtK47vjOY6PYwIJ+}V_@?msE;spZqCLy53M{^?eif+P4Q>QuVX+*9aR!tN5MQek`X zYoTw1QCew_hp=J5N8^%HHg#X zw1qSzpOL?}x)?87xT+PVW$pa~bzNw`!pV3cS_(Ud9n#@ll+)O$;ULtiD-M{&k5X+v za=f%dDzG-AwJ_3#a6*28b2r{@-H5)LGFoS0mE^>#_ zM^_v$ExpHahxyOjV4ykJSMolEk=Buyn}1TW3-9)sxNl+brF059cuVIC{j4wl#ibBN tI#F3K&2dkw*pB=cxw`v|7%}31z~8OSl8VX1zAOL$002ovPDHLkV1m+x*7*Pc literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_location_online.png b/src/main/res/drawable-hdpi/ic_send_location_online.png new file mode 100644 index 0000000000000000000000000000000000000000..19ddc51e3cdde0f7ddf10ce5582daa855e2b5988 GIT binary patch literal 1341 zcmV-D1;YA?P)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11iDE?K~!jg?OI)ETtyf?XYMB1qNYg;ZBeprvPnoE6zPMApcaHe zK@p^lFBJ(*x>~Vsz6bQtCx23!6k|bbEhtj$Q=vp_6}8bSENwS8yPG!siGQvA!OiC0 z`Fv5PBxVD_ zjBeEDDt(nJN%f9BSavkq;?=y3q&!UW-aFNb$OTY+6QqLA;|>{Hud_x5QboQU}B(rB#KNVGr8g1W<_iRp`z&g1B3$jVCyrhs+SL4_FZM14R!44ctDX` zUHSE(G@k1k?s~|X??UR?*R$GF+zCj0BXv6n0y^LGcF$@Tx|6Z6I=2PD3Ky;wh!whV z?pYVAb+FvKxi%1wxHNNt0FSosZNJ}^XB~{8Jau!LSa8To5RA`1X6zb*Db3AR99Vwc zXGgQ?ROr1)L8BpMIt*oB>BZ8--(Tz)?&wzJ3k2>n5fMQRRlefy@@GxGT8&s!z;4q} z0x8d>!q;yP1puWTrDBi@UlXumqD7)nH|cI0uU5eVtvXEV1QJNV-Icydb*Y+4U!@u% z+znx9qN!4<-P9*w8B76djp{T{PQEnxbG^FqKzRm`lV+N-&ZO>Ey-l%@cbU|M9*kEE z8fLXxc(S_27i7ZtLk66)53)wR2YY#?lfBf$@K)*FL)vW+xJruCtwi@a99Lu@LO9>ROpc3*>bFd zP4-Xv0M6R-oFO>p=lw}rn$wM@2F6@?PQ5%Fb>TS$Ytb#oMEJW4*9w9w>2vAhE>x#r z3U+>Yv8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11TaZNK~!jg?U_$(R8Y@Tat~QGWnI8WF>=f!N+sq1b|@<*DMM^d5Imo?TU^QVVb8O;Wc|l^yv`& z4k+0R(>(hzZpZ*2^lR3Bkk(yenqw!zL0~6_X4{UO!s8)^-$`;=PVh&iCKZM02)!r+ z82oq{TEZisKu+G{T6t9jI!Frzjz9LI01Q4J?`WP)(W>$_)$=spf%*9jPv_nBF*K~d-!Fs38yqQFsv4wod{P6y>0+xYyyL`5O*GK0@& zc>L^=in}l7@e65k0vfH-OQe`%8vwK1kqnPY>m|*y!WRsYMCf%v$Ca?_%<^Sal;+rj z;SKK43B?2dX#&kLh0phLlBw0U0;&ZrkYWdFKP}x%#emV$ub_wUHODcO4-sB~P!!{% zyhwqMbeN-hXsu38vxH&P1toi7%0$_kdX*z6eO0`Dfc+dUHOMJ`114>0*$YdC7ro}` zB;Y{R?+dSJjy)lp&zLPOJ7I$1USxCw-mJmT>!ETp<5bv$HUc|g%0lVktLJD!=&Zrd zZoNcmwJ66}1Qu+l*$MNQ3zb{h3N@rVN`hNF8L`e)Y+EJlgqcX9df&oVDl+xN?gq_v zjkSl$+qnw_HTWrTBl3j|TWzS>?uuJ%l(t>=zH1N{~7+fh0t%|n2wxnD{9^IN{cgS{?iwHkf z(fbu<`6lGM!m_(-r^)p@|b1o^?UVT|OrClIN5zaY0VA z6slSga&x^`HBS=5ag3W>3|wc>hF(&9qUWm*t29q1hEIuXLbh;!=b?0v;A0(T5}z@e z8860uYfZ9j#-j(1y)HJ2N{I9Nt&4yz7E#SHk6|7Fk2aJxR&s;b5dXa*2ul0E;g?l1 zQa#GoSP1kOqiTu5#=kq8q$yY zBLKdZba^JY{;%3B&*O6tWfweVziQzj$_zf2CC#7zH<<<+XrO@x8fc(O`~#m2Ef5!` Rc_RP-002ovPDHLkV1hi_B7pz^ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_photo_dnd.png b/src/main/res/drawable-hdpi/ic_send_photo_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb856797e265ebf053fca9381a038a5bc3dce36 GIT binary patch literal 1381 zcmV-r1)BPaP)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11ma0VK~!jg?OD%nR8<%~-+MC!W(o{yo#~sYX*#d9Fw!naBP1>a zjEON4RwNKHk!V8v1Js3yiE+U{pdk@;(-6asL|qVnEsTvJEZU|iw9`sp`ep_Y+QO8U z&b!BjMc=%cLfdy|U@>QRzk9#$o%8Om@7@bE(L@vVgy;p|lXIN(_6!#X$x7M4$@_d`Jo832Ibuw&VQf6}UR?0TxJJ487|pc}yE zpdZqVMFmW@2+lvBo66Q|P*YgGqiX;(PLee1%P$y2#9bD3`i1M$7yWfrL$MH#N2%n* z(=G}CNSYyKyz5w2#9vn>Ow87P09zWuObZxM66yC_tAv#y&ozdSJ_ym~x7Fw|YTMfy zg<70L_5LU!ir~D6%mRRrF+#Qp>iYxhCQLy_01So7cSjP%V#!-qh{vPl(AGW!*axt$ z9^bEruxkn&OwCM9tk&RPp~WEpL%C#E4@rPKyKj>zK*3+`4z~Spc}v+WL29Z0tdW@1;x21io@CJ1oKh z9ei{NyLLOaTZQy-OK<)0tc96^2Xzh|MjzGgf+BX#8O1C&wSQ6@ZfwoQd8? z0vd*;mZ7M?L2oad1I&Cf{SHljD1wZ5vKS#v5xfLLedHwVbkSpB~lIQ;1pPx zf{gg*)GJB*7=Z(i_vXQUDf_6`l63yMqJYt$yaEdgp>onYR!=X$gKPCS$=C7;dzaT1 zCWeCY3M7mWh4S6eN}K!Ex&xVfqaubI9VV(5q4gl3FwT27-$~ov1Veh)9Y?s6nM}*W za-uj=0x=(iTOeVk$Q^Had%3(rHgepdgszrK&r~w2jJ;k25~h3y)zWGW*MP`^_=jGg z8?->egp7I1ozduRintpHRKC>~sq7)e9YMGST|BlG;_>LivW$&Afa3V0d}={a#=ZOC zjkZiH1Y3h}3)W+xQ4VeGtF*b_ubYH2e)N`?!;Ag$B!}WkfPLPwVF33V!bk%M zDH&WC_S>t3C5pvT+2A*_k>f{$K@nFB^{wSN3;w!CJk_RclX3`P51z`WTA2tNI3K^B noqEz_nrNblCYorXi8bOMlQGKdRLeay00000NkvXXu0mjfAlQW2 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_photo_offline.png b/src/main/res/drawable-hdpi/ic_send_photo_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..046f989b857e7f8730e24ce78eae5a789a7c3af6 GIT binary patch literal 987 zcmV<110?*3P)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H116WB!K~!jg?b*wV9Yqw!@y}%P&?IK!3q%~mg?fD?S;$~qiI0tl z;!=YOii!ws)wTF9D1s3;QQQjZBKTP8AX!aBGe%vQg@})+fzdcm7uA=UTeoI%@9op$ z2>peoZ+CT{dwyM2r%qMT($dl-W5M>e<8JI2^1TIog2hNjq8P)|xP8R;Z^Wxuj&No? z!brst+*#xOt8octBAkg5_7Lt5uyb8?o~>&rLfBn+IKWPq4*tUTb&PBjJg&!s)%l`2 zf6@Tw@h#rNccll`6E=ls#rDA_SiIY2aja;zQLDuor(~aclwUx@Sxl)HQBXH z*YZexVaxiz?gJy(xi7n(Q4T@_Q&-qIy@T&Asm6xoCMj}unX7D%OkH8WXV;e+ZMw4^ zmtDa2P}CI`xqO#5y;`>G3frGupOwa`VOdnJ{gJ6FY@d|ScA3{Z=nl#$z2o3sX(?`G z>I&PYKRbVa1UnyQ*N6PaO_4P9Sj#Lv9^(Du`fK@cEsw+qJ1B+gwY-Cm26*>4-p%fH zaGD)R-{yG786ot-~EV-_zG{~Q@zn}7oL~;?l8>CR*$2y`$=g- z;x)aFcK>jv)p6>q{%H%TPd$ZeA{>gGXinid>8t0=iRPF5MoHKV{%+ovFy<8YtxK850)EDAw*Cgi zlC&QALte1nZ1+ceEp_+_n-gS);k@MEQ7JuZX=!O`X=(XC@Gn*Ejl^7v>MZ~O002ov JPDHLkV1lq8*vS9@ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_photo_online.png b/src/main/res/drawable-hdpi/ic_send_photo_online.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd20d10bb8c12cda30a78c6cde12a68d5fdc278 GIT binary patch literal 1400 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_text_offline.png b/src/main/res/drawable-hdpi/ic_send_text_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..0f23fdbb0404c16f87712f0213d36ebe299cdb42 GIT binary patch literal 800 zcmV+*1K<3KP)74C4 z2h73_;CjjSodITH-|%pV=d~V~g>B&m=7)TKYk^r9oao<1sdd0S*gURO9IrLNJlH1g z*Bmzu>`8!IHOCyOJlJ>KmaLFe&JS?K_gTfSO(jW zydf^zrs*mJ%O<^p3s|Zyp`Z}38L>ij7NY}lqGM>>7?x{Z01{KH!}`ifTt}M)H}hXp-UF>uL7N@($kPnPf59)gag^F4?_cO!_kT z4&LH9z7%aV=%x5T+>bAHDm_Bk%3yPn6ME8(1PYbGR*ZMm%vK2$8U&j}wLqaZ!J>dd zMX*_;Ut6qNR8Xi0cDCeiv1$YqDw=$gFT+Mbp(5D%2KF@;P$&;JE&n^Rs*M#C%7dN6 z{s?0S&>B8P7;mKVV0F*0iGo6Tu&U=*D?p(vY)Z1!k5a2Zp)73K@ZV;(5){h9hJ6{X z{IP)W|L;a?j%qvCT-2kn+Xz$f}j@* z1wDv&d#YY)57A3Kc@hdesR#UPoRj`$9y#?aIV^dPTpqcx7?u zfnr|-AJ0BPquu}j5DhB%X1qB5#kE(iZS`$+8EV32R%Z?!+8nzGu(^xF43ztSn5+61 zAUGO1Y6yWXFkRE91$;j7=ph2Oz=D<8r%CnNfoBZ?um$EVdlg5?2W_7{z(Cpii@B=* zHUvjHnlgaE2u#=X839kEnl?bd2rQ`0o*>kjOj8E{7=ihh{D)Kl@8mL_Xb|!}#_{>h z(>MRlWoDa2U;r>z_1}lU&Fw0E0LH>}&07-4Gr3=_hrn1^u;M*O%FA85Y7c<1F#n=| zR26Zd8y9S;i@;bI0MS+NLlNoCzb{NttAYz+_)`lxR@o>(M)-U#`Et{!iQ?`@-63;rv2z>-g6ASOae8 zjJOoKO6VFRB?w#rT@WrHQxG~?ueYZiQof7Z!OXC>BgCtEWw|TmLeWgpNSO{Q04gLZ z0+}ZGus{kaW;XzS^{e~aRh&Wy0G$u%pqAaNjkv}!B?Y=69Ty6&kS@uRK&BuVlQe&4 zf)rj4g+E#pkYdM9etWV|uh%Dvjbh0-#-*aGLb?>?Dq)F0h2$iZstDP=Z!Q9o{3#T! zZM?d1EBf|612+x)^raaFY#FrxVCZjV2~{lcKgolKvI30bLt*w1YG;M1CT8d zrpTZ#H(o}NEfGc_NINuDIe~1ku!Yry;?Cyw@t)j?IfHDmu$@14v^Xig0d!KAK(^S$ zs{(_rJ=wbqvc9{p2P*8EtJjz6 z_001+ECN#n1~eHa_8DZ0z>ML1s>l3*fNXnV0zh{(VZcDP7MQN-X#pqNI&(llwicKQ z%{-m9Zo_qFH~eG}LADl{aS$B9T35LH=`Uw*ZFF-{dDQwDBjysG8$$!KHDUU)J}e=p z_PjrIAX^ircFjChbGwEXWNX5VAdvq6DAKWyj!pJ^4G;Q1_b<|IJ4BU%oksuw002ov JPDHLkV1m6z32FcU literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_voice_away.png b/src/main/res/drawable-hdpi/ic_send_voice_away.png new file mode 100644 index 0000000000000000000000000000000000000000..e87d97510337824245798ac1376762c18ba2086d GIT binary patch literal 1017 zcmV8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H119nM7K~!jg?U_qx6;~L?f8R_D-o!ivAB9@5putVR2bh(Jy0ROS zh0=u&#DIxnTWED-7ou)N#I_QWt0E!=6*oRmH?9OhC@LzV@qrJzXrs1?_^8Rf^SMY! z?wz^OIg@kBjm&>H-}%n}|NS{L-|Jkzxe$e~9QYs_A1I6)4p_m$kfct?AU5 zW|>1kGeQH3H>4N<-3Vu7BllcsJ2R$TtN@zPQ8WYvPD>kSTP(L0D1RGq4)XRyVsAs-8q)p*%#8W`8!BjeBq!jy5hp;d#2hcgEg|hsz|7bH z4~njR=7m#a6Wu6xV{{DOHTHt;(DTr!S*jv=8M44Xu^4MP91iL+ zstITu3Gj|OhsI4VffnTnyfP0 z#*Mln02$8GPZI(DP-K}N=8ClPv@lK9(+lj?gERp1$??VD0DqC^y0n*G0qtZa9!rKh zt4AJ>bEah`I&07_HlQpj2=!9ME?LLRBz(iXS*D=;j8b0^zAWt=G383OL054CiuSL1 z-m*=9V@4uAKo2nk*ji*tc+P81CgDqbI;02q8lUY*(e2!i$8j!kSx&`!CUhk}OIZwj z3sjB_kVDul?L0|R-d^mGk@5s#mSF9?P502gfa*CvV@Kz z{0VeZ!BuJHq3s%+|AW>8G*ZEjMZp~VWDB=l>bn2XtYjco%rZXPFX+_RctdJzyuti? n%oG!N$pGggu@os%jB9)Vw^81DZ{L+j00000NkvXXu0mjfiz>w# literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_voice_dnd.png b/src/main/res/drawable-hdpi/ic_send_voice_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..50184ee8beb86ea31880ae568fb715a8718f98b6 GIT binary patch literal 1149 zcmV-@1cLjCP)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11NuosK~!jg?O9DsTvZr7=e~hDU=d;q(|JQfVZbJarrM;eTu@iK z5f-|0<<5;J{;W(Fb=jEcf`y4OF10JGQMbm##Kg3XG)De9V0p{{Z7paJ!pytJMFnOC zsPl&RbTIGi?sva?zH@TlyEpeHO5)iX>qps0ahD zSH}ve>~T4|yd9u!q`lk+wQ~l5gw^u4Z%Q3|p?gHz#8ltW2`E;smj{_gh0lMfmD6nO0d0mW9?& z6sDsyHjHmembkGUAevzw8L7_en44QkHrY!Qe%_CZz|A8`UV40H=J)EpV$+|aB${@T zd5wS{L~Ec`5dfMK{uh2JF(k=(AkaLUKXK~&bYb?_^1P0@xfKAHJ-2rtAwF%X6aYwE z6m>nbklS+x3aOqR0K;1w8%f`6`dHsozU{f$Og(%6;JMihjsF(PO%Zn- zf92D}dvb@Wd<)U)7 zr>DKSQ7D&?zBCSlL_dDPVd%C*cu{#gPzay4m#o+aaK1U`=i1+BdYhhJ3$tv%53CPs`H|2_T!IO$fPDi^z- P00000NkvXXu0mjfit7?W literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_voice_offline.png b/src/main/res/drawable-hdpi/ic_send_voice_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..68ce48b8a352c981177fca45bed2c067dec288c6 GIT binary patch literal 844 zcmV-S1GD^zP)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10?A24K~!jg?b*w34Ph9^@lTZmty|)5SPTIbqi6~TD<3^r_*Vjcg#qS%r`kXdEfKQ z?|pt}=6&CpXDBHtDJkiv`5%qbf?1f1@0CxXG!?AB02?qLqbhyB(24WtC~Dv$jjb0< z4K+p|&Itx{r>IMDEw&i`k88q0e87{u6Bza9kZ2}gV?_KWwC0^e5yqBdTtxghwB?;d z5ys|bIA&hnNfcphVuoWT<()(k#6Oro9i{iJ0CDd3;Ifn}&lm?OQlnuVCyM`;cf)Nr`zCsR^%B z`jXnov4c35D7B20b2A1J|;E-T0n!l;tzsFN7tZrA|A}sBaG(mb@#lZCEEP*)crEC0x%dk)mGw%@bD51;U1&9H$S@g*kK;5A#l- z=vTFbTcf>+zC#Azt>ntTc+gDSg9?AS{@*@9m&O{6(paMrTcyfE4=$$km6Vh;Fuwu5 Ww05GRb(XyV00008FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11P4h(K~!jg?O9D|TvZr7-+gZqGh@?Kw3Qk$nY>I=N+iM{1VP$jN@?adqZHA!H5nmol9_jp zizYMEH`8X`e5FkK+3gq7?GI(q-vb0p#E+t`0r2XR5 zGgAwG*Ywp`EFSCEsx&N6F@S2Nq$YJz(LA0SPfhz(+c#rY!g^eU!{7~S2uR9TnddUc z{itvFLE4k(c}M{VaPuEd1lYChvD*rB-_GT|)}Xv5?E9#1ivpf(Sb$*v?jyTz^;(DL z#%LFZ0JJqcLD06?vbfJ{9o`!QEY~75dcD@+xiKhdcRk0zR?lU4O-Rx;CpA4koxNYN z4T8YfW|8#acqV2?Ep(@nCKh`ub4J*#8U#;d9E z)FnsSqFWIZxmr`}sC9?fJX}fQneT!vsZFO?~bi)Y%(3q_Wm9&Ff z3eKFH!JRRYx$3bg*il2Mc-jr;3Tozq2ZHCPF2M8NyY0b<^04ZS`6 z?DXYk_*M~%$8M+CZ$i*frY28j#&Sp9ay9jW4!4FsCs28R2|Dbh;_Ftz>THG&0IY=7 zNwHt6HU;8hxUld=Gki^Vhx!utblWuE5RvlVnZz;;e3spkJ=yS{_!34>q2~c14v3(o z!o`wl>vyJK$mg5Ux30EV??mq&D*d9cB4`D(TH^Lno~b=WCde$#?k5c4as4gq&SaCf~gF(enX#(TNv zbLkpB7x1J}+4XT(N2q8#4Z+^^@Q^aqsun*vH+o^sci>v^v;!NP?B1toJSt$9n|XxH zDC+N1W4WKb(&Ed9zvze2US+5u0sBGR1##55cK^CSktBsbWk<6auQmAo4LTZ+4j4*a zsgBv2@8-sHXZ@_}`$f})S!^WcHU76Z=)l-!Ltt#P!S#L2Ep$j?EnA(07*qoM6N<$g8KL>aR2}S literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_action_send_now_away.png b/src/main/res/drawable-mdpi/ic_action_send_now_away.png deleted file mode 100644 index 0fdca901a5d8443e450e352629fc618bab00be46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 650 zcmV;50(Jd~P)fmYp0YQc427$HC8vpC8)npkh5;e>STMV=E-st>=T|28e&?4j$z;N6 zu<#1bear1{tm8kF0YF%@oP^PGGC996XaJL7;jxI9^&<`&aA};YmP-Qx{Fsh%r%vyi z&I|}bNvMX=M-pRKEpQHHtbH1T`(fD-oMfs%hJ9$g4f~4Y?V6U{=1h}>q7l#ji zo%q%p@y|@^yVTth%{kT?pOi1cr#ME+Yt_nu+md3F#a=l)w8x_(_P0_)IYVm+fB;x) z)NVry9SzevYM8*m-DoB~)vPgQtTuW_;~OU*#2AR-Ea0n(z^Z{4-`QQ=27rb!=@ie6 z;XEM7oG&*}`L7~ diff --git a/src/main/res/drawable-mdpi/ic_action_send_now_offline.png b/src/main/res/drawable-mdpi/ic_action_send_now_offline.png deleted file mode 100644 index 7723f4aa94b7a5eec5fc5baf0ce02de7afebd030..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 535 zcmV+y0_gpTP)K}SIY zqM@NiLTrMyBwJtwc_*t#Hxy$>jx%v=XKb!CjqUOIJa=phcm#fpF=PIrYJh+jNfV%7 zHblS`@DMpxDnvjN_;8#n1tMb%l0JdPmTRT~WK<;J3Ao&GZ6S~la1Gq2oHGM@z91o> z4ZLTZ>je@51bhL9IqosTwq}?c03hiZxX5#peIQZ54RE^$AgnpIHK`y`Ko@xP0LTQ1 z0;<3__Vets=GfK@5&;3?6*%_{NQA@zEuak?Zy9;sl0?WFU{^`1C*b0vy5n{WpjXML zuLh$M8FGv?wFH)H8%|OOIKlpy;!o57>KVbV8erd!1#Is4JBr(c18nc-(Ss|1q#AHq zR`3P@=-~GoFvKpkGuQ?2we+ciU4SzW!F^-QEX$-CfTRl0Ei-rx0JMOEjB`iWrOp)` z2W08Lm*6-cP5(#OrJni-&H^YTcmjIcKX{|HEw4UYZob&(n^h{aV zD!&ln_vTtNz<(G91Zi}=vQ^peYF>HN0D51%M=~fOTgFiV--G2vOtxGYP6mg=c$4njB}9U&$NEu;bW8%pj=DD_}1I0k^&ji>S{L}r0YlqvuN z0E$FkYrr76e~!>^ue6W;oR0uYn@hG9^&XR7i5rD`04MiPioD40KY)s+Wu*S&FX0}5 zUYzIh{zu`}!Qmc22$qQK=TC#C=@$IPM&mHeIvW7EN#hmEGg71?ZxZPVe0lW0~ z-tM)B5sm<6+>{W?$ioqUA|<^J8~S^%MiY(zP$(^{I_mKC_zhonX2v_siiQ9H002ov JPDHLkV1nI8ONsyh diff --git a/src/main/res/drawable-mdpi/ic_launcher.png b/src/main/res/drawable-mdpi/ic_launcher.png index 063ee15d014fec1d418f592424d59db4c1698a73..733e9615812f295c236c2ec4f972e8b2916fad30 100644 GIT binary patch delta 2679 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 delta 2658 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 delta 453 zcmV;$0XqJw1gQj&ZhxjpL_t(YiLKSYZ%%O-1@KR4{ES!{610;_m|AVZSSDdNOT@%K zASQ{W76V4Bgc>bkVH3ijiG(yI#Xv|%&_trg@ZS68y58$;z4s)~a=!PTbD!^hehekC z28>`C-&gy>aG&!-IF3mi#BQwM6`mDw3-1~glJttLNvKQO>(+Hr>DV8lEqaB z*Kse&Xg`CABtQQ{yu`~STbc|uCYc{Vyu|e;gV`3uOB^e8htet2F}%jQ)s|l$EMQzk z@NkRbuopY32GcEymze&S!7^s?sK#Hz-5PfrH<}E}AG}oiNpl51RpI6fZd;OH1@|M# zaKXQ=Y1~ZG9e))sFj{dxic>gI;r8P!_Ej?9jEne!J+%xzS2MWOUWImXK1ugWp7glG zLGcvbKG=yj*wm8vd!61|DKq$h3oVJm9i6fMM{`}lgO&`s1yf#8i7`CK_5lq(>2z}H z<6%i>b3Gi;U<3!~J%1K)1m~<__x8XHe_v4@y9%?ZB0eUuUS|g{;2!Q{0%wY6OU&V9 v(@t)Rp+4v1NiHY(nB;LP`=D)XDB|01o^|kBoKVK*00000NkvXXu0mjfzIWIs diff --git a/src/main/res/drawable-mdpi/ic_received_indicator.png b/src/main/res/drawable-mdpi/ic_received_indicator.png index 88ff1efb90664e193981d988003767bfd62b9772..2ba92b698ff19d1333a55afa5ab9842cdce9ff00 100644 GIT binary patch delta 301 zcmV+|0n+}z1Cj%fZhsF+L_t(2k&TWqN&`_8MbG3?T>2`r>WH_f**jUY*lc)?5Mbo5c+^rUT3ZC`54> zhgpIF=+~d_R3-_&S&&qsEO;!oW!G(Fccw94Oxj%5;4m?d00000NkvXXu0mjf_q>BN delta 346 zcmV-g0j2(u1HS{1Zht&UL_t(2kz@S-|33pEAQ2=X#=y&9`G=9=3nL*7Qpr*#9NL`A znYfu0zu){(!-7w-bgZ-yhbh+%Mn(pfZx_ENJe&4x2@@{G{2u&5th($AnOGV5zMlV* z{%qQ_B@7G<47fFz@K0kEWYPJ4;JF+ANh=V=1S*EH?YaDr~d!*|NqxpUolK)U|?Wi{Qv(ygLtx3 zFt0K9QbsmLc2foh28JK^zHfWn_ShSn1||ju28Ne&pRN6R{!1;xKZxM3d%x!53O$q% s5DF7=mq?HZWnf@n!WMe}|NmzI0K_Yr`S(>$+yDRo07*qoM6N<$f_tE=-v9sr diff --git a/src/main/res/drawable-mdpi/ic_send_location_away.png b/src/main/res/drawable-mdpi/ic_send_location_away.png new file mode 100644 index 0000000000000000000000000000000000000000..821e80d257871e13401b97d3424b71c69deb10f5 GIT binary patch literal 784 zcmV+r1MmEaP)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10*y&TK~z|U?Uuny6k!;~fA8$(Zik4pwLK(zGcO*hzd#a#4n-HC zF493n4Jo7h-XjVHQwpWDd$(;5LIn{W)~GI?%CL);N}#T;&b%FVjf&ato0;8|zy}tV zd7tO~e&4q{?+hI1Ka)fWX_h1@&JgD`9w!kR%LP_YzTz-TiCGzB>z@LtB8<@iTmp_- z>_2dLMlUY}wC+HfB}tkdl(RuI6}_j(m<&;@8<1v+ljb(csgN*bIm~g4JJN+~w+2y~ ztC3*4*&Ts}bk)5t*8S*y1v#pVq+z=7IUj_i7SKT(m70Hx)HY z5@*L$$274)576f8c4*gO5~gurKA~n>fkVDEVTo<-?ZN;^H_I$?ALW~G zMrj~Ht7%Cy(C)zVlS|HTr;=q8Ay+l$(G(rXYe+p$SMe1n<62ma_NEwpNRVy(z zq65WPG}JEWB+0)o>o5r%&R5N;p{Et-FrN^-DveW=xS``5{|zQZf}41p@XZJwYkW2> zX?=9)IJfW&x4z)vu~6As3u@ftN9p6PX+8U3+~JL}t~dx8l#B%i;=HykX9sdA0Gn2y zU7HknS2K_dvW3G;%{a5Jh54hX#UaxfcAU2!29<^iaTIHgG`sAiW{{VSxZ}nF7`WIM;#6 zuC{m=_nYHD`=Xx%m$!yqIR;Vy O0000(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ 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 jhqK+D>sZG+RdWf_00000NkvXXu0mjfR)(u& literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_photo_offline.png b/src/main/res/drawable-mdpi/ic_send_photo_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..f3e6e1fa462e8d2a9eb6f3774ebc71961b59b327 GIT binary patch literal 666 zcmV;L0%iS)P)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10vAa{K~z|U?bp9*R6!KS@sDQFB(f@T5iwQ~3`DW9Q&H4(HWI9L6NxVY|$L z;+EAggNrzt5V#vPv4|Jg${LF+bQ?D@TrrFo<4j~&${P0HtnV( zd84++$u@=MUKP&c7|vp}+X=e`+Q2;C`1|$@;fioM>iq!vf>~izcGEUq;e(JS#;XL{ zD8L-UG$x|Gj0LPkpIJPSuu`c&^EsIFxQBze{z+WN96mLvwvU7l^+rZ?ZZp7~`xy08?ps%^_iMC!l%GbP=vO!XS@^$ZL!noqt zj!FS)(Ra{{IM&g z)I2mJWZ+dH&pZ@vQ+9x}#F)V}a4RK1Do|Z02U)gW!?QNNjp&rC5NP1b0Y6u6o^qJ`uP^J-F*y9|3sJLZGZ>Sz=J#Q3&7W)X2 z>22O9zB)d|w&SXQc{K4-cn1BbIMzS|4fI>T0Nl)13+dF*IRF3v07*qoM6N<$f@*Xt A{r~^~ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_photo_online.png b/src/main/res/drawable-mdpi/ic_send_photo_online.png new file mode 100644 index 0000000000000000000000000000000000000000..0aaab38d8699c3fb1ebc81063b3e15668b83f839 GIT binary patch literal 938 zcmV;b16BNqP)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H111CvDK~z|U?UzAF99I~}f8X2H)ik0cdkAJisY7&d+g@^Oi?vNI zO)sqnuTl^KNe+pJK+;3^(i}ZC2b1RD)slMhRH1<;fnFPwIp`8}Y$@rg1SGpVJM-n> zZk(l>%xrgsf`1s8_ul`#@5g(O_r3>5`kzUXb{M)p)T0`FtE#8oXjGp29l`g{zInEt zWc*YTvo&pXcXXs~C~CdcEWDEn&HL6!=kI_2vg5~%Vd5Hd`CMn$@vdts`fl7lfc3KX z`1Raet}||jh9w)#kEXqTZ%ojS5c(1XPA+9zjXbtIYyM&WVYObJj(R-H`&v{lwiTo< zp-)u5^ehkHr+Rh6l1Zo^9|}w~rs^lra^oIq_cHCT-e@6xkSmT`eHdi?+a|>qB05z2E>^jc1=^)tVrylgoT%5r@J`)U8ezAzD}GF|5ZYNzmW%Yh8~&+B-5d*)zi zXz%gyyyZY>04z;>FdG{ADoKn)C$$JY)rvpm%sSKVgj-yi z^frm)GEoiA3}!>APKijO`z+B60SKI~mi@ea-~Oz&KN>WeA5Gi$?9W39z7vuDq~kYr z+l$a6Arl+@>*Htd+RI4oj8e&Nus&>{JNbL&KLG8K(G8q?otifZ5mn=oDT&@tt&wa+ zOASD3$f6h@z-~d=%EsD8 zEVj^1rOz|+5vW6h19aw?u~3+d|7eff2uJ3exe!R3JYZoE2;1C6u`{7Ez+|#Pd)z=cml>22 z76lEsh|iVWKnY<{P@h%6%N;Z)EDBPD2Q>Lk9Sa-5!N&z`D!3>%iVG}fquH!20oRU2@M}Hyb(bmu4EoHj&T9S4i>ZVaWFVRxw5}3hl{_&Vn?p=VZ1Avyvb>P zadn^SPkgh6;T495a-H{a-BHjUXVago^pNQwp;ZPX7NnP{U^taac@jcmL7Zn5pQSP& z@gOThxiUiHL59}wHb@Bh%_C{^E(;_A(&3$SrYuMVM3*MYp|T)RP<6)nSui9Dk}2n> zAV?IX6FXEeBm~kfM}fvZQ zi4#s4CPy!}-O@t^Ip5R7Q-Xy+4X?ZiVy>@%A;UtTrdOFKxiC=BkYFLu=JZSH; z0}BI7qabGqF-l3Eq&_K66Lm>v)&wBXVTA(U&zPMbx2%GrEQ|;o5?K+Ig;)oa*e6Q@ z6yaMOa;4C$Z5-`I!gHVZ%20Ao^AA^~9TV3AAp(_7J)PQkU+dJ5zOC4q*iY>Okz*iT zK~$&;M-S-;dID%6N=ZOEf^JS%im)6{0@4wbCaZ&ft+ekxFQ9?o>t5{VDLqb(67Gv$s|8@NWWAAB=Gm`NM00000NkvXXu0mjfU^X;O literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_text_offline.png b/src/main/res/drawable-mdpi/ic_send_text_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..72b9da27023c882d9851ded99b179ec275e86fd0 GIT binary patch literal 542 zcmV+(0^$9MP)ugK~z|U-PX-&)Ib0S@ZY++N^Q5TAVL>mX|)PP5IlJD13h@{ z1Na`kl!_N`J@gTJ>8({fc=ym!sFd}POo_wnM>pAw_=jNoyQ_qGD7 zg3jH??3f2p(Xg z2B;P+1zN+C20(McQlJaGZV+@OSSRsd2Lr65k5$E}^`m;)_i9>x;Vbs>dlG2Y+)&^G zyowE-7@#*JY!9P(Hf6o?h3kq@T8qlol>;&kRA;(sK|-1U z9pV$d)q#XmK^;8I1xbMhSk47Wfu>E@LLniufLeisOaiqE2??OPiobJ!e8zE`kQlU` g8xp7P*ZKd=9{`qKRV99>ssI2007*qoM6N<$f{GL6_5c6? literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_text_online.png b/src/main/res/drawable-mdpi/ic_send_text_online.png new file mode 100644 index 0000000000000000000000000000000000000000..86d1e33063899bb1013bbe636c846bde378a1170 GIT binary patch literal 793 zcmV+!1LpjRP)AtokxRuT`! zM6e&glR^0iUO9R5;88GoH)y8wEc7Ip?f>4&R@-~tuL(C69o;F2et*K z405z??Ojh2#)F18TYN+^*D$sPBk$5bPQ9g+Zs))G}a;->UZ0(QC4L<>3g+w(*s2bC)58MgI1Ca}w++l>um=ENX zU7Lc-5r9I$e4v3_R$Y`Dj}X)mthI&!0ljBl-WZdmrlmzPVqk-?gvy2(i&QosyM= zd?_298BOnA*v)M0ZDjSX?j>m}Ew&ig24a)!gV3hX0mWAmz97CUq*p-5em7vlTJG01 zF|b7K9~FQML}fr@5$yhENeGO5N-25sd1`g7amcrLHD4VDco(`wO9}FaiHefc{L+J^ z)u2Hi$QW}`sVMdhfFL!$bUzq!BuHtL_D?fjNHFLnG&WI;=43j91cJN`uK*=INk9TY zLMe5ToUR~&AO$If_>wBr`qlEi8-B*g;pfdpvHP^^$9koVl{XI-2Fh#0L`O|8M*T XpV2&(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10whU9K~z|U?bpwXjZqxO@z?jc(nQJ6Vqr7JLNfjWHa1p@#Oy>g zGt^`uTdXN1%!~yo3sTfH3mg6g4Y6VTN-RW@=0{EUSa@7_GM+o0JA=5N)#;q?_w#)} zr_*!3hn8AuPSLDE8njMT2gp2)Zliw$C=FU9>5+6!U+_T1Ky(``+rTs@cR8k9y7Sn+3k}lBZXzcg#>w<}f&YAI=&qd3GvmjiL9(R78R-{S}0Ap6x z#^Fgrpi~!=)#X;}JbxKzd|Gc)yV;}LsN}&<^TPe;^`Z{$dsncy_+tuzqR%_L0u@`+ zmAdHDW$g35sAl0A$~BC`lBLG&#Z`zs#&I@X)Gn--Nit93 zkmu8~Cv;(H4m8}TSi_DnC86JOVFRcda>VUW{3lL?0Xro-@~Ovqoo*S#7su+bnXE;5{w@pE8OJ5{*IlkHpqBnQeF0cAk&MiYY1aS% N002ovPDHLkV1kFOG-Ch& literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_voice_dnd.png b/src/main/res/drawable-mdpi/ic_send_voice_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..ef25b1c4d044532378f3ffb64b0591e73fcaf403 GIT binary patch literal 774 zcmV+h1Nr=kP)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10)t6JK~z|U?Uzk!6Hyd~pEHwS+C^#opiN9l$cHG!`U`Z^jVnPB z>_6~h*L!|AMrlD4jG(J54LnQbd}5%{?yCq(Rb|bV5~Z-qo2q z=Y7vRXYS0s7rN-8Gf1Zb-%`1(2RQ&6oWTXB@K+2~5{X`<_ZH}A^SD7~EM0$^s8rU& z=vrY78R@zGyP2Axjv~D`!|H}Iw2;i^EI7Y^hF+LY<+6Xwki9!+{2;3NFxuf>nGg#~ zu}yGJD})E{{nCa8w~vVL!}uDCFFW6Xc>r7GQZb!wtWPQ%Pe7(y zneo_qR=+H!(=k*o);Ln`Tl})(SJQV60f?9>RqGDWAKkWZ0M7wZu3H5r%EM{|s7nO50QJqY>b8jTzPplwI$;?$$t^la; zIpG!_1@YS2!mi|UeVbMD0OZ6j>7$3dOfEWZtNg`8HU*4}FaluEm1@;`m|t~%1l4ML zPwk#QdqQ;Qo`}W)6jWi(68$7ttFk#`$0UgaHUv)vk@P8~}_xl_i{F%=yZBwjaH>zXc!%Cu$V{q9$KAar~# zt0Xhm>Jt~y$%H%ix)Z(5*D?{)G7gDf*n{FN7`J7Po}-Q~&?~07*qoM6N<$ Ef*zA(0ssI2 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_voice_offline.png b/src/main/res/drawable-mdpi/ic_send_voice_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b2355fbfcd7f98992f17245e88ea33cd9eed7c GIT binary patch literal 575 zcmV-F0>J%=P)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10lY~>K~z|U?bp3)6hRor@lUh~+QgS2f);8df_PTiX_LZK7Qxaw zSXudJXsuY;SSc1(Hd@<>7ZkxnG{RX(UI_RG;#tfbPEPN3Z+0UF_Xi8l%slhVcb}PM zo~2QvY8tB{#xYDqdl5@jf>i<9g)3=b7T2Ji#iT%0+Q0kM;UGH}s1t_g;T7CWPA@iQ$?SQ#MU#1A?BbK9m-sb!1 zCY}#~xt+AfaW2~Lurh4HGWF0WoQZ*VClKF-nx~Bp7VrR%;#g0YaU$Axqi-dk4yG}Q zBSKbRCF5(t7B1O*KE^PI3$gtY_lp)QTQM%+tWdU23&q!aYz*)}jCsGdY6Um&t!SZ9 zYU+KshJ&%)#T&f9YV6yKlQ^2h?%;ajQyUQB99_apiMd@o#yur6lMB?-WQ1x78SBOA z;)8JTp9o*+NUGz%Yz`Nr{ZRPQvQ@`j_G5sZrEPb){&oFxK#jJYegciCOcKmKYm@*0 N002ovPDHLkV1nJ7{l)+Q literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_voice_online.png b/src/main/res/drawable-mdpi/ic_send_voice_online.png new file mode 100644 index 0000000000000000000000000000000000000000..bd0e1f8702dc20e0c5f400bfb7f16d4d49ece480 GIT binary patch literal 788 zcmV+v1MB>WP)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10+C5XK~z|U?U&67ed2O=8jD<*di2(a3-C(Z;Kg6iE-|Dhd#)8 zR_C7cKF|Bym-pUt4%AUcZID_8oKeR{Z~#zTH|{3?ilO$=_HbCjgCg3qeO^^&*L3aC zQhaGGh^`50XusJv^s5;F5$y>RjtA8ZWXK-39fjjNt&7nU&ZuMmF+))7nF>(VSP
ymZ<*%nM zr&a;-ko9{Lk$h%z-0`5}U{gcG2!JO%OZF#U@5HO9D=Mp-V=HeRF3sm9;o}D@r=^&X z32kw=Y3|w(7NxU|$!+cIZrn|(%IuCj)pzqlsZ>eEP~wIfLls}9q9ON+`xW?Hh?G;2 z$w+B`%C=-5swXq$%w)c=Ki+&SaO7lRNj}YAnqRJzvtkbchIzg{CHIzVV$SW0kYmLQE4rb-h0S%cfd`Ti?{FFM@=JrKsSJ@ zE|WF4-C_5eU#_ap)Lr+wT60ag8-lh0peVv3=$v9!3S!*e?bY4_@5g)FiD)NR5FWh1GN3}Tu-8!5J=ZMK^uZQ-Ck+#ihAgFr! z#fZ#!mb@)~rMp7S_p;bn^jxWN(W%71;>%j}YTnC4#49%rihpi%tsAQ2zr#-jpxJ(+ S34Tui0000 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_action_send_now_away.png b/src/main/res/drawable-xhdpi/ic_action_send_now_away.png deleted file mode 100644 index bb999d85d4e128d988763034bd6735356693c388..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1180 zcmV;N1Y`S&P)?qyPW_8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11Q|(0K~#90<(oTm8&w#FpKrAZHui>)Vaz35tb~CSDFRJs(u9IE zX-EMyX&mA>nSmw^X@dC!6q$)6hcKR@`82)QZYD&CszO=rBP?XRW~xOr1ytlZaQ=wbPNj&ZfRbDy;A)@8OqGbHfCus} z$N4Vju~Q);0N@|~1`cu_dj@5d4O!!%d}zHhPc%mWKuK;8@X_FB;wgvJxUD;udhG9ymRM zUh0fMM4EuBz$KqebWz8nh+Y9@IgfDNNAV-5<3U8PfZt?+=iGN$G$(Z&is%&pP?5X9 zl8b@^BkZA6ZHq`3@JOx^bJ1oYYgiVME?`4GMfuuB0cThekuIPluM_aYFemngu!m6N zTiqJy@KgZ+8*&fjF3y5yCMyO{CBz!kvITY|0!;#C~gJNlR8D$lMmJjjEOipP&2F z5fNSx&>%qDZi1i);%FKv`zZVFM!*Akh1Xc*dD~x=wza}6ssW2A1vgEk5VJ*rDmV2R zqqIciyONVz!8>aYy&kp3dIW zW6q&maMqY>ge_iX2RCF3XiyxZUA%w#3~tC4AQY`N<%68T4e0_N%PHW5jlP^SU~oga zfJ4p<)szpEZH`f8Ww79ebOAzK z0S6SlelwVbvJKR@rFEBOdIba{-u^rVH}nb^)dJ`_xS>l0v1gBub7fAKzn#Y
OwbU-4&*8V>s!3~LkVHdy&3vOr%SeJk|SsrNqPiSyMQ^0B7p~3N7M=HB0 zHP-Zri^hD>6!0>~2cRhlZZK=W(N}<`EV!X5pulqG0yw3?4IyP&O8uWfVVB1A1~-HR uUEAM`1UH0eYyQtza6<^h#FS?(xZyvATHvM7m0EuQ0000?qyPW_8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11sh33K~#90<(oTm8&w#F-}mfFwuz4?WD>`YF7fIDDLg}<2~COw zW=NBU6hM=P3?V6?NdrybUr_K5_yUoIYZLrKH!Z25|Tz2zPd zkrk^{^`xu_Zl5nsn-m`Gf8wNwpopN6D?S8xD&z$#o>JB65fwoZ!FINE+Y<8!yl^B% zP(-kiFI@FR-8|%gkrF`>K|Nc}lJZTD14lxH0)U_EOAQKM^fFM$LQ~{!Jzu=HnJbmz zX)k^#A^?ERT=|ZIywmSQLRl4IHM_C26j^r(&=OG37C$2S$x$a9HW4iWkLE4~#x(Cm zHSw^BQ0~s}YqJ}qG^3iB!axCEHS)##e-H3EqO}45pph@$hj1>YO0|@*a&Ev@M4N!E zT^htT=820Gs$dKIG;ajAlPLa15)#oVVCKD3 zCiV1ToJD(rtfjkZ6CCWmP5wVEw z0y5d(v6;(Fr1r)%)6`9aDdQQfEHxE11sbFlu^Ql802oDvh*(dH zRQ8MLS-@fWh4ely6egd&P+IxaG)-+Sr|c_HFNN7x!jOukiSD$Ch)qB*)Pi7qe8<-+ zt@NJR)5@bZ7E_AUR$huCp%Ba#Ew!;mzkXa>v6`f2vd8s-><{h;74SGWf95Hk-+)ky zf`(87GLcBP5n{mw&zS0LV`Z(|^PzkC6T5Q>ikCqE0(Ubs5L|#U)oe&`N2mZQ31pzQ z@x$SQhrQ$b2^C<;fJ5}A_Zr;MRlwui{22mM(X9T4q5{COfz5v+uyJRceDg3sz8o#)o0j( zJA456kyLjw#kqbKz_12)_yBMxQ@TJ(x|e|>ST>$l&9D8r5>IQ%-~)hCCXhq^ZRDr~ zclZEcttuR}{6{Ug!v_FT=EC;>Q4Q|!AI+4ek?Q=PK?;^V&#O+4XmE#*lnMabdf=o4 scld^;0O5%X?(hLxUwJ>BwBU~a0PdOErcF6>-~a#s07*qoM6N<$g8wFw7ytkO diff --git a/src/main/res/drawable-xhdpi/ic_action_send_now_offline.png b/src/main/res/drawable-xhdpi/ic_action_send_now_offline.png deleted file mode 100644 index 6da9ff7bd40abf3ffa2437cc91fa4ae1724dc695..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 968 zcmV;(12_DMP)?qyPW_8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H114T(hK~#90<(s>1)Ib!5zmph3$VCC6NL;m{0E!eq15FwzNRx&X zK$8X}1O+r{pb794JWF^5o*-8zPmu~!%${V|J9g~dnaQmENtU9lJ#+pqGvoDSSAaLb z-z>}aX(0(9z()}|0RFU1gaFTg^`76gN`wH5z^3K3R)~-+%Mg(*V5Z=lMvG7Z8^H28 z=QdJ=3RnTwDqhnl5h~yg@TKOpjS!&%CV-#7)DUePVnpn@EiDX^WtsUw~ zM6ZCCz$*uBj+KaB0ZYIqhi#9Ah+Y8+@C)$}y z3(tL~L?j|F;34onP~RyLh{y}L0{j3b0@jdX7R%j$eV)=M06;{(0=F-qmXr$+VH2^9%~o<0|GqPqA=} zxoh-^s4bu>A~Ffg(l4b**d;GT*y$7DO+X#GkKuVKHd!;c8&$`^cF5;`D;Enuts>I0bCSEHLS-4huV&DR2xmSM=`Aag|V^=XDkOf-8jrMC3ZKN`I(n zpA~vy2Xh-dvb|U~0v-X6y_6J&(%?#&fF-x}1fx=LrAY#61y`&By7PbDMO6V9D!5WK z0`3oAPcU{dtNKvEl_CK#4}T}Ym2nc_G`KP#Kt$$%8!kH;5ih|N+X#r|ufK~~+)|&N z#3&$0a3v-IL4zxO0=m!TH$xV{1qD~~BcMaLZLB@a;+6*L&q`iEh~Xbaa3!RGsDdk} z0=kcEXwpCv@);-+V$0(h%6tQ>;R8_P#J2nrhI9-S6Qk(%p|DrBtdnEO zd#4xwDvhMw=lTD%yEk${I%V(Iv#@ zdhH%jYa&uQE-Qi)k0*wej|UBp91{@~5kzy*Lqbj^KBLb?P(&~}7v2zH>cD6AsfZl` zla~eYwL^{QGZA(RTp;ATmPYo82#N^!h$^};@d$#!Rwoc}T_~m1nbp-a8cZ9C2ml}| zMz<)EZ+D_z6;Tr~`OCy-;_>sNPS|TAY61##g}|VC&(*}eB0||4=l(kPr;t@w6B80B z!R=@^x*rz9(AB)IsjUD2h-Rbvq>QCeNQ4`rWU<>;M4f=J7+zI^D`^(&HW76K3iE|Y zW2!S*6z&!gbpnEg;KV@e|0E*nfH6)H;f67$RK8PQ$*SgF>I48lem4I-XwGNdNT);6@h34$4@a3eD+Js$VoK$2%ggPIPZR(ElXKCJ0y%S}?lOenX0;6wO$FrV@?Qhy zV<+8ZNUI{63W(;SPYLgs12Yg;-}GYS`ge+VoFO* zL^Ku9jFD#}CkOu?)Kt{)aGIb-3{4sh4;nGGAv7uPKtLxc96*DYin6$0M9TsWUGN#b z@qfmLlv0|YCaGa?8i+NxyP^PSLUO4zk<`~d5vd7igol!ib9)g4*XhTAI) z9yE=d0^O`CDDuzC?FOUuuJ!UE%>dY1-B#$=*9!kb#P0AfWmx1 zL(KawiyVctf?FC_fT;v~em2lCsIa0cxzf_zrHwS}Gzf^{b#(t{72J|^26W{8KkML@ zIsw5#a3Uw(xh%iO=~Qq_oq&PLz?i5wllTNym7iN&y4jiFmijHgIQ8Y zZrO7Ns3Tqf_gZj^4`BP}^5>(mb_DclaElKB;rZ|bzznoBlB&!KOE2!dSWBg|jPLNa3lI8xMlkcU_AcT)!%2qEj|Dk;aJlPpgs+5@xv$Ku=3IPpFyfJ6-zI^>CfO6 zUk$1NvDv-nm;|@@h%pY}*af%vgfZ~EC&w+g<$s?D*#5u^1oQv^002ovPDHLkV1j+> BaLE7w diff --git a/src/main/res/drawable-xhdpi/ic_launcher.png b/src/main/res/drawable-xhdpi/ic_launcher.png index fd9937f1ad1c63276dd8b5cdaaf831895865488a..c9e48859abe6cfaaa501ea4b9070da173b16c399 100644 GIT binary patch delta 6323 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 B-aP;S delta 983 zcmV;|11S8n2)783Zhy2%L_t(&fz_E?Xcb2o$A3wT1c@}>HK{1JDhQ%f5JkaIdjauM zM5LfT2`XM*6onSNy(>QWB8mw5RMCpq(pU;2K8WCh6)dHA!Aleo6f{OnO#VK6=fuf$ z_ng_y+0F3}%h~zno7w;W%+BmL-_%IrQ^t@C`Wy<32PPDLUw;FSfhWL=NzNEd98q@Mf(`cro3j-h>g{P9X zN~+INK)s~Hl6opk-oB0X3O5yym3%cZ8?55D*YY!0=Nc@ z8t`h74u^p4rGFes2^axf1*TV+R8njJj>T2R38)9!fUh$ml?2_`cji)5Wo=BO?NkSO zus`z@Ff6JvO2BB~rz{zzKnt)Vsv=6jJ}f+_HtfP;tA6kWOaV6LLMJ&If!)5*7qFUa zBGgLZM?8MMfFJVXk_sb%R@dMPXa?ry$tERMx&>Fj5`W_3_-ev3x8Mqxnlq8K_#9{` z7HYkUP&^Ctdk*vl_;mp<6Fk4Uc;gC~7|`%PU_LMwSODCO@#_WFVe9r3;CzWbk79q` z1Yl5B&vP#4=~qj(^;OE1(njGhZ&LaMCUK(SPW<9EqesCve&|_yW#iYj(BbEMCar z3+Mp$=0+zuPWXnXv`QV80-uowqXg)|G80{{F=|uaLrex>kWmNB@r`kLp*HNpR&7}1 z8{!0j3HT*DE~(J!8_Fej8?cn#yo?AXMF*C%eP1+`8Ue5n`y1fb3`r$HBi=kHCjjh} zaeoz-v8#qN*?#jNL;x7^{n$z5ok}xGh*q~yZVp7D9$1g1`I^i4W`S4OJm`V&5pdBB z909%rHUobZY)SDBTdubNvw)w0djai+178&jX+|IlO;}>=TP(ZLjAa>`FmaCyS39C!DbE!B(!4@R@Rsx| zS39s diff --git a/src/main/res/drawable-xhdpi/ic_received_indicator.png b/src/main/res/drawable-xhdpi/ic_received_indicator.png index 2c8719337380416ddd15afb0f46924e90da01ea8..cf7c2bb8506349e960c06aa6468f9a4fb8a6919a 100644 GIT binary patch delta 618 zcmV-w0+s#O2F(SKZhuNiL_t(YiM5nZNEBfh#((e3q*>6_LlK&@7A!5@ItfdOLKf7m zK#=Jb75|!7${!j$DYZT>4qDxvH5U1eGXr~EvYW6_EObgl&v_6*m^a0XS-SzYpV;M8@P7cbL%|RL#q%(S&7H!- zec>`MmwPMF%-W4iD_ojzCf@Jt1bvv9*`;@gH2KsoW|?(0cYY zfrni6vTDDm^?wmKl9v_?!>pfdpG^%^%^d)Fx+*9%hk9xr160SW zD?xAj{HmUG6$^*_8}WAzseYi*_h<;z1fo9egX_3W1SkVwxN|tWVr4G_qrT0aT@MEp zeH8>=2x9=4x;iy0S)&oy^pgh`mgblGOAY`S?--x)(2KzDf1Dx%8~>Dn0|1gv@~aA0 zfZRI1=H3K_!xsOd+IVdp>NyIPh>o~z$$JP|O30qpA8d=rV(*>~Pyhe`07*qoM6N<$ Ef{GB*_k}yY9MLw&(q4{w`{2 zwXJ4d`|iH?d%ySjhky8qbB_O6;&_HRHaIE;hg2@v1UE^PuYY;9^Wz3^)w}jhTsr9> zNn`;4u5AzjRl%v$@MK@&apX~?CfFM6F*ISU;cA__EvMAF-RRjs@=f?* zc&)$H-;?Sa6MsOhR_EKwa*vTn1OVDsZ6MSUstL3O`bK**2G}d@`N~}7f{-gr0suX( z$HPxTI|4TX9qIfT1M(KFu_soT%R-7w#VX@S6WKs zBY8{mic$?kBuJ%lqhJxN0Kge%q3%cn@8Stl03uz+j~83Ci&O0jC!Qpt35LPB%em8{ zN|nD(pMShH(CoW!CL90+-#OofXm_O95R_u2%C+0wL_~sfjdQxSIA?$ALd=uAY&IMK zh;t4qBBiiq+8ueCyxbThyonw`q#-e1nrCQih;_f;+grvt*G+!`0PtQOOLWCIvjO(P z7+9Q^nW^CbpnYanG70|)007@jpFj3ITFr*pZ*K1i0O)Z&8hR0GPB$|J008e*@5|_` zNUavt!lRAJ0J}GMd+=jc008iv^F2tsjn{L=wGn_%@#~p}13xY~T{$*7RwzZvYO)D) nv_aPHIq7NOoU?HQj8}aFy&oEU62gO$00000NkvXXu0mjf*{*1> diff --git a/src/main/res/drawable-xhdpi/ic_send_location_away.png b/src/main/res/drawable-xhdpi/ic_send_location_away.png new file mode 100644 index 0000000000000000000000000000000000000000..0a5f3d54e3a713bc2e591ff29092641d208bde57 GIT binary patch literal 1507 zcmV<91swW`P)&DVPUNa7!#x@5GxvfC|DST5-GNn(s{>4huXnX z=G}YVJT&v!P3E2Nx%2IL_uYH$E7Yh_qehJy|5YT7q}oe{ejX&?VPGLb18_UaECdBE z6LA5d0GuS?Cm!O6EM>gfW38$|+Cd{%SPDD=%#Im80_>$oudLxW`_WBLRSeQiG!n8L zc+5mlI7mHR@)9Ra^kz(zAeyJ1dsvRrgc6vF2NY4hMA#uYu9#|1Au)q=GYy2SMp>9t zjuI!h%w~C=Gf9XiVvug+J~FfdbCS@XhGFV>TUK(!TG-qmZR37I-Xvm{wf2kzj8fz+ zY2lcytRbb_YJJts0f?AI$a>w%JWE+KgS4GGLS7}R+HLi3BIYp8TFp~$C23hf&!aRN z>bbIj2A;DLGcicFvH*D6Ldyi9N!z*CLdvFsB3>jSG|{pkA|$e@B5#AVgGM5w6|yD5 z2+cZyxh()opMQIuo@rOgyY|gSIc2t%p5r_FCq!2r13ceNO*4_+Q zrrWuz(#y4-EOk8Nl&i?EPH`pDF$m@`LTe=^X**epw0d+Zy?WGsd$BCX8DtEcTAcG4 zC9m!55@&H0PA- z_DKsHeI)$*K>>XfJq?;LVlg`T*@l39{t~`i-~c3d^y`c;hH$`F#@irygJG2Ke09u; z*ef|kd}VB!_Vs*aqGL%&uZ4_>L8UYC6Bb%VoRAzxErje24l{gVrsa#;jm6HO0rr+& znM;>|GxXZciDm{#o(OJ=D*9Zy{8}7Sv3={Shi?#0nQF#CDR2khT1uK4BwZ8<>9*92 zMM$ShJ9j2*D+rKP^bzojwQdC*CCB&HqUHtxP~=mX+&EMNMfq3~$eD;i(!w!>o+PxV zMd`7A_3kRkR1m-j-2|LZO#dpvpM;KwiWQKULDI@4luwe`yF#a!^*$mzX{Y8w5beM+A%}pgcy%2MOqwk+?y!lJf{V%!NZbCFgNUTOr9;5I{3M z1pHv87jTH?>O3W@VvvAxnfHMU267jHjwIGR(@~uY0%RRS1ay@CVa`zmC1jiAOpLCG zsu=_zIS!#--NznjHoR3UpsEG|aE8x-0f)!|3Upcz=SEcBAjvaE#Ku@}iv^5Q&t}Op zmf+B?lR5=tH3cHJRx}?8im**yPN&b5ia`LfhW)^<8(vssmo%q$tdyET02Js#`EiCT z4)b*ai_93LYLMiK7^fYkT@jz-3T>ACWf#(|AWG|_aW+8Nj(n61@5nla(i+!QQa1=d z)^dt*-Xoxh5D~FOR`Gk<rD*^F literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xhdpi/ic_send_location_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..90ce346cba6998bac84fb5c14333932b053eb85a GIT binary patch literal 1721 zcmV;q21fabP)?_iqJ}-KWIDm_|UBu zD0JuEGrMZ`^E~H!PQEj9=iGA#C{w0PnKEVmt57MDGTLH839lKB-VC4)%ry+P5`<+0 z&CKc^L*G_J*8yaqo!=9_nY~b#XK-ppA8fqQKOBX4BnAy^sBehJV|$5F9fkgb zFnByp^v?QRIwh?wZqT)jEsgOYcmu#PY3(JLnsJ=B>j$r7Bt=Enh5k*OYASTF2gNrB z0G3tgV9)USh7FRUVg~Wnt?`Q4*lS#**J{xk7}Y^s?e1x9t&q|bGiYdd^c7;Rm(sJK zcGc+Q%Ti(@2IZ1Z*Amo=5?T@{r8<1KaifTqgop!vm6;t0EeV*}0V$EE$l4%3(NND~ z9kLt@e$G!cSikZyTYjPlB2F=ZLLPLZxjrjgrukY4U*RJsT zZas+P)-!0lCYL%L zHm=XB`w_ro*f?U;gpFBBF_6gFY4Zx>gBGKl57#`$2q2C2}=iD(N0 zq4#ZFXp0eJOV~J*8W&>s71Ov8K8UNlWYhMrQO(K0=K+LXPZaCxVPo!#w+dElG~Oh_ zj-C8V!33~3#5WK705M7z>H~kbydG%eESkHrE8r=a|8?>AlTS58zWi~x|2xdBG zt6@D+KTB2NzE`Y)AfX(`B_p^)Sz8J08O2enqeT|sL43@ zafliO0Paw_8=x!Fx=W#fbiz;lDy=JS5CF_L>Pr^eFf0uN95~JqiXdks2GtK<$q>=W zD6|(t6P=X)^=_U>3<7`vQ=I^fM5VugKOH?`bf{Pekr`B%%S}S*FQU@_8;#E-_FRu5 zGJ^oX&1TMla6T%14Z1k@QHYL64FZ4w_dW+OC9TVhX~pVOY262j+@QK#Zp2|eF0C5_ zA9ejJ=BKm;61hPDu-?y{1o$^8JpwMxX+}>`3?hKXC)LNyxNWP&ggcd$d?<>ZXEBOm z5CAlfq{bY@hin>12AEkLUX#gK8(ksyK)Aofrs67gu(hYh^pMh+q8kJN4Fdz$!Sqof z>k$J?iVr`PyuXd(7Vkesj-q3mZ#(f z0l>!WWj`SOJ`n{B(i-Z6S}&C=bzT2DJh!pKa~nHKT}PQRWy+K(^Z(#4@vJtOn{pgt P00000NkvXXu0mjf#aI$L literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_location_offline.png b/src/main/res/drawable-xhdpi/ic_send_location_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..114ce01be585454bda68ffec9001ceb059dc798a GIT binary patch literal 1278 zcmVVZT<|Z5h#P4nA}%~X)r~|%R3n~}qS6N~O-n6()GBSayIs}eVs z_%m30jG6}Z;Sp($sYyT9;$RK&IW?~F;Fj;MUp|= zBE+Ib(51L5NGpO>xI98A%Ag0-TM=`ZgZmr!#uP8VLC>=ppOS|(N z_TmZYD5EvW_bu#^cJS9pt5dto#kV+;*TwQVXnAJbF+6Q%9X~Si?D5RDuE~r;xk0&0 z={oKGsz>lnW?My@=5RrKzh=bDFKDmWpfedUC5Lo5u{oo4j8cPgR+ip^_HtrR6tq`tP)_65%FDlc zMq=BgqXr$yh*=d^k9Ae~4yM2JKgv`Z=?m@V{6XWPX@-mJbCs8vc>Um^|Ks4%S$;-J7eG18zjX2&Rc zSK$%Ic%rMmKEu9X&2~6|FCqnNl*O$J)@+A21&$u#4I*XMJ1gi;$8LNREn34Mc-`ce zfwgE!H>lxl)~d)jDjiQOt)%~N*5l(E!nH;aX)X#cs+@%1uLGWC>HRd$Q~%Yqi3)!_SLO_%N-lCFDl z6Ug=WAg(*p)6`#VJa0%Nsa^I;o6$z;gh9j7T~#~PVnfn9VZ&8=bQU^Q9e)D*r83>= z=A#y#!}qm2H5r|JePF*-p|)(A=ib-wyfdCozhAKfSK;C*zW+{xOZsGV+Mt${4c}zq zYvPCTlsem#8PjQlNcqt=DL)#0H)9A-$}8FoWi}W@%8vVS^T_A5I&*A0f!SgZDTzEO o?Xy1ba9_G~>C&Z3m;V8O1B_bC^Gsi#r2qf`07*qoM6N<$f)pT6k^lez literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_location_online.png b/src/main/res/drawable-xhdpi/ic_send_location_online.png new file mode 100644 index 0000000000000000000000000000000000000000..17204eeab0d054c4421f966b1f0dc38fbc78811d GIT binary patch literal 1751 zcmV;|1}OQ7P)Bz_BV~sS#s>6a_;m(>qgyPAyhmg+7@%e-~}B zK!LgEoI8VNe%sFX|GxY0z2|)A0hB3Irc9YK|5clv*Sj z^C_ATH36;9ipZc4$3gG#lEf0fb4_Qi*tHhbpcU=0+MHHvAo3u<1;L_a6y)BV(!2XM z_x%x0g>z&rMv_>2tTsxuj==pc^hi0#2){^gOdoflcP&CSXjRLqd6U&+>p-;@pmHis z$wTya3-zsEb|t$mIMtp-Xa+6awzMi5^|nAz6IPCCj^&`Y^)>dL2tzy+gYIjqjpZ3> z7C~hg`jZ%+HJwVfN3ct26cT>fPU=DXIuCd9Zzyw_42QyG`CPRE6%+m=@8 zT>gckn*#uX`8t<>A=VbV)1|EEN~pfIKAQI~ya>S^t~7%pf(iv$aaaA4Jwu&Cc^8__ z-k@Rc^ivepy3(_tdh+hECtZm-G3eg5d#j<t~mlnnNJ#O+;VyoBSWHFb4qEBcD#DcSkCsEd;VAIfT6V&ze8tCb2VE86?!p z4MT?`6Va_b&-9$U-Vb{=^qh>$i*6-x&LmMTr&gH6&0u8^L8GaZl%0i`GeggYo|E+O zl}RpTxmdO|2!Y#rij4TT_4@ccu}grzfF?~FcdtBH<{)GYz?C5;4$W{1%-iQMZ{{+YG;sQ@R@~JY@Cl0 zIF`cm#`$1rkkTq}aw=Jgj^NuY4J{2304syW!Jx+3SQ(@Re+7@?g81q9>Yz~rRmUEN zAozG9dN6RzEbOLv(r9~A1WzpgVEOHZ{yx!~Sge&iZjy_Xqb6}PSQ!-Yw5dUrxycL7 zg_x9RO)S=uGd=(?t#JlBgDMyFk(e}z72xjN#D$jlj`*7C@#PX4S{fqpw)i7j@~?=< z5|bPxCL@&#`b=VH)oI7F?eS+JsJ9ZC>X5r3(>>DEY_-y8%(+yztG6lrwvB}Kevk&b z6f6yzGNS(C|I5)~6g}Bzt6{yPc=Orw2MC0A^lJ(QlcTxO1GYNW1|59q#E1fZvDI-- zUiJd{Sam;QPB2EmNJ`+FYLdy}y{G^|DA>{1fkdSX&Y1!hk7H0*T?=`Mk!T;terEPYZArW?~;Vd(=Q8w3FJWa48G=ms6y+@up^aB8K2S?o~H<;nlifx{^m+gfZtP1nWD^+MKK5f zF{a)JaMoIgIG59GM+iO7TolV7_|N&ndChi+#e)ebP&+cojJ45)QZ$1AAd}4ePA$f} zkEHDCZR&OQsTM*}4FZ6Qfr`&f?i>=xR%9zW!l>z56#eq|Q0Gv7;bV)sJ*6IkAX-om zG46Sh*AF)zJ`-|zS5Wjf2mp?5IXXy6TS4QIfCBC~vgt@k_L)jz5CHf|f4>mlUhj80 zhi_9&nUWnVmCPUjNM+Ms0628DzZ2|9-%=M(~*I^*6)In2SfwvJ-^ZKFLhlv t9Et69YZKe+)|R@CGG)q?DO2YE!9OhZR|IIk9*h70002ovPDHLkV1o6KJ_G;& literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_photo_away.png b/src/main/res/drawable-xhdpi/ic_send_photo_away.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac674eacd40034f0212448e036e4f3090e06401 GIT binary patch literal 1516 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 Ri5CC>002ovPDHLkV1ma-DUtvH literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_photo_offline.png b/src/main/res/drawable-xhdpi/ic_send_photo_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..6ef1e16a95c1d685102c17b13b42e71dba39000e GIT binary patch literal 1247 zcmV<51R(o~P)?M7By+u<;VlR|Uy<4qran3S`+lwBS3A8zR zQqw=sf; zg$-&YR5fg;u?w$QxHz*pftT^ljLqy+F@mP?Dh?#H_W^zr0&!Wx##IRPo^o+I1SfnQ zE}bbG$9IDBE*dEZFo2zDni(gzKnL-DN!@p1hvK-=Nny0?6%R}7#?>Za&e7exa&6ivP zO$qCqRyu_se$OIo_Tq7Ix3EX1SuK}9hs76x+q4&Bx<-gowK6HJ%9E2zpsxz*8ctw) zhxpWfD1q(s$T@;q8ImT;(JSQJT3Jye=vbsI)~UrZ6e;^9q5USg1UeNd>rH4sX6w&{ z_M220LP$BwRI(2vpFpv6^F%`Xu{87Ag!Y@{66lIZ*=R!hu}NScq5USg1lkZOJ0i^i zg9%|HJD)n+CYL}PBV}j96z#HG+y}+#Y@1vH6|H&pVyq3jN3lOr-YxAiqDd}+I)oT< zD`)Vc#X0N=yo7%v&xU0RoaLP6?-JjAAII|+cE0c^o)eD_^x=+$Hg3L@o$k0Vf$e@F zXx7Rpe2(9RfLBpwa{}+;HSvXD1CL5`$YNKlFn2_86YdclYb$4j^v{UkKh_JQfiO}= zXMSai!h40&W!b1ACcRVGn-#^Sr-dcJLN}YY;{G<;H7}~zYBYrG!voSd(uNT7$ez)l zy2RnxP7UAI=002ov JPDHLkV1lS?Kk)zn literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_photo_online.png b/src/main/res/drawable-xhdpi/ic_send_photo_online.png new file mode 100644 index 0000000000000000000000000000000000000000..f585ef98c35d71d24dc5a8f5506d17392acbd46a GIT binary patch literal 1755 zcmV<11|<23P)4S!n2tJst zVghYqA`udh2NDXcgb+|4NoeE`AQDVix;2`BL=%k!38HBGCWHi^NGdzqz;@dz251{? zyWQP;d?;w0o!Kqz+-*zd^Rzkl=6lb4cjn&NbMFEk9v&VZ9t#yJ)(Clp z({w2I(Do5I(#QAfRdtVw6fLj?_eJ)~Omp zi9!0O`buK{keHXK(6_LtgvAFn9W|>}h!>m}8X^t;VGK8dm0hv^fAksGg94 zqv5V_iBlIxgN8BO_)MGg1VZ&dED?5UcAlh3Zc>oWyo8B1JGD6)M4(DF>C8hIRZdNL z?jV#YNoGEh=UR*MTWlfY8B_qr#88Dgn7G)`h6#g_{F#iSs{dau{0$9mDHi&5h z0Xo2Q@?{p?ASO%z^dm-b)jVvD*!3}CjsO?|5C`zReo8M#8Eu8&EyO4-X1+x=h(R|4 z7{8G3ⅅ_Mt)Tvt-qF*fBXDV~M<@Q4WpBRx)6Nugc zsjrBtf36vftT=P0CH^gDVa`;=SZnWPus8#DMK3SP?;w`+joB8v;n<-aB2*dDNl-{I zKL-FZOOIG^Z}0xz7|7m)SZnNtepX*i;O&Z12cXy>2HiB<%B#WGwjxftx`n zpR{4}i4nfZ&qh=m<_KL54hDbjZqF@Cm-fo!jZ2CMiCR|J0g1R|K(hrX()&EiVdEJT$4jd=& zi__L3R5N9d)t#SIl*=a zA<#5?anWqI$3_CTX02_55`%~+W{rg^LwbP;d79!_u61gfHJnNF!nuQdCBFOC7=dyw zYQ|)sTSH>0_`@~*sk$me*YvF!%NdAxxm)@^fgG)1RdCcT{izhKgg`{@tuhX8*D6qA z&|vl8B5N!Q47sJB&0^RZOZF!hyQM!BB?e_P*;UpUXE^SbzTF}q|B_0!p4BY#J~phe z-qv0d$o=M@UK~T_0khW{F7Y8}OgB)o%rkAs4T4$Hxc5;LiXOGu36#-8<#I-PX8%PA>=G-fP4Z6s=+`P=>A6Xm@*e#+UMc44%P+%@_*M z_$ll}*4iXSxk*)ZQQb06{HEQn@18?F4}25;6U20Hx>5|fTPji?+10Y^qrnO(@cL}i zbwZgz1o)*ty$d!+Y(n%oq!Gyq0ALmmS#UhQFCNeLQmA+8Z;^DTqs3Gl7cs$C4?`-RX|W`NLodLjb@Sqra+evT1B`vSR+X@0{VC4=R9X zPyw6`VvH9tkGUqNMEnFtgBU!ZCYO1M|lgNa8@9SXi-guB8e1F=Myi8g~#wcrn!PcA-5 x0$;BjSlexP?#RQ#!^6YF!^6YF!^2~4`3E=sCx#-q`@H}F002ovPDHLkV1kjaE^z<= literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_text_away.png b/src/main/res/drawable-xhdpi/ic_send_text_away.png new file mode 100644 index 0000000000000000000000000000000000000000..41f223f6c263497173495a23c082ad67ef178190 GIT binary patch literal 1270 zcmV(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11anD5K~#90?V3A`8&woQ&ztcsyEw7OOSDl?6o^=Mg#=X!L@H>Y zO0`N68b}1JRSGHi0vp!`56B6#9-1xZQKcMsXT=Txzo`s=tD&EOCr0xY#~pXR@Ny;0bB+ zIxZ(ezB5yzyn-5>LwF{}cV|MBS5S>pD0YUJW2!}Y1-->#%3MagpG7d0qI@MtgEtWF zA92p966G(b$#b|oHRjw?Au6bXocvCLC)bMFlou zsqqdfm5u8}i3%3f0yo*pW znGiV>6?(TUHFi*(GL_5#xeygDsL9i~JZmbM05TO7E~w6fK-EYl(PSbjTu>E@Rj!~| zHkD8ejEaifu}hOzad|B5L`J}fsAxeA&LC{2l|TZtMJ;ecy_meHXhBz5r^ThD1E)YL zqM`-eqQH05frX@krc9!uV*P6}J(hZGgBf~qWXgh#P)uqXj#1gEo4t00t6F=b~@3zyGX=BB#9ov6XXKDh`) zsw{GXGJjKHkuv*KC~z+>4i*kB4hjb-Ay`Sp9fMd)FEK&GAa7IT5DqOIY#gK`Pbgwj zrbPv)7`lTG6_tsgxX1@AahD1$N}UQUV^czL6qggg(FDV_5I)1^Beli8KAD@oA-5>- zJ%{+0Vz;vX=`PD63*E{p<5EmIJi^y3^Qk)jzZ@`7K|RZ<*wdTZKi2N_sP^(Io5*J{ zJ%q1V=9)UsuYLnYN+?D{E+RPCtOUGDlQofIH1RI;byl(1?zyz*@kd9aaB=wp;ih^y zT#P1O53+fLR_HrJd8b`5OVJfGNIXFYY~=fT7f4%-&2_cKFQZHlPtfFTRL2&hi4-Ke ztN=&G31X1M#Au=`=rHRXBoQiA5*MS17PO!1{*#&*O|+nV_Mg#h%*X=PVKk7o=E63}w=fVDT*rTvHeLDU%F3 z1PYSN+=K9d$z;%C;JVu4N5ipw39cZEHOy^Fb0jS_VtkOZ*z!Kd gv(97AoH;Yae*{+DeGqJ(%K!iX07*qoM6N<$f^e%TX8-^I literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_text_dnd.png b/src/main/res/drawable-xhdpi/ic_send_text_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..0a749f8dbf91262210ece71c21f9fba65492f993 GIT binary patch literal 1395 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 T)a1HL00000NkvXXu0mjf&S^T- literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_voice_dnd.png b/src/main/res/drawable-xhdpi/ic_send_voice_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..cea4212a87ccdc744e68b8d530416c11b41c3c5a GIT binary patch literal 1426 zcmV;D1#S9?P)&$%+2&tB`EtT%h(kewEu(X}MUmr+g z+u7OK?##~an)`XYKhF8?$;{ljyLSPD!C){L31E!hy<=mylBsNwdm~I;C%s*0A17p0 zHRA=mPw_r*+_9m0*R~jywBckr-2vL~RvQig5VA^WAHR`Kchs}CawHy*=czXUS-I4C zgsf_twU5@Jq>3aO(5>$N9T0A>T|u_}u{kpkUq#_08c?akXQOJ^p57HlE!C3rEw&}P zgbG>p;w905NO?R4jkR&qQY}eeLG4YVQ8kILVo?!5lJsl2fRe@p6oLsTgcb~l<{8vX zv|K=nW)*8HOh6&DTtGTuzm^LqX<9BILYs$lGtqJZC3^Xw1p`W&)(c3RtwvK}N15!V z`aXehp@vxRIqvXZ0aG3#;x~dyp%~Ox=*VmkOWt2l4#n%rjlNm4U#$}XKm^l^+uBfC z5j>uMNAUvy4c-aVSK8;Tz`#JOAyPmDrxv$O3pNJN(AT2)J@O3JpoL97$1*i8g@{)W z{Ravx=?NO|+3HdhKL98JzXWz_xnH>aK^8o}6TFK0M+FuWR zH7r;-% z??FoGi@rwc-J=_OeGkkzQu)#0=~+1;l;6YjDHw#u6WzHH-|ald#KzuDn%wQHjr=)G zKa5E4K>*-k=DdZrLje9;Vug15avT-lBm=fjeUmpP0GupzWS%NnvP(g>0$c|G8Zu>p z*F>vJorUWaLll68W!5o@SPOgjVA}RBMEi6xoiNKgnM0%;_N()ICzt&)4v!!TU742! za?o#$Go87Sb5ZqU*=jhQYrbK*C0}H3uB*>id|c$6-hJi55n*8{*Zo}_9=N zz0*RLe0|_yH zOWFdAr&8-IX@60ucXROuc}`z&uFD-cQ%l`J#2%0Ube+BJkgMtC-6AnJmVe)NZkC70K)hv*#Rss4-t-lAYbJ@iRT%#t5%9?wSFZ&mcDm+%}iFt9xL zPw}9oc>u)nSTqGQR5*8MP5aq_!NHk0G=oU&uL!p@nbk8z><8sJ5j<9l28p{R;l*MR z-)@=8-i^D)vYttp%;!Az*xQ`kPC`GU6`y3qFW4U4Mq0}dp?Gep4+C|2vfH zI4i*wAC~Qu;yaG(K1jHv1vLCujY^RuStSD7ZvX%Q07*qoM6N<$g3=U|>i_@% literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_voice_offline.png b/src/main/res/drawable-xhdpi/ic_send_voice_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..fc4cff1f14eb886e5eb40102b5442d20978b3daf GIT binary patch literal 1075 zcmV-31kC%1P)~LlK(_2@6szh=mGE z4^1Qz3km)S8#WRmMAAsuNi@GmSc!#tNK}5*54F&!3e~jQdT7hyjF6c#=g!PIb7y{X z-kX{Eo^!t6GoQKVd(XY|y;LfdN~Kb%R4Nf>COrXMjm_AIRUO*_%ws3!CNwWhR-kow z7?(Hno5#!eVeB)Cuy_(daRr{j`T_c`!Hw91pT;?<7?Tia9iGODA;v7j_4ow8j$=~& zSkz{)4i94a2;)}Zp|VqHrfq>X3Cn9#HVR3-HQE;Fh5|k|7w|DKZ3}c+0Uu3gy`r=& z&{+k1tZMF3j9QTi zwo!xS9znlHY^NpqAIyvgza-jXu~ULJk}J@Gi0#}&|1UG+HThT@vBl;%Fu4N73JNYv z^xv5o4?aw^#bRd_J>&}Xb;PzQ(SHuRGva-QuM+LC*xzKt%NFSKi0xvbK%pP6;K&HE z4&&8C`+8gyvB%~(Fu4MKhkaeP8Ei?6*^lQ8C(_~0m{j>oEavyvJ4BowN|e8xqPL*n z0(_vq2tVUvoF|-`Q_KnCq`v4{Jfimp-yxm`2Bw5SdvP0<{>Qcm=i~jvxFenRdHgBV z04){vEkEKTyn#1yG~s6kkLwlsC|>CJ8<|oicz5I8i2WUGFBGF6TX9#!{yJuJotLUG z`&KARIlaq%iSP@~7mCx(7D1qH_6fWEleqy(33O6e>o@Do16K;deWAdFJ1oXMxKHmY zIDuz{JXa)8DGmzj{@O143@*i0!YMbEPX^&^Jb|0UQ^ai#YcP7o!^@ZL4uB z&J+^+u-8bdh2^wO5Glqi-Wt+xl5x~Y&)@;vk?3|r~)-m1!|xQRH;-dmCFB?zXARRjd%GovoQbw002ovPDHLkV1k{L?o9vy literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_voice_online.png b/src/main/res/drawable-xhdpi/ic_send_voice_online.png new file mode 100644 index 0000000000000000000000000000000000000000..d2f03dd5103d66f55efdabe7bf054de268d006fa GIT binary patch literal 1433 zcmV;K1!nq*P)MYtLO2$>Y< zEUB(IJ7nHMnS#|NV5-zOLb8R~!s(mu-25%B+#aVc2BrFvojPG15wf|G z@f5kI+`>oM-kT$}&aD^~w_tiGxt_{8TB$hzAY`*nSVxkdB-ht6H$P%GXr`dv1h}Hw zc|tZ@P1d0rq*Rhv4Qd~3-zt#Kh0Yh@X1m``N10POVl_x8FNTgGdV3VPR7$*u7|{_v zgetk~MNPab2z)Yh3_iS8ii>zxkYL%Oh*1Tx?_!}5FiyF~Gbm;n&mbMIT;mxOGmU4E zh&cx>CK}Hmnq6#BVGJsRF{lj2pfWU^K@@FH(u;}4Gbq;e(})JeOye13ZZ#GcR+!25 zK--`|=EV@5crV+V{oQv0@gVFIK>?-%^Eqv=6_+2*lOzjHPriGhdf`?OF;m>+Ho41# zhs&R#^Z*FuPEeno(>~e~XlNybGDskko<xG8Wv)s--M0N@tzQ&684<w zo<`~&tplx|6XqlGJ^8FFJWlf03M7VM$?;rw&T}|FqIIBk9Vt6JX(;)zg7_r~bsYo% z_gBq+zx=PI`vLsB#R|kq0Ea-F2zt>sni-t{aKb)iKPQUY38n&9p zMrjiXNem>qAWY2fko#_;a4Fosi>SiPK4tHh1Yav|C*-1&an3}c5vV<2zb@du;&xFu zn|&*HA#D6eZZ%fPs;|Un%NKB0M}M0q`Kag^Xx;5+4k5QU-g@?%C^RCgQSAIInRFA@ z`<|sPAhld<8E-jz>DZ-0Bx2`~NKLixC-5p*^dBg$Sn7jpS2iDoRHQ|mss6TI6glYI zNjSp9sZu*pMH+pnrz!4X2yDN84SbQyuJxuyo&50KdF*GIAdrG8k72j_>o z$EvyoNDsEGnZdGGp!E(B@!ebmxRA}{&MqYHAZk$tEFA-F2LRa$zYU$V4>c_$Zy#*8l}0ZFYilAvOpwy=^g5yLw@Oj-O8fM= z^pe@h>3y_huMkV3h)H5r0T-Iamz^IzHar_e%phX>6u~}YufzlFf#yphcw&KJrl{pI zX7IIh)R~Gj!2n|aR%7R}oz~cfv2CLC3xI3^f*-H}0Eh_)N2t}$Ew@{)Ms_V#A$9*8 zYGdEV70qh-r+$6+^z_@~z2o=e&gpUL{#K)u0rfTqSOf+wc8oz~Fb0*u7*qyhP#KIt nWiSSn!5CyP7z_r(|CYZ2K1aB4WlIf|00000NkvXXu0mjf8t8uh literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_action_send_now_away.png b/src/main/res/drawable-xxhdpi/ic_action_send_now_away.png deleted file mode 100644 index 12ec4d33f19d18ef0bde48e635cdc671609bcee5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1426 zcmV;D1#S9?P)ELnGt z|G(SkR?_Nh##?*={LSY0F$r}BfB`ni%oE^25}}J3Z}ATB`NVxmgd%3V#TsxY=dmP0 z0W%(tAv5=Zm4e?%B0ORR+yt&w{B9EA0W07-aKrIAPZ1FZ9_#82R=^eDcFpG|5e;Ak zECIg(=jPZ(60rax03b8p0&gs^ts(Gd5>byy0UrP#H?YkiNrW?#0Lv5II@*Qp9Ni0Gas-c%_9}dMP4LzzyJfE7b^xNNd__u?98r1Y84d zwo=V$dLbfDzzT4`m1^?ow1`;&0GYW1tf^O1PA5ea3HS_nSG^iHj*ydeCqxtpcnkPS zy_$M-LPU{(7lFI#)y&5c(wZK%UC2D-3joN>FThKx)htGoBFY4O3B0XZO*2F#qD;W_ zg00v%0{&uiyxVpmWt0iH1pKU8jUSGY5fP+_VgUe|xd*JORpXZ+MN|p+8hBH!8XbZX zQ6=C#;8V3~bO}O4m4JB`Y{f>aBB}%|0lxz0mFj7eV`SE}qq);^0no&Pt=Lc%;UeID z;1i8v0^fDq;VR%PvT#>(!B%XHkk(X7gqr|>%zT3^++D6+TED0z z!d-wxWVhfJ)$lEXIrXr zQAWtg`r+iAVF;*$ObA>=trF&>;gpE@1h|qJgS57)_IHtX-t8R$4?;Xbn!+F>z}`&3 ztu6im{*7yvB1iQy`R!)@btk$+Y48?z0h##`SSQTB8WK*yTigU>=6O>1Rn!XJ z;yMC0NZ}W;jhtLh=6SNK0AH6ch?#|gwh; zaHh$fMuwN*EiMB3+J3wSZ%G1XQ3>8sEO8lw-gJI4?i~4D)CQH!CT5kz#83HgcW4)mNEgcx1U{P zR&&&LA!U>ai1h^g2sz?|4&Krw0Z|2S$rq5Bmw^{_OPQM}gSQlofEbScJ>-H-Q3h{` zQ9vhxx5Ol%Q^8wi1!QIwxTIf7A$v%VKWw`YALNaIP>%ji2X6^cKre!~gd|`e>G8b? z-f~)iERwyfTthE|w@i7tW#&XdNl_~j~_O;&CW3ycvI~s1z&?E1*G8TKm;td0P6th@lTs7s!!MvaGCnw z=}N&jfE7@u{iNUg~cNbpZQ*3&y&1f<|SG9WW+$VDxtNx>^HVD{)w!7DN;AO+t7 g17HknrQqA)KP^!_fB_5oO#lD@07*qoM6N<$f`W2mhX4Qo diff --git a/src/main/res/drawable-xxhdpi/ic_action_send_now_dnd.png b/src/main/res/drawable-xxhdpi/ic_action_send_now_dnd.png deleted file mode 100644 index 7719f81a9a42aeae09dcd7d226ec6c241b6d6162..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1456 zcmV;h1yA~kP)KKRF@^wvqrdaiMsPgLj|_1vF5Q0w{nY z6i@&Kp@11kn1LoKpdegcf@i@z0&Q%^RuaXswuUDV#o6Q0WiMx?J-6NS&8Vy-30Ds zJQhS4pfj0FNTT=wu#xjSL4-!6fZM>0lHUy?G#~}s1a2ul=P5$OKx194K?=AA{8;h1 zK|~Em0c*f-z=b8Y5k#y&XEK=pkVNsC=>7{@VdEjjNp`rG6C-ZADb)3C{Bnd6R^yJE#I&zqD;UV@GEf9R6!OQA!bbn zCU;sW0BTvVMX)>w2Dv>a1Qu``WI~Zh87W} z0sxXI{tkGh&K-M9ts+zfm{_po8>fhq_5LawQ59fv!Ip2VBtliddBnn9lMA+dV~l7` zl|(2B07#Y4-A5oWp^Onk7l`-OE{c!qDCj?X>oe-#q>fz?3VMc^^0#r$&xPxeI zW$o`WcHZqB1A8tWA$8F~i~xD-lr^l-ngt1uJ1M4Nylil3uA&^EkY*hfr5$5{_n`oq%~VOarY1-#64Cz?cI@DgPK zNfdt%Y~yBMbqS^5B}xL4D1M$0ei@a5m#B__9YXkd>?2ODr^`H9Re-L`7x>Id!ApXG z>Kq_i%}T*bN(H3TNgH3>c8ywtm#B<@ZQxv;JM|1L!An#Gw6*hNuhxB zgOZm`6yg8}h*{0Z*z%~5+1WJ`d#1U^acuARnCbu7}!Ar^nG;uki6TwSz1*9K- z?3gP>J5B{JDH;KrG-DB#lfg@h1o+;54iU4O6WfIpQ6#|E6YwL%5$|;Hk|qi8DtJkz zfFz1v0J$)yUxF^IyZ~!}=kSp0000< KMNUMnLSTYAEOQ(H diff --git a/src/main/res/drawable-xxhdpi/ic_action_send_now_offline.png b/src/main/res/drawable-xxhdpi/ic_action_send_now_offline.png deleted file mode 100644 index 1889581322980550b9d312e62980aed751d33286..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1433 zcmV;K1!nq*P)lIJ-h zau3+3xK9${5G~*~aHHYANrVHmfSbTA!^b>Ei8yjt*I>{Bt^q%^d~6b70WDw+_zk$Q z#5R(M6_7m7)ej7y-Yd zUY@W?hB`+aTHbCiI1>OMB6oo6j`o$2L@Y2b;6317$NS7kBF>l>@G|g~r+sH65eot? zpq>w`d92|H>SR4g5i<)C=~!8B0mAo`7LK9q7+dl;8WmrzvWmVDiL)8<`-#f32HTx$Wt^2 zI)vv7yQpdCr0m94e|YgEtSrE?fS38+i9S&qyvA67hyMblLWM957lZ`3SQGFpqNf}@xkrTuo}F^ zWCUyh=WOmYGMogjF%dA-_Tw~oO%kw(m*6$E0*W_EUi48&0PLY=H77oI+B5>L5$`)t zrtG7Rc(1{0ngsN@{d5|xdyrxn>@#e?2zfznNRPdU*5wJ-=7GVV$yrxb- z?CobCHLE%9x{x~R1jKp*eteU+x)2wXjet;&{$2;K2~ofxg4cv3 z;1Jd02NAqxMnJJh_NwO^1{u6&egtgeZvobzgV)Rp@X>w_Q9VBMu&?0pDIf)3!kK{L z-&na=fR%!;VR{5?(PFu}0Y|7FpIO{y@0bqUR{Kf8x4@==6#Np5VC4l^N2nhE*jiNs zLXUu}wEs+33f=-*K%4fHg11N;0S{5ZKXO>l;4l%8f_KPBL^e@hYB5g=-UA~RkNy}D)@eo+c_?;laAWFa;;6}mk1`!5O0&W4fHJ|ewDdNyzU9CY0xCZ=O z^0`4o1t}?;#=U&CAKvL{t6<>F)82!;NuFmIV6bCW>Ua) z;BJN69uhBR@jTSK{03eFRJz(8_Ik_}aM3#WhfSdNq z(c%bsvTlTkECFu=U)e9G6pav(CE!)yf&Fq8;t1KAp445)BBTlch+=UcxMa7SrSMWj zo`5fbckGr^30{fF6EM4A%QudIzx&&RgSrdJBTv8;;1|2)7~vQ>BAgVFDF7gf#jilm zUO7f_Qbdt}uYtGhm16~`L=*{l5BStxIaYB(M3I0+7Hs)Ots;s9tN_0O=WP{KBge>D z)4t7}<_dsH7Hs*3RS`M@-UmLhQH*1pAX}4B5jp}kfgem3;W$P`=mGxXZ&bNskEv9It^gYgwtV9Rd9vPHW+S=+Y%bXHjip5B3OI{gxNCF4mT!!Z zt*Mj^tEfJ*!lp%`6dFG|0-PVwo zOlTsxB8&>qC3(-ONAZZd0GzF<%w-uNPu7no?{q>y8IlQsj;J1PP8y~}cqc%YC>9-L zYb$Dh7pdpn-Vw0t;t^669png5w@${bF8&4n^J_jMhnf>#(55XIspiUV!K>xDh!G<1~qV5vVmc@dTtU|PV7Tz8^Lat`>IQ51+UN&5XItULik0L3SOZ*0yYWZXR(Joxt=WYWL*KKE??j?O9ih8 z0?MdBclvu8=!6CB84=dbe*6@E&u=k diff --git a/src/main/res/drawable-xxhdpi/ic_launcher.png b/src/main/res/drawable-xxhdpi/ic_launcher.png index 0e06656ff4b07e84785733b84222d98e4011be7c..e69b9c8d5864c9f35b6c846d422f7946c470403b 100644 GIT binary patch delta 10222 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 delta 10189 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 diff --git a/src/main/res/drawable-xxhdpi/ic_received_indicator.png b/src/main/res/drawable-xxhdpi/ic_received_indicator.png index 039a9ef9ba6d588442aec93dd251eef7345538c2..5d1c9b876913b39ad8be2f87949410fb19ff8c58 100644 GIT binary patch delta 921 zcmV;K17`fx3HS$)ZGQuGNkl{*Tc5JiwnOk z9j=E76_grGC8fd{V7)Ii7cIx0nK?4E&`6!oK#7fscYlEUebXwUnL=-&)M%YhddQqK z4~u1j>X&$ED(k(nl3GolkQp{{sgMuA{Fscde{-evng&Tik0R{$Oy3b-l+-k$E6{&n>rMMQN(;hq~?X~mvEYhPza?!HbD zUJD2nw#=qRR*M0MIHS(yfWNpWcjk8X)Jjr~4iWGjROR*Y{_%2CpyjsZKY&72M0CK6 znzVn~qMa|2m@52w(YYpFjXLcsafw;&@UP5ZMbX1+UN#!o<`C0k~Or!m2(Fa*luADFr?4-dQ{wHfTlv vLtP_X>*nqJ*2To)wbG%|wXiX_<@gIJEfOk^I(5`+00000NkvXXu0mjfXlc7A delta 1142 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 DK|&Z$ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_location_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..ea3d15026a11ed86699ab6c7761bb6b9ebc72110 GIT binary patch literal 2578 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_location_offline.png b/src/main/res/drawable-xxhdpi/ic_send_location_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..b4317aae49a174b2d97765f5ea1cfc3d5a75a616 GIT binary patch literal 1881 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 eYnm3^B+jn0cxPvA z0we@d+v}b4_QDQIQ+sySyR$P+&vQH9%=da<&79*i-}weG7z_r3!C){L3`~!2bb-nSSJ>;AAu9|8%rkJ>8FdYeB^=U^QyCy|FpuKiV&|06>T<2N$hJ zXVU3S{mR)Xi8O4YR2r~2^gSVmV@Pl7)aLKAR2qmOcUux?7y-5Q)cm&rj>jm&X`G&W z;2>bds9{ACHHHxoFE_SNM7|ui768zKSMzS=w*oM3E$2wo9X6A9?oNtX0HBC3)bq~W zaqBpr#28l3jeV8iU2*HU5Cz`Vu#0!bt>YYtFwD(6w?gFJxOJ?CCiZxR(J#fV14w{j zZhmy9CHR&kY&<<50fgGx=VgmGBtXmBm?;#mrO%r*)VK&Q12EV_T^Az@q zWT(p$Yq?0rhP^j3l4&ib?gx0)S`r%0A;%Urw4NKSR%bdotCL_aH?jkgdKlm(oryE7 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_photo_online.png b/src/main/res/drawable-xxhdpi/ic_send_photo_online.png new file mode 100644 index 0000000000000000000000000000000000000000..1c8992c525fdb4a8afe99b3e210ba7dfeac52651 GIT binary patch literal 2571 zcmV+m3iS1fP)E8Zy{L$MSGB4@xo;t)l(uof_N>_u z3u@5B#byfQnnd-N<%lYwA|i{eZ&e7}7W1s$cQLY=5>UhTOg+&#-Q&>9v!) zMVN_AgTN||-`b1*tX^x20MEv)V;)Vb zzy83I>wmoduegPLN@5Ia?`i!SfN#dF<4#1-zUmvRi#Pso!;V`EkdQ~BbRo%cJ+PRIlx$e`c*~mNOsY%3_QfRB%tFfG%=FCh!oI@4OF6G3 z!`hFwbWo-C16)>`Jk8yp$b=!z;lUl327{gxxDU%7Z&{p>`mm4&?g2o3j%<8eS0_j-1ER7c;%vf()4+n`2*uvZ=%MqmUM-(>)i3@0$ z(j&r7P4vD`&;iSFG9xdtIZn%T^;1YmK0RCj%Gv5kX2Y}fD#?;L8t0g=JC6h}(;!qw3WTVG`;UkjgUE=J>o{{%~VCH3e z8&?xg2ie`wFp zMZc2_m zowaUS-|`D`QaBkx?vjb!FhUA`FLE=-(wRy;1{Xqv&$i{-9`cIGcjZ3>@nKjRf)cx7 zO7VBcxZ;*n&sAw+Zei*Zuj4hTn#fliJ9NBD zf9S0_Y~pQU%Dv@v+*NMmhAGEg?inEP)EqXkj}kSd5$_|>Ri5whlsgmou4=BKCOiWO z-*=B;68E5Eh1c<^8ANWFA%^!TP`ovVP27VH&knw@w=f1^JR&&&@zG${;8m{>MHS87 zjSJOXjX3l&}AdfC0Pbeg6 z?Pz&<_JQu`f!qf|8^@>@!4h zgEijz{Ww0Sk?qgcSU0TwAuU=hn?xE0%zl|+YJBoQwzqM0R5?3d?|7hi^VTb(qFne> z8i_S*4zuXi9<+L`jiD#XnUBrXP903*V{kr6?89zD1S>(l)Rr^P(U22!RsR*ke8YTD zQv9|6k0$IhD|aRFhRtJ>%wR)%k9pde#>xD?d|B(<%|5fqaPa)x8;nH!C=Nn383qUq z0#B&!{^$e6&rN~j5_&z4iyf$j=Wtr6iGfU}d2)#cG`RIg$45!4CT3`nzpcNij7*NVJI z`Y2Iz2imYILmO6Q1T!q=nyCL10@NG7VYshT#Jhe<6Bv>cDd5+ac3lcw=w9-CLOPdjFd*CY2jI$s literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_text_away.png b/src/main/res/drawable-xxhdpi/ic_send_text_away.png new file mode 100644 index 0000000000000000000000000000000000000000..2b2b07935830f475db6fdd1bbf0d70b7026b7e72 GIT binary patch literal 1776 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_text_offline.png b/src/main/res/drawable-xxhdpi/ic_send_text_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..6bd9c414faf34d64e2bf4c997936603750c32732 GIT binary patch literal 1410 zcmV-|1%3L7P)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11pi4yK~#90?cLjMR8<(j@jtc{Z0&);h!CivfJ7k1L)3UmG{ytB z-uV{32@itdknjK|-e`OSFE#O$7#&a}j^M?bFSgU!d#|w4HhYt+|yY*S!OL3QU0?haE@jY8luJ_yl+zxQxPO)iSUt@Bwfbn4oZ3 zwG0g4IpD;ee=A%jHGxflOAXg6T*8{bz?^(ErErOA0-FLKwR~JsxPfZ|d4Sm^K5qGS z6mFo}wxB04Cm${;T;$ro9s%C;{JIJksWz~?z{eOk-xMxzZD2FtMc`O~+flecb)5yC z1kMG#J%#I87uXu`T7=tGIM2GkrodI;P^8;eILErc{sCSEwj$4=aF%s}0h|HO#vWvz z!gXW=_9*a5>_HY1xGN~!zHGq$1U`&CNJ9#@kPX;hz+1q2 z;d24o!Q2rgR4tqf*bI0#)*z9p4$cMaF8?nuEiHk23AhLRkaisZT)-Z3aDi!QZDStH zE*8!O4B$BMe2hT`u2?u%Fo3s%PmwNxdznJuT)}?FEX?tN&beaXT<`b?nBP^|E-)>v z?BRU26rTmArIjt557-LuM(9B@Eju_Luqpi)n3h&Ha6Vum7nqh-ayZ|!y;Fo;U|L$q z;C#W35NCmDX$=nN3w9549E-KUw6q3;^98$)*}^sh&Qe3s;rcvcahl;4n3h&FxISR( z48Op%w1UI+0sC!!`5yQM^El)E`Nwiy`;jVvdjWGld9OK%dD5_fSymvI4b0%j_PpI8 z?E=+QeFxkIzQO#S(YhSY^42hDI}I0spHSa#37p|_0CP$3mTj%_c76VSN#C0_TuI-Q zONTkQOWs*>U2a=#CtR&yE^W;(f_NJ9Jc3=|u|zX{3tYo2;N92i@UtXojs3gKT#u78 z;7iO_b^r^?-olzrRyG#ip8!V_&1l+C`mM_>E@N~dAYAG6&?U=0cYoO7a04)9x@ED9HzG z3@04fK}oJ)hp2l^eYQ}NE7(cmznpA}vWJpf!D>5x6$2%?g4J^TDh^5-8<;@dqR^Ky zasiuQURb5XiieV1z%E9cB3{)%NiJX|?GCGhl4=917D}=O+r<0~mTT2RNw#1Y$aCe> zXrLq)u$&qllvEnnXrUw8K%ug08Q4V>s;I62Po^G1(=<)fG)+s`f7*^qe^0Qf Q#sB~S07*qoM6N<$g2aS~sQ>@~ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_text_online.png b/src/main/res/drawable-xxhdpi/ic_send_text_online.png new file mode 100644 index 0000000000000000000000000000000000000000..cb6a2dba8f1b361d01d609a93bd75268f6574673 GIT binary patch literal 2001 zcmV;?2QK)DP)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H12Tn;uK~#90?cGgi9AzBG@!$WM%_hyZ*-28=`jRHIv%8foQK^$?f&lh^xB)k9S!?QE9`y>HWDwRs5N=e3yk&k)?RqMp+8#KW;7OREV zi`C-wQ4FMNAFaN@m@&pQL2m&77)Jr|^^u)NehPguRnr>4z@Xx+xeMUIOKwweF{u#@ zfLS$PB;v`24=A|EYYJAJHMW82p_X5z;37+FcB6jJFodAnTYeQ`1jILw-Z!#&^uG1; zXAYeCP1=O26*UFB?uP5;=hw||C2Ichiz&F!Yx9t;ARkK3GFL!nCYQ+U!OR(`h;{$z5nOz`me;jj@f(xvcU;tp&j5i20 z5!jNFcFkEI8R_k)hKC1 zugMxFvKS``ygvzWp1`IKPGwFVJ^3jCeX<6Mv;@F;eka+iny(VExBZGqE5>l1!HPBG z0f6q8F-+`=A)IHh!fau)V7w$_nAjF0IL}~#ZZJ(+F@W>68_KMiZxA@R4W>yeLO5Sw z#hUR5Kz9c{OyY_F&KFprR@fqd=Yt+5v4sfd3#`1myv}CpW3c26rb#OVIN#rJvueCU zL{|nmOlpz{=NqgvTX>u~Fg=~H*h#^v6fN;LSD!VFc7Y7z^(px~7-f%sB#$fG`mCyzO!WXb!ApNnY-aEa zpk;Nf$$2OtCR)ti$?+?JP)?q}SmP3Lf-k_9p_Zt= z@A!`6zehcepIn3e_q%^-ROT?!N&%FUYp?~of0Ibs;z|*elWVX<9luft<>VTS!KK*0 z|CM4WCs$z0KO(y!wmSlP0LsY~m}Off5wksv0D20_$rYFYmty7BgHTScz!)MPJEVFT z%BdsR_@40rTEbYQ3rs;>tRt9K*UZR%qC-J7)DcW@1jjE0)v}IYp&q{!RL9zaO-)Z_ zPVq@Y`T}Dx6a84H`WFhSeQm)`TybJTBg#s9bOq(PwqRNYB`ME_%TU&mwRi5>IrS%j zJ=7MAZBZr)P)tE}U28A~(QH5)ZWL5twFEP&#x)RK{v5G_3cQwJ8A8eTlc9o=R!cCO zMA`H8mx7XBOE6+Cy1xEWP@&ZnY@#-CIRL%mS1YK{YYNtf4#%%$sQx}{@8RtVD$JUK z*|t_D(S%GvMP5@d61;MUl!A&)4PeHMkq2-Y00kAp8o)GYo4~e$ifIjCb=3c{m+V*7 jS)WR!QmIrbRS)+si0f`@+D=Hk00000NkvXXu0mjfp8=y% literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_voice_away.png b/src/main/res/drawable-xxhdpi/ic_send_voice_away.png new file mode 100644 index 0000000000000000000000000000000000000000..b8b9e807995dc4a332e7703329b98498cf7b05c3 GIT binary patch literal 1895 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 XXjK=YDL_$9C<3f4?9FS;-0%Mf?B0)e literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..a5151331ca736f9caf0f63d2361bdfac1b8226fd GIT binary patch literal 2152 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 LZ>1|FO+x+y9cp>6 diff --git a/src/main/res/drawable-xxxhdpi/ic_notification.png b/src/main/res/drawable-xxxhdpi/ic_notification.png index ee2f3a43235d34f72ecfd36e242aa7ee93d46d48..c3439f1a3e9f9c1a57386b9f86685f0e5a7360ab 100644 GIT binary patch delta 2029 zcmV4mA!NmB0pb3!}6SbkH8u11uAiagOB1WoM!=)hLr9>jdUMOwo z-S!o|!$f)<8!`N5{~JVSg*o3-wrFE-()`9+(Nd z5;y{w4m=C&1a<)1fhT|mfrlev%P@4V!h~{wIt@4*7z5q~%mKI)7!@HtHMdC)G{EwR2B4svjJ-ty)E$r`|DS!&YUbdg`!k*9di*dY!sw zxVEg#ZuMIAW&N~MU#6kzDZmQgP5qERVEzOwiik)0A-wfLM_o)(dNLRv;4EN+`sscM zZ_NSfRP{#S$D~#2WMU?8v-%xdo+-8R2vT1TECUv{A%Aazb2G4{trc}+2dGB^w*u!j zSLY?eoxn#TVrNr9jT~TF&fgBav#BC4K~@7Fh=|=ygw%eXjZe>h&S)AR;N8Fq^{^&F zYB^whAX*Mw)THrAz=wdFnh2=d1HJ-$yh+28h$ZTkb-!GB3{b~_mB7@xjZQ-L0AmsH z`>J28b>K8NVvCfX|nySl9#9qk+eP8O?PXIe)g2dcn4$O1*l(m2}3h%aOoky(;DQ z05yPzf!DXF)TpsBB2F)=P}Bp?r!#(2=BsZms!-&BOIucER4KG$<|9a*3Oq%6j&(F+ zb428>q4IjbS#-v4ixbs(d4+inxS&tUj4JQRE9e|B7;^1-$QUrb-MF2}ceZDkJQ)$k zWq%c9^?=vX8NY32tC^8LSq?a*&&rG{nFDd>fWeVz*Q_%wbNbNu(-Q-HSvCpMI~ z7q}bP49o`30S<2{a|^H@*ae&pv>hK%?yZ9QqZZHDZ&w$MzgIdSe~Nm!^#k(OsB;d| z`2_VhHRbJ9ziK+)`a+ot)F*1n%;LLc9e;33OAYQb9bw69=fgE*-eU@7&5}3O6lqzN zFBIr_s`^X~nOXd>tOM%&h%A0qqOFw`WfmTTR8OlYZ$K+x6l-r>OF9(6uOwcHXHn@)Wc@wp1}ipUJ+=%)it1FrW4Q_us9JLV?RalR^i zQ#~`Q!1T(u+*I#*W&q30$s3`55r24JMVWbI_JFKLzuwZQe}FsH3)CY_i8(G(*ENv0 z)1>3c>f!21>Q(C21~UJqE>vHoPFK%XS2U29#W%9-o%Qeh1S!V1qg}of5#K)e!>mWp zg9A`z6!}NihglBT1nlpxE+a`f2Smg!;Gw>&Gg?UcV;@4^mgMUG=`xZ$7Jm`jvkLMY zu&R&Bj3W2t734W!4bbZyNk@6^$}7lp!1%fLyZffj=&?4hpy+7gvi9{DN&W-;HLtM9 z0Y4=rMeS(DFCrp$TA%BH@lpGieNkz&xTUDDSA@(t^w90I-|*XWh#|+Kt${SmXcnrcJyYfOr=Wsf+FHp z;JP~6j3A|YK%JCjhmrORMm1YvStJd_PZm|GoU|_@_5zDYFPS>>34c#U2rN zkna4dl&*0^2zoq*TFHeU5q}tO=$~!Kn`9IY#I0RM5D^am@1WaDKA5qh!ggM?nRt$*Jk6A^nO;%eYR(#4viPEfFD?c2?95wVICfpQJ)g+0Ag$sLFX za+|6;mlQm4;ULgjy z*kAzVVA`M?#V(Arrw zMC=2OZmP$GL1vwy9;FU6yO$~2bBXmXr5?4(M}JYzP;WA&yT99@O0(F*Yiv4SKxth5W?&#>~7$W}%LUnph+k0?_00000 LNkvXXu0mjfqOI`? delta 1975 zcmV;o2T1tE5RVX$ZhwqPL_t(|ob8=!s1;QdfWNC(%~zUcc~vN_tV~hNw4%}=D=X8K zu&0zoTF~Q15%|N(q!cx@7eypReWQmzs<|7MJOT*MOAF0=SS3lMjy~n+0 zX3y+7=iD>%!Ei5U_N=|wYxZOI-fQhD5h15^G%K|NStmC@iGQgswE_{S0=fV-K(~Uc z6R-o=3T$imd-VSuK-ssiw~Ta z=mIPQdVjiRlmUK0jo|df?Ai&>B`6n_cm6{sF^!`k zTMZaVUiiLf4P0ZpX){3H{P@M%4B48X-9U%b)X5&3ux$D@8K5n?FEYm;wLmKjJ19&| zP=B}7)yW<$fYVGjasw2P?xr72BOPPHgzQ2cGpbP!nT`qN)dTB+wdjObACm9T*pK>< z?Lk+ye7}f28ss-dL<+A*#UJ}cV#+jeznoasMgu(OG1D=oOn)1$2{GiY7m?N$dDWuEab;?Nj)O#`Hik?S z(@c4!*#|5{H|^S(2Yllw^Fj2>(!>$qUPpPGP*)@y-vKW=%Cuo@+D!)N>M6r7Jf%5G zE$~%HnpL>%%UOc@gaxt4L0%BX7u#fje?4Uw#Vg&#bA2apFhaU*4l<+Uzturr5P!z? zVUq!TWf;Zd-Nh@uD>}CxL`!s36qP9X_jQmLMC8dhUj`V5epTBzg^;OQ17Qo@ci9$xv;p40zR`FJaD}5x z8|LX9!_eqDPs6UGEEkbcBGOevdVh$>SP}UtfxKD~nIR&BMWnrm3>1+mB62W+%uOOP zUi5pSvxp2AkxvrHGcjEZ!%)*?Tz}vPPgc)4#$&*&!XMLYf^r(O&h(?n06WkzcaC2o z8$i%Wt{i_H0ydg%*p?(eOi!0gvH^z=G0<2KIsRBaG|ud&q0CPSknaxp+Hx-lxX zFuoOrcLRXVX*}+(OD2hAfVeT^UMGSVcn&qFv!j)`VJjyAi(@{UB|^8f#5F)I8pa^+ zl!FOvhLQws-HE!h?oJ@1(is+(AZg^>b->L;+ccX+&PPAUtoVqY{(m`oP{S4vvMP-# zLizz;;p%&==)S{KZY0g?h;}qSOXBp60-%s4+$XXM2=g zkM3_;fEN6Z5ua-V+=2$M9h^{yBWPn1>L+4UzELRtfMSn;+0_<(L_MkgC))riQ z6Y4VnHN@>iT<M+Y=^#bDG+at;PxvD^S9Chr4EOm2V@^FQOssb;R|<2e8T002ov JPDHLkV1hk^iqZf8 diff --git a/src/main/res/drawable-xxxhdpi/ic_received_indicator.png b/src/main/res/drawable-xxxhdpi/ic_received_indicator.png index 86db9890c23ca93096441af04a38abea5f690db1..f35c8b4423bff4c7e0e308e7885788aabe6303ea 100644 GIT binary patch delta 1210 zcmV;r1V#JE43`R!ZGQxmNklK6#)noE zLJ&kD_)w}3T1(Almjp$zV)4mMQBfgY8_Z_Y3sy=MpS)m{g4A0H8pX>)GdmMQx>3-A zji$Nn?)iOaYTG1dcJ^Md-`k%5JKz8PGjrzrXBN1O%7Q9wAb%^O5c>7{dT3~Zghvpk zC6Qr<%pZVDxB!3L-zu1TK)6Fd0R(Mmr%B3t6A|m^YQf4a;wVI_df^=aEou_~PC~oK=rVs)F+>ThIYMxq{yYQs zDG9_ATDt0Xqtj5D2P(7%^dWs4G2XSwe@Y1Lj6=L4YXEB$lo?{# zZiL6bb)r|+N2s~KxsC)MhT42e5^r;A9w>7Gi`5GQ0Bumknb2v4tl?ZV%T_=j9@q)s zK^w|zX2?90t8Q6dqrL%O0N~e^1j0zQr)GCP+9hAa`Wt!;t-%Ngw<;)qN{w5sN34_i z=$HHv5`S*=+L)Kj*q*O>pu`2}`}8f$cuEy##!F_{{Irl9B`d%i^SU8%5bA#GM7k=y zr_eklE5I$>FO#}Slaje}V&}wsp?OMDz=pWLoq!%SgZr$o^-VEy6}^D^SL$meXb{Rb z9FNWYv+!)O@)f;++AC{%0r*vMDbSsKGC5bQe1GS!(tFSX(}8v-z6BE1(C~%XX&%o- zY^hNjfog*!e2@s4>J~Z=xB$Qx^R3mU#peKTB*xjYBz|o;(9q;`p|wTZTvH+$hkAEU z3DTY}j_vah03bB+IDn1IV(Y6?TCY=~srr*o0NA98Gb84tzt0r{0Eqd{Rii|^^nLo4 zY=0tpT(1X{-NHOASUA2IxnOA#Q=KBNLE@k{=5=Qg=>wqB0GRrWh;b@UkG42_2fznZ z1OkF}LZ!!#^(MCU&k@D4oUE1KH-O?BH zt<{7$4&Y{+3B!cU?o6#VL31zwT&v_V4jEzd;o{j{)z8JyW4eE7GrGD^aS6W7>as=) z)v?2hR>F*!7BjX2SS(QcM5)aKieAVJo5zTG2LR4rnhxhb*Ey8UoDsH;Fd>?+aDOI~ zIg;<(T#)rp9~krxfGCoq>PRAFZqD0P4#?V0d-$ry0ABUewi^6?zJ_u|)&fQ&qbaVX ztpNSxSd?5J7G}#i935!Phs?h-GSdOzHwW}zO3`(y;P^x~9vPoxi4FiWwnU=6g__C* zIUOm@i21!_zMFxc6_jJ1jAwrld^0&l-k%ozaeu1@+AIMtfJGwuE|E-pa^XLSm+^nV Yzs+HHxZROQ6951J07*qoM6N<$f^uk6+W-In delta 1517 zcmVH?ga9s4 z6bM&GfS`eZpa}XyjENVNpavENe;AA!7rBTa1SG@ZnQP;YM^1#F9drTg zrS^Pc4zb1b5V00BVYphI#7TVkXlTNqT0-thx7WHV?`ymWFH2S@u@c8L(N)wL>e`?Q z;9B6CNKUgJ(SJMi4jj;{En&1xrgJcuC=DHrSOeYT~GcPA(k!hxPGv}Ds z!cF1Ot(jfroNi)kh1F%B;W&$z;N@yH zVoVH2>*@7@{l0@re9m5E2qBa=sh~QUc_AeDA{WBT)PKwaUFuoamwA931aQrDjUv6)PcRc^RN`ep zmZO*Gw*rR)-)Yes&;V#CB242fNiIKOCzsg#(i#@$nmcQ{+N;l`P9bD!Ky_z`n>n-7=A^LVBdQZH18F z5!Kli@ZkLZ}>(LzfKSrq*SG3_xFFx2E&9O$H1AfS504C>1^|Frum_b$Qz^07z1+RB zFA@8b_OZlB^9yRc$cRk5g?%%9o9g&)6YEg15{WPb<}sG{EESfbWFmyu@~+ORv#Rm& zzqwt3nm|KFPE~*b00^ClQ=oD=VQ?9S*`_%5qVdS0#5~*g8MpgU5?A!hy_uR}m7C6S_ zKU#1?XVVQyI#LEuyB4{{hfa4d3LXm9WNuR(_p}mJE!7;U53iPDQZ(tvWaa^Y_w(1O z!&GfX?leHL7orYPr=wSTHpq$84%oLtj0neMSr*f`rVXmioc~Mzu2@6#1An#0Yf?x6 zbPIhn17Dhvv>Ww(;d`5IitS5Pl<$gP4IK;pn6|4F&}Tc{d9-sa_gDOEDxzXYO#6_Y zD*6l{|0AfiC$5z}DO`!C zyy-JRTECGYgph5nZH}?nScX}#VZcL}r}*~Zf#9xe9o98_8En7Qr;7Xj-zxtCHHSaO T$bs`C00000NkvXXu0mjfD6I8a diff --git a/src/main/res/drawable-xxxhdpi/ic_send_location_away.png b/src/main/res/drawable-xxxhdpi/ic_send_location_away.png new file mode 100644 index 0000000000000000000000000000000000000000..0fab2554ab1544be28e265d035981806d1c5e845 GIT binary patch literal 3015 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 G&;J1K{A7jz literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..08e2b39bd187449bf7f73b559f9defc94418e8c3 GIT binary patch literal 3456 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_location_offline.png b/src/main/res/drawable-xxxhdpi/ic_send_location_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..2af75cde35fccf80532baad733bff7d40657479c GIT binary patch literal 2523 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 Ut`50Bw0{<0aMJ{ZLpn$P51V9}Z2$lO literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_photo_away.png b/src/main/res/drawable-xxxhdpi/ic_send_photo_away.png new file mode 100644 index 0000000000000000000000000000000000000000..ba171ce13f699e5ee6b1b0ef4b99dd4bb80395c1 GIT binary patch literal 3040 zcmV<63m^1}P)K~#90?cIBfROK1R@$YkHcHQMFa;Y??1uqn|mW!a)YpTU) zP1;BUEyUV-DSLt17PP6RfACMM)@T~p+bq>4CSHJ~wn?idtzv4c7DZ4SK)eLgKd=P^ zQCN1FIZyxC0YQp;-ZSUynRoX2B>ZFE_slc9KhK=A=Y5|6V~jDz7-Nhv#u#IaF~%5U zYLjGLKpM1*Z=fv5x{hPySS^crD(fhl(@>V7 zoRoDf15)Y<_=&dh#jHz7g7*Q^2N+L1x1kKrx|Yb4M)EAzc23Q@luCIWAbpULsP?vQfad;OXT|vM^nh?&(x|Re@MQPRfReT3|0$v43L72ez37M01Es0ZRas@Z3 zXHN&b3J_g<8{zV-%Sh41bTcpOB3vYzc5P!U^~^+>PKogZjPc@cGqp_UC1ejdc2eRs z>UmXe;e+H3p8)M(48pe%E<-&#s|`Jh@(MXtOB1^)Jy^v7(gL%9#e_6edMq=j4gv*f zVPho+sVG3&&Q$~~tn@f0Gm7x2H1n6Z2Z;S~qXlMJc)TYli?oxOaSsqHKzcu?0E@Bk z)B*vT^mp+d2gN%B4dXhy=BX(S^m1LCiOvDiHpT)M$9XYR)h;c6vN&-+1Lc`zx9T-W z2^i*nE#w{qxzuPz;MP4s}GM^#mekbN0AiMjjT`_*Q zb}?)!VgWK0u>hHhSb$7LEI_6r`K$}boY0G~4PiTn_zxv^FoJ#T<^cQY1za2s5=|4v?@HWi73|AfSWxvWwXU+^yZrK)Hd?eVK$W zYWFToSkEckAuar4FvD|935(eT{DOd&vv~c%PTvtus)-L4@B(OLc_jXwu9xDEA@sWL-;=Y9~O#K62b8E&MC%Qcgscum$BF;G?W- zNlI-5Na!KYeR2!$WnIcZq=oH-{2DlrbuCHo|MOTW67qmFCl?+qP)8jn(^Fm_)5t+4 zvq!#0F^S{L68^1Sv;oUdzkdf_7Y{&=N2G}@l^jCvVI*UiMaVSZ3_`}yiyS#W_X1l{ z?O+!H?+~&DWrHl??i>Tw5XrdkCXVb{9w8Q;O zB2641WOahI3@SeZq->F;{L^WQB3fV(L29jN8W5Vbo9{ZesawK}1Z+*ArquZvppYkA zhN~iUb2A}VrB%`qC9bA}n_WUAp!D&FG|Nhhj{({$OWEc$qmzY%T#`~f#}h80lkYf9 z`4L-D$M;nQ{0mUX(=NlcjSG-LIP)Cu>hf1lMJN7!pO{|(687;NZ$urgZH%Rk8`CW5 zGX>nBzjav3@hq>S>`Sqt#Q7DVfES!r66RTy@lM(X4zVceU|CBEal1LlnqL9xgSUac^omKAKLHAO zv%H9XK-$g-gc)g<h7h?q9ih&(^Zw zPk>6i?=bf46f21*$F#^}UEXWP{0UIt@Iw_&PqC7Clrtlbt!GDyl_bia05z~T%CPbm zw~bA?nmEQq{!+Ps4^yrsG5!QdI2dVMFDF-J7g;6XP{ggzJ0rf=Do}kt=o5Lj+~{B+ zjaA(2Afz$Uxbywlx#3TMOjYtHK&MAMv-CtfQ)OXv#52qKh-a!Q;7@=w;xnz2*ozRR zT#Y*+lmj>r4c3D=(h9gNn)SeiIQ$nLbuaVG4Hye%m7XMMCk0SY-a^4Q>$CQwzQ zzXAkb)ivZIkM7}7$nd$6 z&_l>$QHSe%a)g|pW=To&D?rL9_Hu62;pM&RvG&g=CAsq9<9xLoTg_6@+}e?`_YTp8 zO{!<>i@VXljX=BW#PZ!)yLK`Oa5lmjz_{bqRrjwk+J*2ou$g^ql-t=~QT+wxy8Lmp z8u=ZdehamW9n$RZwEI)a&(5AN|LcDq^#)^(tgj9^$PV^K-5DE&cJgJE1xXz*EB*(l ze+TNV+R5E&oblItH7rVj6Y)3>cYpElH`R06|Ctb^KU6_+r=WE0)NQ|kfh7cv#$4((tY z!c&ap^$6b;??l&- z`?egJ79dj* z3y`UZ1;|vy0%R)U9-zRV4x+}9xHtE750FOd*K9l#<98b;K&h?NGZ~BVyNwf|*PQ1V zKZsKkEFeyR>Up&)yP%rN1eE9*gaFAcd@!i{%*|l=TY0~nlX$oB$`fSScgG}4=-~i= zj59S>fTWc@C>{1uRuhzfg8Vez-F56gBuXo<1CQa_NWfGRCC4MO*!|k)u!>i*XeTp) zCa8^lPD6&!Ly3Yci65T+!z4f-WF&ojlYlD-9eNm=EGWv0^s*-I$JWsjT}!9;a|*+l z2~0;BPr#U3*@5Y;fP;kWLD@;jYxJ=(&fS(V#u#IaF~%5Uj4{R-V~jDz7-Nhv#u#Ia iF~%5Uj4{TT+VDT1?)x9B{$o1;0000+; literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_photo_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..fccb32dc380bbd50e59d3a3d34128f4f85b2c341 GIT binary patch literal 3544 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_text_away.png b/src/main/res/drawable-xxxhdpi/ic_send_text_away.png new file mode 100644 index 0000000000000000000000000000000000000000..afcfa89d9cca79194ccf095061fabeaea677cf3f GIT binary patch literal 2311 zcmV+i3HbJjP)6k zNDz=fTvW6wsG_6-QuPCg2qZvAHAq0KKw6@B*KR=(T=u5nqo~2Op@kdx3o5wbx($WW zBwp9vIb5u#b)4PV`FLk`&dmF}v647v-^7oOk9T)=K`Et_Qc5YMRDR5$-?V3#<}$bO z3V${Wypi`%${hm(0dvt&<05*I(9HXp-q zG>c(!qalfjAJ7@Dr^_Q*43j$zDYZm*3fd(e$A(^T=oSqrv19>tco2A>@GRq}A;p#~ zphb@0@g?bD3PVGRELlLOIY^BkNDosu8q!F~0$RXh4~rOPqz5V_4QZ&vkF47zj$>0_ zaOf5d=_<(s>hL+>3xcz_LqmE~@_%agbTMG^x>~M-z`GK6NZj49(4tyUG96@T=q!9xDj$NQHX@-JYP%PMY+n zGev`ST1?QOM~m9#M~_*cq0azFOe`d4zW{cbNv5c8+10l1X8n&IEi4n`p0}VI6#BTw6^SOv-od*D-D8cP?7(WZ4!r6#s93K?0F{m7dz=vr?kTjr#w(V-OTYfOOa#w>nEZ(^1jm5Bv;d$VhQ6XtS8M9AO;{tQQ9xMl`u^%`9 z>~r93b^(t^%rPzu`veUrg%RKK>R0^K=+bLSdUS#3nBfoR%UlZkR1Ii=5qBlbmiEx? z(Z%O4?BaLkZvGeLuaxH>KSG3`#QJvw)Yx6QD{T{m6L319$oFvTeL;hz2q#dufFhqO zpjDaIXp|-pP9V2{wwx>aQTWvLA&Q&{h7*u|H2zmy!y2F3d{SA1ehhQ^B(t&WQe%a6 z&Y1_eD7mogxnPxBuw#B_XZ04t8kQF&cbx5H12W8GMORcw1mWz=E}VdDK$e?D*HiK2 z7*0SeAiK!*PTkvDCP6rc-<$h*Ezg^l+ktBO?JIX<3@0ELke+|?Q-E*+aslbP7J z1F|QmAv{u9McvK zg%d~~ z&_sp5eFfpHRX3bK@_@VwK7lLMr zqv4E{ETGAfpMNx*$dUzA)+f+wII$%Q$d+se(r^-s9gsc6b-?ZnX33w1lUn>8s0`;H z!vzI6E{PDe(jH9ee~n2*>9)=6?P&?s3W_RzUWb>|&k0&g?)MPUhn6 zKj^ zE)AzNMhCPec>d9FN@sLH66YTcr?f%?vS6^xCqDleHt_j7J9ygM%PR?2Q3V#h1D#Hw{OH?LdRx z|Dqp`;jFozm$Mp5xnp=hSH6IhhNA`=9#H@Mqv5Df0|T;Wm}ZTC(Bm=lApg#LD5aEA hN-3q3Qc5W$?*EsA$hm38h;{$~002ovPDHLkV1j+tBnSWi literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..929a33a474c09e4b1b9521a0f051abfdd79d51b0 GIT binary patch literal 2597 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_voice_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac667be25560f35c5491f03bb892490560aa736 GIT binary patch literal 2811 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 F=HE#*wblRt literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_voice_online.png b/src/main/res/drawable-xxxhdpi/ic_send_voice_online.png new file mode 100644 index 0000000000000000000000000000000000000000..fcdfcb4378c0444ce389c7edc66083dd6f2f5760 GIT binary patch literal 2868 zcmai0XHb(}7Jh>vQUZoZmkt7ggeDz7f<^=d2~wmeAt1dfb)|eEbfk!d4kCh70~m^c zG-;v%LN_2FMVj;yI&A#0GrO}pvv=m4Gp9atXYQTz#GvooWMSfE0sw$TPZxEUW}p2L z1_({h>r8*78L;;?Jrf4n31WB{P4gMObS=CA;8Nrt0f{V6#?gX2J~zyLj6EHE{IQSi z0e^pggtLdMw;k5Y9^v`eF=JJe7XX+l^ibL+0hue~!Et={{AbtK)+h}rxiTvplEFrG zHQs@3GT_o-uw-U#j`+pUwp?V=V^86OD8>yz;W=A$TudK~BT&}qn*6NX5jIH@)M5h* zH@8$q*u;3x)>a~w&e`l>Sy54g7}#Xkf0~^#>DH){mF8#-2#3S2 zG5jypB)LR4Eu!?&a%i>>VzwYuIF!D9%eD#(q;BiAFTt)0ip9t5gV!$YB)`igsIhYT z<8+d|95M}NH+F3K8wD}881sB}{aW_K$oJ|`&e!rt&ktx#ut{S6Kw#{wc$!b_G71Mk>t z+fM%LoR;sJS7L;G2%k(kpr(;!zr^0yN#cr9XS0j#eJhAah7}bu7e*{QRr5%Ac`i(W zfX`By%?*@3H}3`S_U2p$@^T-=9eZ43%E*RM&N^M~q*=TJcv#9<2i&`}kc47wZs z`z;|fwTau81?%!1$d9~R0_43VoMCdFXPf_A_>JLqE2J>S>H44&0C2aFHVQ9-SuO|- zFGSZx(ig|+4=RP{W6yxeqlMDu%_!Ggg79TpTHKn=mqqYrb)od1b_S&DAbk)n1@%DN zoL3nMzNPb^l`eO05MCL{f-Z%rF2O&GfZ&a~I2Y}k50C+3$j@AiXc<_S{4>}qU0k>< zJjc>TEuJe^gz?$>4LY%)B!CekhE!_K`z2%-uyC(uFrvHPYK*PSWd~%Zp z6uUeg+=D(W?+Sz}O@&@FYm%0_+uWKgs1HEI-h*gKTaVqa79-A*wIW3(E2 zC+&)D?*U7J&ddmSCeKu5%RSM}>Mb)2J6!kxF5}lafXxWO+LW8hbcH+PoHppAQ{zsg z7%K-|=;riFLa^wsgyavD>KDHR5DZE5(G<6HZ@zvSbqMNDEnnn4o*4=U{9iW^5DPF<-OX_DI@YsHjD)e z#ufKY;5(WF2pTGO6v{%Fe0J2Ol8rMk3mkk@Q3D}#d5v$e@^CcXtk-gf8I9L0;Z->2 zIE*jHlK(71eT|&)vqyZ+2tTRSx zK4P*q`j93{yMj}YO%Q8dthoED>2IatJUGapomud)tz6|OtuLBsYrYJsZPa36*lpeVDCr3|o@63s4 zoPcsM@s0sUAM~z^xMbX~IaMEvc|2a5Mr&=6+eLxD%Bnp%>U?qhLc*;xHS_!AjfV#@ z`ou|uzR_8Rt?ZDlZM>lC=yU!r%40pRe)n`|_DTzg{gkb?GeOzFw1{(AzFL&y@uJgF z))~#&O1VDHw;j-I$7BDoTKx0qI^1GGL1K-&MUn`)ecnyqX(zd7W}P7FIojjDUKDmf zCWw}meOkox5j`Y6+;=@}2IX&;ZC=giqBfNGj<~XqdN|jo0Yswg=O(6xcAHb!<+kY% zp6&p3?T?>Js}5XTRCg?k3bvD9t4TbOm;lc-CbT3Nl;=R@#&L^ z=F6b~Qd*OMJB*{!g&UH{+kQZpcK6!EO5?eo`--P7ONHuBBw8+O3Y8C!9>BH9B3jYb z=!HukOBYQCsL=brpz11-7REApQ3Dw9@_i*lcNzO(tXWM|xUe#a4#(-c^vHpfRxPnU zGSIqM(pq{+KaGE7L^9sWU`!E{%Xs> zVkO76T2SdKUB&)d?{~$%dvOlfJ<&Fob6`No>uLH0+gvHcmkN<-PakNNXU&7v!U#er zAy4sph>CL~i_Oerc1x$@w=L1=Dbd&pwRkP7!vyL#cwVFN5N6T&tY&vu`^oePnu$25 z)?eE(U@aIra&P2CC4P77zNfRlWW+xE7yv?cqL*&t>KaBvpd{%CiLKkrz26Zo5C`@c zlKuhY{Uc_O!H}QCT-JW0?X17qiB<(G40ssX@2{{<`*)~q0#$B_T7L?yL!9qnoga`2 zeNPHnwNGbCT~Mp(48F2Zhi5+oLbZFM2MkCfd))cRywgmK8835i;+0s`oVklAv5pNn z>cF=I__TazBw%*kYh~;2F{?I|`q5+~9lhdpyyP)q&7`K$AO^%}p0HIY~87od*h+9ZY=GjCoud>U)mb|6?^eh}&$ z{2X3@v1}Hwv?#g=Zg?4LYU7)GQLOb(4osOu8k>?f8+TBIYc}|Q0z7|Pa{vGU literal 0 HcmV?d00001 diff --git a/src/main/res/layout/fragment_conversation.xml b/src/main/res/layout/fragment_conversation.xml index f9aae10a0..5aa7dffab 100644 --- a/src/main/res/layout/fragment_conversation.xml +++ b/src/main/res/layout/fragment_conversation.xml @@ -57,7 +57,7 @@ android:layout_alignParentRight="true" android:layout_centerVertical="true" android:background="?android:selectableItemBackground" - android:src="@drawable/ic_action_send_now_offline" /> + android:src="@drawable/ic_send_text_offline" /> -1 + + @string/none + @string/recently_used + @string/attach_take_picture + @string/attach_record_voice + @string/send_location + + + + none + recent + photo + voice + location + diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml index cc7727d22..4631bd60c 100644 --- a/src/main/res/values/strings.xml +++ b/src/main/res/values/strings.xml @@ -1,397 +1,397 @@ - Conversations - Settings - New conversation - Manage accounts - End this conversation - Contact details - Conference details - Secure conversation - Add account - Edit name - Add to phone book - Delete from roster - Block contact - Unblock contact - Block domain - Unblock domain - Manage Accounts - Settings - Conference Details - Contact Details - Share with Conversation - Start Conversation - Choose contact - Block list - just now - 1 min ago - %d mins ago - unread Conversations - sending… - Decrypting message. Please wait… - Nickname is already in use - Admin - Owner - Moderator - Participant - Visitor - Would you like to remove %s from your roster? The conversation associated with this contact will not be removed. - Would you like to block %s from sending you messages? - Would you like to unblock %s and allow them to send you messages? - Block all contacts from %s? - Unblock all contacts from %s? - Contact blocked - Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed. - Register new account on server - Change password on server - Share with… - Start Conversation - Invite Contact - Contacts - Cancel - Set - Add - Edit - Delete - Block - Unblock - Save - OK - Conversations has crashed - By sending in stack traces you are helping the ongoing development of Conversations\nWarning: This will use your XMPP account to send the stack trace to the developer. - Send now - Never ask again - Unable to connect to account - Unable to connect to multiple accounts - Touch here to manage your accounts - Attach file - The contact is not in your roster. Would you like to add it? - Add contact - delivery failed - rejected - Preparing image for transmission - Clear history - Clear Conversation History - Do you want to delete all messages within this Conversation?\n\nWarning: This will not influence messages stored on other devices or servers. - Delete messages - End this conversations afterwards - Choose presence to contact - Send plain text message - Send OTR encrypted message - Send OpenPGP encrypted message - Your nickname has been changed - Download Image - Send unencrypted - Decryption failed. Maybe you don’t have the proper private key. - OpenKeychain - Conversations utilizes a third party app called OpenKeychain to encrypt and decrypt messages and to manage your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n(Please restart Conversations afterwards.) - Restart - Install - offering… - waiting… - No OpenPGP Key found - Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\nPlease ask your contact to setup OpenPGP. - No OpenPGP Keys found - Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\nPlease ask your contacts to setup OpenPGP. - Encrypted message received. Touch to view and decrypt. - General - XMPP resource - The name this client identifies itself with - Accept files - Automatically accept files smaller than… - Notification Settings - Notifications - Notify when a new message arrives - Vibrate - Also vibrate when a new message arrives - Sound - Play ringtone with notification - Conference notifications - Always notify when a new conference message arrives instead of only when highlighted - Notification grace period - Disable notifications for a short time after a carbon copy was received - Advanced Options - Never send crash reports - By sending in stack traces you are helping the ongoing development of Conversations - Confirm Messages - Let your contact know when you have received and read a message - UI Options - OpenKeychain reported an error - I/O Error decrypting file - Accept - An error has occurred - Grant presence updates - Preemptively grant and ask for presence subscription for contacts you created - Subscriptions - Your account - Keys - Send presence updates - Receive presence updates - Ask for presence updates - Choose picture - Take picture - Preemptively grant subscription request - The file you selected is not an image - Error while converting the image file - File not found - General I/O error. Maybe you ran out of storage space? - The app you used to select this image did not provide us with enough permissions to read the file.\n\nUse a different file manager to choose an image - Unknown - Temporarily disabled - Online - Connecting\u2026 - Offline - Unauthorized - Server not found - No connectivity - Registration failed - Username already in use - Registration completed - Server does not support registration - Security error - Incompatible server - Plain text - OTR - OpenPGP - Edit account - Delete account - Temporarily disable - Publish avatar - Publish OpenPGP public key - Enable account - Are you sure? - If you delete your account your entire conversation history will be lost - Record voice - Jabber ID - Password - username@example.com - Confirm password - Password - Confirm password - Passwords do not match - This is not a valid Jabber ID - Out of memory. Image is too large - Do you want to add %s to your phones contact list? - online - free to chat - away - extended away - do not disturb - offline - Conference - Other Members - Server info - XEP-0313: MAM - XEP-0280: Message Carbons - XEP-0352: Client State Indication - XEP-0191: Blocking Command - XEP-0237: Roster Versioning - XEP-0198: Stream Management - XEP-0163: PEP (Avatars) - available - unavailable - Missing public key announcements - last seen just now - last seen 1 minute ago - last seen %d minutes ago - last seen 1 hour ago - last seen %d hours ago - last seen 1 day ago - last seen %d days ago - never seen - Encrypted message. Please install OpenKeychain to decrypt. - Unknown OTR fingerprint - OpenPGP encrypted messages found - Reception failed - Your fingerprint - OTR fingerprint - Verify - Decrypt - Conferences - Search - Create Contact - Join Conference - Delete Contact - View contact details - Block contact - Unblock contact - Create - The contact already exists - Join - Conference address - room@conference.example.com - Save as bookmark - Delete bookmark - This bookmark already exists - You - Edit conference subject - Conference not found - Leave - Contact added you to contact list - Add back - %s has read up to this point - Publish - Touch avatar to select picture from gallery - Please note: Everyone subscribed to your presence updates will be allowed to see this picture. - Publishing… - The server rejected your publication - Something went wrong while converting your picture - Could not save avatar to disk - (Or long press to bring back default) - Your server does not support the publication of avatars - whispered - to %s - Send private message to %s - Connect - This account already exists - Next - Current session established - Additional Information - Skip - Disable notifications - Disable notifications for this conversation - Notifications are disabled - Enable - Conference requires password - Enter password - Missing presence updates from contact - Please request presence updates from your contact first.\n\nThis will be used to determine what client(s) your contact is using. - Request now - Delete Fingerprint - Are you sure you would like to delete this fingerprint? - Ignore - Warning: Sending this without mutual presence updates could cause unexpected problems.\n\nGo to contact details to verify your presence subscriptions. - Encryption settings - Force end-to-end encryption - Always send messages encrypted (except for conferences) - Don’t save encrypted messages - Warning: This could lead to message loss - Expert options - Please be careful with these - About Conversations - Build and licensing information - - Conversations • the very last word in instant messaging. - \n\nCopyright © 2014 Daniel Gultsch - \n\nThis program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - \n\nThis program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - \n\nYou should have received a copy of the GNU General Public License - along with this program. If not, see https://www.gnu.org/licenses - \n\nDownload the full source code at https://github.com/siacs/Conversations - \n\n\nLibraries - \n\nhttps://www.bouncycastle.org\n(The MIT License (MIT)) - \n\nhttps://www.gnu.org/software/libidn\n(Apache License, Version 2.0) - \n\nhttps://github.com/ge0rg/MemorizingTrustManager\n(The MIT License (MIT)) - \n\nhttps://github.com/rtreffer/minidns\n(WTFPL) - \n\nhttps://github.com/open-keychain/openkeychain-api-lib\n(Apache License, Version 2.0) - \n\nhttps://github.com/jitsi/otr4j\n(LGPL-3.0) - \n\nhttps://developer.android.com/tools/support-library\n(Apache License, Version 2.0) - \n\nhttps://github.com/zxing/zxing\n(Apache License, Version 2.0) - \n\nhttps://github.com/google/material-design-icons\n(CC BY 4.0) - \n\nhttps://github.com/timroes/EnhancedListView\n(Apache License, Version 2.0) - - Quiet Hours - Start time - End time - Enable quiet hours - Notifications will be silenced during quiet hours - Increase font size - Use larger font sizes across the entire app - Send button indicates status - Request message receipts - Received messages will be marked with a green tick if supported - Colorize send button to indicate contact status - Other - Conference name - Use room’s subject instead of JID to identify conferences - OTR fingerprint copied to clipboard! - You are banned from this conference - This conference is members only - You have been kicked from this conference - using account %s - Checking image on HTTP host - The image file has been deleted - You are not connected. Try again later - Check image file size - Message options - Copy text - Copy original URL - Send again - Image URL - Message text - URL copied to clipboard - Message copied to clipboard - Image transmission failed - Scan QR code - Show QR code - Show block list - Account details - Verify OTR - Remote Fingerprint - scan - (or touch phones) - Socialist Millionaire Protocol - Hint or Question - Shared Secret - Confirm - In progress - Respond - Failed - Secrets do not match - Try again - Finish - Verified! - Contact requested SMP verification - No valid OTR session has been found! - Conversations - Keep service in foreground - Prevents the operating system from killing your connection - Choose file - Receiving %1$s (%2$d%% completed) - Download %s - file - Open %s - sending (%1$d%% completed) - Preparing file for transmission - %s offered for download - Cancel transmission - file transmission failed - The file has been deleted - No application found to open file - Could not verify fingerprint - Manually verify - Are you sure that you want to verify your contacts OTR fingerprint? - Show dynamic tags - Display read-only tags underneath contacts - Enable notifications - Create conference with… - No conference server found - Conference creation failed! - Conference created! - Secret accepted! - Reset - Account avatar - Copy OTR fingerprint to clipboard - Fetching history from server - No more history on server - Updating… - Password changed! - Could not change password - Send a message to start an encrypted chat - Ask question - If you and your contact have a secret in common that no one else knows (like an inside joke or simply what you had for lunch the last time you met) you can use that secret to verify each other’s fingerprints.\n\nYou provide a hint or a question for your contact who will respond with a case-sensitive answer. - Your contact would like to verify your fingerprint by challenging you with a shared secret. Your contact provided the following hint or question for that secret. - Your hint should not be empty - Your shared secret can not be empty - Carefully compare the fingerprint shown below with the fingerprint of your contact.\nYou can use any trusted form of communication like an encrypted e-mail or a telephone call to exchange those. + Conversations + Settings + New conversation + Manage accounts + End this conversation + Contact details + Conference details + Secure conversation + Add account + Edit name + Add to phone book + Delete from roster + Block contact + Unblock contact + Block domain + Unblock domain + Manage Accounts + Settings + Conference Details + Contact Details + Share with Conversation + Start Conversation + Choose contact + Block list + just now + 1 min ago + %d mins ago + unread Conversations + sending… + Decrypting message. Please wait… + Nickname is already in use + Admin + Owner + Moderator + Participant + Visitor + Would you like to remove %s from your roster? The conversation associated with this contact will not be removed. + Would you like to block %s from sending you messages? + Would you like to unblock %s and allow them to send you messages? + Block all contacts from %s? + Unblock all contacts from %s? + Contact blocked + Would you like to remove %s as a bookmark? The conversation associated with this bookmark will not be removed. + Register new account on server + Change password on server + Share with… + Start Conversation + Invite Contact + Contacts + Cancel + Set + Add + Edit + Delete + Block + Unblock + Save + OK + Conversations has crashed + By sending in stack traces you are helping the ongoing development of Conversations\nWarning: This will use your XMPP account to send the stack trace to the developer. + Send now + Never ask again + Unable to connect to account + Unable to connect to multiple accounts + Touch here to manage your accounts + Attach file + The contact is not in your roster. Would you like to add it? + Add contact + delivery failed + rejected + Preparing image for transmission + Clear history + Clear Conversation History + Do you want to delete all messages within this Conversation?\n\nWarning: This will not influence messages stored on other devices or servers. + Delete messages + End this conversations afterwards + Choose presence to contact + Send plain text message + Send OTR encrypted message + Send OpenPGP encrypted message + Your nickname has been changed + Download Image + Send unencrypted + Decryption failed. Maybe you don’t have the proper private key. + OpenKeychain + Conversations utilizes a third party app called OpenKeychain to encrypt and decrypt messages and to manage your public keys.\n\nOpenKeychain is licensed under GPLv3 and available on F-Droid and Google Play.\n\n(Please restart Conversations afterwards.) + Restart + Install + offering… + waiting… + No OpenPGP Key found + Conversations is unable to encrypt your messages because your contact is not announcing his or hers public key.\n\nPlease ask your contact to setup OpenPGP. + No OpenPGP Keys found + Conversations is unable to encrypt your messages because your contacts are not announcing their public key.\n\nPlease ask your contacts to setup OpenPGP. + Encrypted message received. Touch to view and decrypt. + General + XMPP resource + The name this client identifies itself with + Accept files + Automatically accept files smaller than… + Notification Settings + Notifications + Notify when a new message arrives + Vibrate + Also vibrate when a new message arrives + Sound + Play ringtone with notification + Conference notifications + Always notify when a new conference message arrives instead of only when highlighted + Notification grace period + Disable notifications for a short time after a carbon copy was received + Advanced Options + Never send crash reports + By sending in stack traces you are helping the ongoing development of Conversations + Confirm Messages + Let your contact know when you have received and read a message + UI Options + OpenKeychain reported an error + I/O Error decrypting file + Accept + An error has occurred + Grant presence updates + Preemptively grant and ask for presence subscription for contacts you created + Subscriptions + Your account + Keys + Send presence updates + Receive presence updates + Ask for presence updates + Choose picture + Take picture + Preemptively grant subscription request + The file you selected is not an image + Error while converting the image file + File not found + General I/O error. Maybe you ran out of storage space? + The app you used to select this image did not provide us with enough permissions to read the file.\n\nUse a different file manager to choose an image + Unknown + Temporarily disabled + Online + Connecting\u2026 + Offline + Unauthorized + Server not found + No connectivity + Registration failed + Username already in use + Registration completed + Server does not support registration + Security error + Incompatible server + Plain text + OTR + OpenPGP + Edit account + Delete account + Temporarily disable + Publish avatar + Publish OpenPGP public key + Enable account + Are you sure? + If you delete your account your entire conversation history will be lost + Record voice + Jabber ID + Password + username@example.com + Confirm password + Password + Confirm password + Passwords do not match + This is not a valid Jabber ID + Out of memory. Image is too large + Do you want to add %s to your phones contact list? + online + free to chat + away + extended away + do not disturb + offline + Conference + Other Members + Server info + XEP-0313: MAM + XEP-0280: Message Carbons + XEP-0352: Client State Indication + XEP-0191: Blocking Command + XEP-0237: Roster Versioning + XEP-0198: Stream Management + XEP-0163: PEP (Avatars) + available + unavailable + Missing public key announcements + last seen just now + last seen 1 minute ago + last seen %d minutes ago + last seen 1 hour ago + last seen %d hours ago + last seen 1 day ago + last seen %d days ago + never seen + Encrypted message. Please install OpenKeychain to decrypt. + Unknown OTR fingerprint + OpenPGP encrypted messages found + Reception failed + Your fingerprint + OTR fingerprint + Verify + Decrypt + Conferences + Search + Create Contact + Join Conference + Delete Contact + View contact details + Block contact + Unblock contact + Create + The contact already exists + Join + Conference address + room@conference.example.com + Save as bookmark + Delete bookmark + This bookmark already exists + You + Edit conference subject + Conference not found + Leave + Contact added you to contact list + Add back + %s has read up to this point + Publish + Touch avatar to select picture from gallery + Please note: Everyone subscribed to your presence updates will be allowed to see this picture. + Publishing… + The server rejected your publication + Something went wrong while converting your picture + Could not save avatar to disk + (Or long press to bring back default) + Your server does not support the publication of avatars + whispered + to %s + Send private message to %s + Connect + This account already exists + Next + Current session established + Additional Information + Skip + Disable notifications + Disable notifications for this conversation + Notifications are disabled + Enable + Conference requires password + Enter password + Missing presence updates from contact + Please request presence updates from your contact first.\n\nThis will be used to determine what client(s) your contact is using. + Request now + Delete Fingerprint + Are you sure you would like to delete this fingerprint? + Ignore + Warning: Sending this without mutual presence updates could cause unexpected problems.\n\nGo to contact details to verify your presence subscriptions. + Encryption settings + Force end-to-end encryption + Always send messages encrypted (except for conferences) + Don’t save encrypted messages + Warning: This could lead to message loss + Expert options + Please be careful with these + About Conversations + Build and licensing information + + Conversations • the very last word in instant messaging. + \n\nCopyright © 2014 Daniel Gultsch + \n\nThis program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + \n\nThis program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + \n\nYou should have received a copy of the GNU General Public License + along with this program. If not, see https://www.gnu.org/licenses + \n\nDownload the full source code at https://github.com/siacs/Conversations + \n\n\nLibraries + \n\nhttps://www.bouncycastle.org\n(The MIT License (MIT)) + \n\nhttps://www.gnu.org/software/libidn\n(Apache License, Version 2.0) + \n\nhttps://github.com/ge0rg/MemorizingTrustManager\n(The MIT License (MIT)) + \n\nhttps://github.com/rtreffer/minidns\n(WTFPL) + \n\nhttps://github.com/open-keychain/openkeychain-api-lib\n(Apache License, Version 2.0) + \n\nhttps://github.com/jitsi/otr4j\n(LGPL-3.0) + \n\nhttps://developer.android.com/tools/support-library\n(Apache License, Version 2.0) + \n\nhttps://github.com/zxing/zxing\n(Apache License, Version 2.0) + \n\nhttps://github.com/google/material-design-icons\n(CC BY 4.0) + \n\nhttps://github.com/timroes/EnhancedListView\n(Apache License, Version 2.0) + + Quiet Hours + Start time + End time + Enable quiet hours + Notifications will be silenced during quiet hours + Increase font size + Use larger font sizes across the entire app + Send button indicates status + Request message receipts + Received messages will be marked with a green tick if supported + Colorize send button to indicate contact status + Other + Conference name + Use room’s subject instead of JID to identify conferences + OTR fingerprint copied to clipboard! + You are banned from this conference + This conference is members only + You have been kicked from this conference + using account %s + Checking image on HTTP host + The image file has been deleted + You are not connected. Try again later + Check image file size + Message options + Copy text + Copy original URL + Send again + Image URL + Message text + URL copied to clipboard + Message copied to clipboard + Image transmission failed + Scan QR code + Show QR code + Show block list + Account details + Verify OTR + Remote Fingerprint + scan + (or touch phones) + Socialist Millionaire Protocol + Hint or Question + Shared Secret + Confirm + In progress + Respond + Failed + Secrets do not match + Try again + Finish + Verified! + Contact requested SMP verification + No valid OTR session has been found! + Conversations + Keep service in foreground + Prevents the operating system from killing your connection + Choose file + Receiving %1$s (%2$d%% completed) + Download %s + file + Open %s + sending (%1$d%% completed) + Preparing file for transmission + %s offered for download + Cancel transmission + file transmission failed + The file has been deleted + No application found to open file + Could not verify fingerprint + Manually verify + Are you sure that you want to verify your contacts OTR fingerprint? + Show dynamic tags + Display read-only tags underneath contacts + Enable notifications + Create conference with… + No conference server found + Conference creation failed! + Conference created! + Secret accepted! + Reset + Account avatar + Copy OTR fingerprint to clipboard + Fetching history from server + No more history on server + Updating… + Password changed! + Could not change password + Send a message to start an encrypted chat + Ask question + If you and your contact have a secret in common that no one else knows (like an inside joke or simply what you had for lunch the last time you met) you can use that secret to verify each other’s fingerprints.\n\nYou provide a hint or a question for your contact who will respond with a case-sensitive answer. + Your contact would like to verify your fingerprint by challenging you with a shared secret. Your contact provided the following hint or question for that secret. + Your hint should not be empty + Your shared secret can not be empty + Carefully compare the fingerprint shown below with the fingerprint of your contact.\nYou can use any trusted form of communication like an encrypted e-mail or a telephone call to exchange those. Change password Current password New password @@ -442,19 +442,19 @@ Disable foreground service Touch to open Conversations Avatar has been published! - Sending %s - Offering %s - Hide offline - Disable Account - %s is typing... - %s has stopped typing - Typing notifications - Let your contact know when you are writing a new message - Send location - Show location - No application found to display location - Location - Received location + Sending %s + Offering %s + Hide offline + Disable Account + %s is typing... + %s has stopped typing + Typing notifications + Let your contact know when you are writing a new message + Send location + Show location + No application found to display location + Location + Received location Conversation closed Left conference Certificate options @@ -474,4 +474,9 @@ Select %d contact Select %d contacts + Replace send button with quick action + Quick Action + None + Most recently used + Choose quick action diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml index 417e60a43..5b7d69040 100644 --- a/src/main/res/xml/preferences.xml +++ b/src/main/res/xml/preferences.xml @@ -105,6 +105,14 @@ android:key="send_button_status" android:summary="@string/pref_use_send_button_to_indicate_status_summary" android:title="@string/pref_use_send_button_to_indicate_status" /> + Date: Sat, 2 May 2015 11:58:19 +0200 Subject: [PATCH 02/58] shut up linter. fixed build --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a4062ec32..7b8742c94 100644 --- a/build.gradle +++ b/build.gradle @@ -92,7 +92,7 @@ android { } lintOptions { - disable 'ExtraTranslation', 'MissingTranslation', 'InvalidPackage' + disable 'ExtraTranslation', 'MissingTranslation', 'InvalidPackage', 'MissingQuantity' } subprojects { From 48e8e0f1fc1afd8f50e4ac17f235f9f587f637dc Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 2 May 2015 12:00:27 +0200 Subject: [PATCH 03/58] version bump to 1.4.0-alpha (in development) --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 7b8742c94..610b88184 100644 --- a/build.gradle +++ b/build.gradle @@ -44,8 +44,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - versionCode 60 - versionName "1.3.0" + versionCode 61 + versionName "1.4.0-alpha" } compileOptions { From c4bfffe6a9027d041cccf610b448cb6c1367c83d Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 2 May 2015 12:10:56 +0200 Subject: [PATCH 04/58] mark account with incompatible server when no sasl mechansim could be found --- .../conversations/xmpp/XmppConnection.java | 43 +++++++++++-------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 0b6bb15b7..a2b58a14f 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -581,26 +581,31 @@ public class XmppConnection implements Runnable { } else if (mechanisms.contains("DIGEST-MD5")) { saslMechanism = new DigestMd5(tagWriter, account, mXmppConnectionService.getRNG()); } - final JSONObject keys = account.getKeys(); - try { - if (keys.has(Account.PINNED_MECHANISM_KEY) && - keys.getInt(Account.PINNED_MECHANISM_KEY) > saslMechanism.getPriority() ) { - Log.e(Config.LOGTAG, "Auth failed. Authentication mechanism " + saslMechanism.getMechanism() + - " has lower priority (" + String.valueOf(saslMechanism.getPriority()) + - ") than pinned priority (" + keys.getInt(Account.PINNED_MECHANISM_KEY) + - "). Possible downgrade attack?"); - disconnect(true); - changeStatus(Account.State.SECURITY_ERROR); - } - } catch (final JSONException e) { - Log.d(Config.LOGTAG, "Parse error while checking pinned auth mechanism"); + if (saslMechanism != null) { + final JSONObject keys = account.getKeys(); + try { + if (keys.has(Account.PINNED_MECHANISM_KEY) && + keys.getInt(Account.PINNED_MECHANISM_KEY) > saslMechanism.getPriority()) { + Log.e(Config.LOGTAG, "Auth failed. Authentication mechanism " + saslMechanism.getMechanism() + + " has lower priority (" + String.valueOf(saslMechanism.getPriority()) + + ") than pinned priority (" + keys.getInt(Account.PINNED_MECHANISM_KEY) + + "). Possible downgrade attack?"); + disconnect(true); + changeStatus(Account.State.SECURITY_ERROR); + } + } catch (final JSONException e) { + Log.d(Config.LOGTAG, "Parse error while checking pinned auth mechanism"); + } + Log.d(Config.LOGTAG, account.getJid().toString() + ": Authenticating with " + saslMechanism.getMechanism()); + auth.setAttribute("mechanism", saslMechanism.getMechanism()); + if (!saslMechanism.getClientFirstMessage().isEmpty()) { + auth.setContent(saslMechanism.getClientFirstMessage()); + } + tagWriter.writeElement(auth); + } else { + disconnect(true); + changeStatus(Account.State.INCOMPATIBLE_SERVER); } - Log.d(Config.LOGTAG,account.getJid().toString()+": Authenticating with " + saslMechanism.getMechanism()); - auth.setAttribute("mechanism", saslMechanism.getMechanism()); - if (!saslMechanism.getClientFirstMessage().isEmpty()) { - auth.setContent(saslMechanism.getClientFirstMessage()); - } - tagWriter.writeElement(auth); } else if (this.streamFeatures.hasChild("sm", "urn:xmpp:sm:" + smVersion) && streamId != null) { From 43db9cdf4b300183cfd58ad9c7b3ad57ee63ad31 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 3 May 2015 09:30:30 +0200 Subject: [PATCH 05/58] turn send button in cancel button while in whisper mode --- art/ic_send_cancel_away.svg | 54 ++++++++++++++++++ art/ic_send_cancel_dnd.svg | 54 ++++++++++++++++++ art/ic_send_cancel_offline.svg | 54 ++++++++++++++++++ art/ic_send_cancel_online.svg | 54 ++++++++++++++++++ art/render.rb | 4 ++ .../ui/ConversationFragment.java | 42 ++++++++++---- .../res/drawable-hdpi/ic_send_cancel_away.png | Bin 0 -> 1396 bytes .../res/drawable-hdpi/ic_send_cancel_dnd.png | Bin 0 -> 1559 bytes .../drawable-hdpi/ic_send_cancel_offline.png | Bin 0 -> 1206 bytes .../drawable-hdpi/ic_send_cancel_online.png | Bin 0 -> 1531 bytes .../res/drawable-mdpi/ic_send_cancel_away.png | Bin 0 -> 901 bytes .../res/drawable-mdpi/ic_send_cancel_dnd.png | Bin 0 -> 1040 bytes .../drawable-mdpi/ic_send_cancel_offline.png | Bin 0 -> 837 bytes .../drawable-mdpi/ic_send_cancel_online.png | Bin 0 -> 1052 bytes .../drawable-xhdpi/ic_send_cancel_away.png | Bin 0 -> 1724 bytes .../res/drawable-xhdpi/ic_send_cancel_dnd.png | Bin 0 -> 1940 bytes .../drawable-xhdpi/ic_send_cancel_offline.png | Bin 0 -> 1519 bytes .../drawable-xhdpi/ic_send_cancel_online.png | Bin 0 -> 1978 bytes .../drawable-xxhdpi/ic_send_cancel_away.png | Bin 0 -> 2583 bytes .../drawable-xxhdpi/ic_send_cancel_dnd.png | Bin 0 -> 2911 bytes .../ic_send_cancel_offline.png | Bin 0 -> 2290 bytes .../drawable-xxhdpi/ic_send_cancel_online.png | Bin 0 -> 2998 bytes .../drawable-xxxhdpi/ic_send_cancel_away.png | Bin 0 -> 3377 bytes .../drawable-xxxhdpi/ic_send_cancel_dnd.png | Bin 0 -> 3791 bytes .../ic_send_cancel_offline.png | Bin 0 -> 2956 bytes .../ic_send_cancel_online.png | Bin 0 -> 3835 bytes 26 files changed, 250 insertions(+), 12 deletions(-) create mode 100644 art/ic_send_cancel_away.svg create mode 100644 art/ic_send_cancel_dnd.svg create mode 100644 art/ic_send_cancel_offline.svg create mode 100644 art/ic_send_cancel_online.svg create mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_away.png create mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_dnd.png create mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_offline.png create mode 100644 src/main/res/drawable-hdpi/ic_send_cancel_online.png create mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_away.png create mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_dnd.png create mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_offline.png create mode 100644 src/main/res/drawable-mdpi/ic_send_cancel_online.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_away.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_dnd.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_offline.png create mode 100644 src/main/res/drawable-xhdpi/ic_send_cancel_online.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_away.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_offline.png create mode 100644 src/main/res/drawable-xxhdpi/ic_send_cancel_online.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_away.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_dnd.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_offline.png create mode 100644 src/main/res/drawable-xxxhdpi/ic_send_cancel_online.png diff --git a/art/ic_send_cancel_away.svg b/art/ic_send_cancel_away.svg new file mode 100644 index 000000000..1ee9c40f6 --- /dev/null +++ b/art/ic_send_cancel_away.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_cancel_dnd.svg b/art/ic_send_cancel_dnd.svg new file mode 100644 index 000000000..54e02a918 --- /dev/null +++ b/art/ic_send_cancel_dnd.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_cancel_offline.svg b/art/ic_send_cancel_offline.svg new file mode 100644 index 000000000..b88ade09d --- /dev/null +++ b/art/ic_send_cancel_offline.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/ic_send_cancel_online.svg b/art/ic_send_cancel_online.svg new file mode 100644 index 000000000..40946af67 --- /dev/null +++ b/art/ic_send_cancel_online.svg @@ -0,0 +1,54 @@ + + + + + + image/svg+xml + + + + + + + + diff --git a/art/render.rb b/art/render.rb index 32d06f8f7..ad53b1f4f 100755 --- a/art/render.rb +++ b/art/render.rb @@ -26,6 +26,10 @@ images = { 'ic_send_voice_offline.svg' => ['ic_send_voice_offline', 36], 'ic_send_voice_away.svg' => ['ic_send_voice_away', 36], 'ic_send_voice_dnd.svg' => ['ic_send_voice_dnd', 36], + 'ic_send_cancel_online.svg' => ['ic_send_cancel_online', 36], + 'ic_send_cancel_offline.svg' => ['ic_send_cancel_offline', 36], + 'ic_send_cancel_away.svg' => ['ic_send_cancel_away', 36], + 'ic_send_cancel_dnd.svg' => ['ic_send_cancel_dnd', 36], } images.each do |source, result| resolutions.each do |name, factor| diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 37ae00a30..6b11d3109 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -245,6 +245,13 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa case RECORD_VOICE: activity.attachFile(ConversationActivity.ATTACHMENT_CHOICE_RECORD_VOICE); break; + case CANCEL: + if (conversation != null && conversation.getMode() == Conversation.MODE_MULTI) { + conversation.setNextCounterpart(null); + updateChatMsgHint(); + updateSendButton(); + } + break; default: sendMessage(); } @@ -257,8 +264,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void onClick(View v) { - Intent intent = new Intent(getActivity(), - ConferenceDetailsActivity.class); + Intent intent = new Intent(getActivity(), ConferenceDetailsActivity.class); intent.setAction(ConferenceDetailsActivity.ACTION_VIEW_MUC); intent.putExtra("uuid", conversation.getUuid()); startActivity(intent); @@ -271,13 +277,6 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa if (this.conversation == null) { return; } - if (mEditMessage.getText().length() < 1) { - if (this.conversation.getMode() == Conversation.MODE_MULTI) { - conversation.setNextCounterpart(null); - updateChatMsgHint(); - } - return; - } Message message = new Message(conversation, mEditMessage.getText() .toString(), conversation.getNextEncryption(activity .forceEncryption())); @@ -558,6 +557,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa this.mEditMessage.setText(""); this.conversation.setNextCounterpart(counterpart); updateChatMsgHint(); + updateSendButton(); } protected void highlightInConference(String nick) { @@ -808,7 +808,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa updateChatMsgHint(); } - enum SendButtonAction {TEXT, TAKE_PHOTO, SEND_LOCATION, RECORD_VOICE} + enum SendButtonAction {TEXT, TAKE_PHOTO, SEND_LOCATION, RECORD_VOICE, CANCEL} private int getSendButtonImageResource(SendButtonAction action, int status) { switch (action) { @@ -864,6 +864,19 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa default: return R.drawable.ic_send_location_offline; } + case CANCEL: + switch (status) { + case Presences.CHAT: + case Presences.ONLINE: + return R.drawable.ic_send_cancel_online; + case Presences.AWAY: + return R.drawable.ic_send_cancel_away; + case Presences.XA: + case Presences.DND: + return R.drawable.ic_send_cancel_dnd; + default: + return R.drawable.ic_send_cancel_offline; + } } return R.drawable.ic_send_text_offline; } @@ -872,10 +885,15 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa final Conversation c = this.conversation; final SendButtonAction action; final int status; + final boolean empty = this.mEditMessage == null || this.mEditMessage.getText().length() == 0; if (c.getMode() == Conversation.MODE_MULTI) { - action = SendButtonAction.TEXT; + if (empty && c.getNextCounterpart() != null) { + action = SendButtonAction.CANCEL; + } else { + action = SendButtonAction.TEXT; + } } else { - if (this.mEditMessage == null || this.mEditMessage.getText().length() == 0) { + if (empty) { String setting = activity.getPreferences().getString("quick_action","recent"); if (setting.equals("recent")) { setting = activity.getPreferences().getString("recently_used_quick_action","text"); diff --git a/src/main/res/drawable-hdpi/ic_send_cancel_away.png b/src/main/res/drawable-hdpi/ic_send_cancel_away.png new file mode 100644 index 0000000000000000000000000000000000000000..9525c040f959b525aaed82a771c98ad944b5f8bd GIT binary patch literal 1396 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 JPDHLkV1noR>Tdu5 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_cancel_offline.png b/src/main/res/drawable-hdpi/ic_send_cancel_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb4f4f3802bddb22dfea04aff477d957677e8d6 GIT binary patch literal 1206 zcmV;n1WEgeP)8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11T#rQK~!jg?b^$aR7DiW@eeb|!$Bo6GEU+%%0gqJ3?TSexZ^)C z!L5;?#OT650}Ts}Mq-SK(fA+eM&m*S28eD{j4|pc33r7x~uQ4`{;~| z`6ivrRNp#veqB|kPSq_|S!I<`vSx&~H(&~r*o5_+@n2D*j?C#`*3H5 z{bl@&uW=MVwdF_~!p89^_TaXLwtm5f_yS8!3^f(D1AB3ELp%MP$NM-@*FariH{xkL zShwL!zQkMjt7^qM!nWc7HrJ?Ihu`rUzOPbgyka8{;YCbTtk;B%Vh*3~e6pw_Y#W}( zb=CZ8g)wXw5p*u6Lawl_c)`ku>N19De1rL%hs(G@%&B$F{Az`Dcux3KNKTI(5DV}B zg^ePkIa>5kS&!|IAJP{!TU3`iHgeb|hUHL-gpG^EH-`lr#2e~~Tk6z3C_i`Ht6;n5~q_T0PpGu1$f9}^9xxQO2p z!L*i{rlCsHp zqNs8o>orSg$K{JUsl>0GsB>64K&%w=c)RSOoL~5oSOj-xK0it>;uRTbU#_F`BKqvK za$B7xyebYWf62)B;4IAN6Eae4x_##HYw)egsb`Af;gj?6LV)Im&8_CWtGwL9}A%I Uw!#y^2mk;807*qoM6N<$f{<-MhX4Qo literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-hdpi/ic_send_cancel_online.png b/src/main/res/drawable-hdpi/ic_send_cancel_online.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3bc3b561d2e4e8a86311dbe1bdef5f01962a79 GIT binary patch literal 1531 zcmV8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11$aqBK~!jg?OI!p6h##NPF3#(Ws#s{B@r2VdS{Rq1woWQfWN?G zUrb;xF1zZBzW5VNARz+o?2UcXWdDHp3k10YNkEvLZbl&C5(HOKc6O%f_%MuyzD!ql z&%(=ok5#A6IbTk7)z?)8tYHmnSWVDsInK@JdV3nYMWL%-uwKuM9snRhO_O*mQNLHS z=uY)ub$K=7ca+$U$y}~Zavw>0i+p@=I+aUyVhfOkrS1C} z;sAg*GJ3mBf=`$Gyr1w9R2D~>h}m=Y9-%NuM6YJ?;|Bu|82H{DaWACxk&2k}jk5tg z7$U)MrwwcZ249k*Ywr5c^}mviO-#%#*#lD01PB|Gj!g%8q=`?u!)_(fs3gV%(*y6Y z(Bs7DPL^CYFmppol)NGDyy+NYV$Q6yi!?q3u}qg;#{#W&Nh~qYN+Aow@}1`h&O3f zKNM%zmY6+f?@6$v*P7o!N;JpTjBJT^IaAK=b|%rp79fSfpjlE_R*H`hbSV`%CPmOC zrT7RKM%s~x2eE+2Z$6S(VQKq*Lq$;|mdCs?Z?Qb;ol{azCL>3h2{YwU@0>U0EouQX za)izKKlATLbw?6=s{PvIX{E}al&`g#ydm$rapjm4v7W4qRL-=T++nw(G#@n~Cp12c z>C07Q`4S zOxt_?J#8x&QmGaS)AnA57&F~7NzuNr_E2IZXs3zOrZGzYXF# z5aB}}ZlN^h&!n6%PfiOZqR#Htgl=V7*XO0yDl@YAh zrwst0?KkH~CrAMRNfpRBKul|~E=!OmSP(GUj$Efm0RU?Ra!&p&bqEcacD|b-I2DC{ zlHDz72ByPSzZSe9?|gFk6%kD!kaKVo+--2q4^_8vouA;#kNxpd@6*Z-06#Ht6Y%M9F1>fA^sC6-?% z;2V|CD}f)>@Kup<)!c7VnUqpEM?r9CuA#&%)%e-WYf3@e!OH1n3e7c?*tNseDuCOu zUYS?4(!cwg%{JfY%At-Wfa~$`am$@>Z-sS5ZqNk%W2|FBuaxv(}0;D3d=fSTB#ONU9K1BihWwu4}oY`n(+y6v3sTW)Rl=ViT@EZJ%@0n zoZUn`2*TzpenM~`EWR_nmJLH^9yg+R*06@v#lIM#&P!#a(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10|H4zK~z|U?U+q#6Hyd~pEF4cDi*9-ac|mnq126CC{`;91##0t zT}0B@_y=6huKoc@LL`d{?M87SR>fk4xG7@yZR581L0uHAP}4asGEFo3*081b@_Xib+hKMj+|Vrjp@7t- z17XyfOj!YY4+Lgb=9)$XWlVF#ngVf#E7rToqsSyvD20Ylg5oeunkj_0mRVgWLk)q{ z#R0BbiY$|+Ac9JoB2g=p5}_a|76gmjNkL4meImJ0UP>encOl9ANam{e4nlHTvN>GGpNwH83$umfq1daSI8mt)v z(jcu73dS|hU;rvgVP~6Kf&uV|2l;~PZW!z{P$r>yf7{soZ5hT;Gq^&+kq`+gGq*|X z-M)Ro035XgwJOJOm;E|W#=0K*88S|5duB&XEWxBrJCN`t6ik%D-oDX1gMmg*wg6RA zvv!3_O@ixurrI+#J!SMMvsUdu5tbUlH1e5dK4nuZSThK;M#(>RnzX_M?~E|jKkI#p zN!}yYhwKJ-_+$kV7Y~oumf&7;Bvg?mw|3PM6od@7QF@Iz9p-8eYIOSSO5|=H?%wjwDRtkhMJ!t@=c+Awo7=Zx%w}TfUitbm> zCCx|EfZeH6JjG%05MUNb@ys^(=U#&<#xTbOPxkd16adT8k1__9MsE(YPJ|grnzyNC zAOOt~L%2+tYY3g;g4h6F5@Fudzy|`V)=-3p{>O&O;i?x be?q?jnZ6%u(kZCc00000NkvXXu0mjf#G8FC literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-mdpi/ic_send_cancel_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..e4fa38a3ed1c9a3a6cb076ed0a7920e42154f930 GIT binary patch literal 1040 zcmV+r1n>KaP)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11C2>UK~z|U?UzAs8$}ey|Nk+K6c8l+|p| z_}m7iY#W1o>Em(30DypRM1|rU6E&+;W+(xKN-yVv`W*t24eB=m-ZOdBn&&0K&^L&j*XC@Z zCy==yKl@g9?6jKIw1TMAnvv2pH zqJ60SG}Z5P=R?;!D_Sk3X&8llF<uN_tf#F(Dfd7Z^4P0)zI|-0J+%B3$_SYp{?KHFt;E6mRY1T$&^pP4kfzh=Q$QVVpz(hpu*+8H^hODGyX&KnQNa@*M-@K`uLWm1}E{Q-J{BSGV|jM)T9LyrWGhfKcNzC#tU{ z=ZwO5s@1rwz;B-g3;>YwjS0pI1OVB<|B8^+al>fHYOdY*+BW~M{RVYpgSWDQ|K*{6 zgW?vt#WT>j2+&gK192WebH$dXk%0g}78Z`(-`ajhYrIe5_)vQUJ4)fZ?5nTbPIl9g zfqFpz2Ki!{!g(Re6wL7H6GAi}3Go{Rn_9_wq22J)((~N@7xoYBy16%6_Bmhx0000< KMNUMnLSTZZ`Q(=X literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_cancel_offline.png b/src/main/res/drawable-mdpi/ic_send_cancel_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..604dfefaf9b6675cf6afe89ba9346de2d79c2dff GIT binary patch literal 837 zcmV-L1G@Z)P)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10>Vi|K~z|U?buI?6h|1x@y~2@Ma2bO6$Cv<%mxtziP@7Lj0$@5 z;vtF2!JFU<@FjTntOp5*Cl7(dfS82MMM6Zx5M5UkF@lE8VH5wL=;Tn{ZcSM=-7~IW zz~5zNx}K-&+fP09)YHRz{m;}H!e;~@VO#aN2Ft6lNB9djaTzms`L=*Yu^0QWqNUFq z&f@}}EhNw+KF7+I_No5H8T{I0_(8*X2M2HnONWF}`A!N;du>>t4vt{A;c_jf53vrv z4Fhx#yA}u}*7|DRKL!Ds#FuXYrq%@h#Qk(&Bx5`(BydU7=(d=&TiNE+!53JZ4&)-V zADZX^ z%~+ke=LY;Big>zY6Us$zLT{2!RTIa{S4UTG3$*OzQYXghP7#!m&9 zT6LX@ALjPq)Y<4OT0hT0}X>JGlf_5#p3AqYLrsYY=es|q)n z7OHDgo#_hsQ98$FaZITCuas*)UI=UYX<^dw7BDKC@jkF8aW5Sxb&U6g9aDO`H`TZ1 zcVjCcLeINS=z$kfmxRVGtEShW`t9IjZ~o@d#dkvKC>G2nAh<3x!2h(lHjv P00000NkvXXu0mjf#GQ8z literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-mdpi/ic_send_cancel_online.png b/src/main/res/drawable-mdpi/ic_send_cancel_online.png new file mode 100644 index 0000000000000000000000000000000000000000..1b0d1811fd32474771bdc1bc9b8372073dd72cc4 GIT binary patch literal 1052 zcmV+%1mpXOP)(^b8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11DQ!gK~z|U?U>DP8&wp=&w2Tf3ZleuiG&p-{E=bdRg{tyS%4@M z(W)yJR4R+aPSyW_rFZ2|Xk{mhB9#rO5)mH~6+{Y~s7k~pLbYcmET9rZwNWA(HPmxh z*iC1g8GD?hNT8nG%$s}P&vWlP?~Q?H`j3fyN0eY*dnG*~nMnx~0A7Old@Gy&0(6>Xsow&VG+SofbAghv|mIgiql!yru zki@!y_gQt`y>nC`T9xbt0T-Y{l=mRmcXrXf2}1n?3CxvqS4d4C6(pEet9HS?76mmB z6_`uqKA_Q?#|Z-f1jmzWiGli3v*fBW9p56^g zX4WdF@whbp67>Vq)|mey_=czxF%q<(XlDK8J0uJQJr@nsuS^U->N}-h;%=;{;L;AL zt0jbp;DbmY0>8(Cp|==V+U4|2Sfj^+VsOq*AiGEKL7!>&OlMEUg_2l{1bPImcZKQZ zGrfE&3djWK3;?U_+s>Th_-_TzL(5R|T*83N zcgB)9HM*Wm*1xR(WQ})O+5|yPCeDxUG?p5_SgGtsFbF+rcm}r`Qw=*9-l2RcKm0KD z@Doy_;XjI1N)tVOMv%x_)IKKa{)^4T$7`3@{`TKLaAMqA-fEsYKT?O`>tVnIlCeyW zAc17Wm?SQ2%y0bKITUJ))p_@h#IJfzdRR$IPSIHl8;W#lyI_AIX!Y1xpw(Kzy%jb7 z?|lXl68N<}XMcXU&mf;N3z^fViHjsd8@-oA-IsVXs!V+Y0l?JtsiB?0Ki^gp?}0cO zj|AHu@Xd%uZg;MxBLn#+VWym!7$hJ6*)S%yjt~?d0Qkf6P!qK7UUuzn<$0$6h5i9# Wy2%b6T0gH206G7vE#__<&S3ys~Ws1TB3C=?CE1s@ATi4iAOUY&E#ps zqXDR$?RFoZDN@`9uHkc?99K~;Ne}nS8E;tx(mtA~rvqg@@Enk`G?mBWFMQ76@vCH* zbQtEMBr1>&(T1=Yk98=XQ{#eL0!k5y`Z!XNm7D%(y zkY^jhYc2wEhVT<>_*y#2#WNFw*+=$1eAdRXlOW?fNxyV)*VcfwKzf`;Zu1esv$i(M zf^d~-4oVNVZH8Mtdi8Va`Hv4PUK{{r1vPxESsHAH8w;daYG~knlod7(mxyOj_UR~T z(}Ct0lxG{t8sl+Gjnc+ATTO=<38W)zsJN$<8JqM79VP=J3#7v=N7!K=Q-v|ZcI~4n zYIl{@CN(!V$Xaib}1MnCF1|(AuMY=gp zT#*=SV> zRCeoOUJPoUooKY>_TV=sFhleZ?f7&X$LW(|GW@+LeDcCe#!dm0GnqqxebD%)lOC5y*yDc>+`>iu6dgj=RQ(%=2%zsUJgy0Nnp%weD z4+ZQqDf!GPj8DqL|~XrBhcWi{vv&ITO|# zE>N0Z@W>lG6^5OaETU)9h;f{dXPVPt9YO_?43qerH+JjOsoBLRZ&|VkEtP1N8hkp9 z<5b2<9jq$77xOq}>=@cn_AeAEX31jF<)*!)fjtnMVS%JMS*lA(fh5B?9+!-rE9;6y za7Dzte7HN*! z#Z*BEM@?=C8C4Wz7r&!chXg8xALKp$Fd1N8a&6-)#Qm+B#PRr(8_}26gJFh9Cpo4V zK)Grqy;g=s#sy{{4fGD|aiQHw)XJqF~! z5?p4Pk71NF6Ko~Vrnt78qWs8BzO`9a#kjjrH^K mtZOrJf?q7qT7U`9Bs|g__^nDi|V1ipwZxnC7(YEkYB@|JM}X z^8~kOMOis}ime5oWe5%PCrXt2C{uV$0@o0(BV3`0iLe5Dl`2)LRH;&>nEwF>07(b= S^V?(q0000_?qNHq? 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 VKE;ejpvV9K002ovPDHLkV1lRf#9jaZ literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xhdpi/ic_send_cancel_online.png b/src/main/res/drawable-xhdpi/ic_send_cancel_online.png new file mode 100644 index 0000000000000000000000000000000000000000..23a5f2632b0fe2a8b95547a64eb9e8f799c507fc GIT binary patch literal 1978 zcmV;r2SxaaP)BadaAL*0(>n>yI~Q? zrCzT7a{6fbKT+9?OrZ35dW4WC0Q5y=(+R;cm7XXbefRAs%rz}gHlOWYRJR@n_>Cw6 ziV6aM*_$5t_2j|HYLj-{@g}@@cQy7bfCJ6gX%zywveLhLrhK@(>}tbVp!E6lPAzpwgasNT2!|lC*=X#aa#?^{pFeR_ie{n2{d$W z-$UE&X=MW`-%O9EM{LG~7HIJ0!CfNih<#Yw3yM79O?Zj0{X+}X)7|p}Z1qcE6cByg zYwEGE-9rgw|Gzx%`pM2pCBd#SQE`L0tF`nbvp-DNPy&(i9j7>e!sm2i ztduKV6yi)2A_=5QQ7@HprHgy751bLmB{xI*yJ5OD6zI0n8C(B#ai(%pYXC5NboO$y zBCU%PdvWIY%q0MrJT+NOULSnXNhBiuz$^P2K8+g+BqER4`~H7%>dYRUy{xr3EjIzy zw8ojbICUmZO;-E$u9sYvTTQd!+yVviCcMOYvC9svd113Sb^M%PuoY=t92xU-{vAb_ z%1y0l%?q}1Qq*wze0pb4pFn|PYq5u&DuGHrojIHNlBwCx`Gv5{t^S{55(fZM`P49! zJY^jxC5Dd?_+At^c}0BL+9?2nT|)g#DxVrQ^$D}wOv`E`seEc!DV`+I?Gh`9Y*4dN zAaBBpLzr@M3V=YjQh3falfq_BQ{n&s_5JCwbg!w|D3DrJ8RxGLb>EJe)RxTI5F_H| z+PPVvnDUx&{J#L~GO2BuvoS`cJyV-mAT4{Ma1PjIQoAx|BT`fMn%ay42@#ngE8xKx1h9ZWfe5D=mn` zN}M{a7Ks6KH3~#>KI%Ziydj%trc@FF<2j>%_aNSgGJ-}W3t;^ZxzT%4D?|#Kt9gl4 z@qT0hSZp7f+2FcDt#6vzi~?!uxhS05ZakwZl~~0{HD_uw3e>l&@2WtWIy&OI@octK zVjE*`qIbsBZWL(x@bs#J^4%RbSF&hdCaKc&;ptUlYtYbIO)k2)jH+bOj!YtIQ$g*4 z0tw}B5Z0`{YV~qdC5y0`1kGPq$0@AIa_p_3E`b91Ie$R}mu>wjB?q(l>>VfXvbSnf zD#_-v-Ac(p+c<@~(CA=Q!@Zb-dc)c=Fuch5=QfMf%*NBS+(u80b}gt|&j?`5FcVtv zdZRuK1uEu>R|pnuor8FAqexNg$~RX5Mo*1)mGArK34+%3B>}Ja$Nh%$3RRT9``f$! z4anDRg8*^QDp&UHI<&h&g%eSfEC?#0WbZz-`}#-y3y%T(qJt5MDShsP-_L*0xNAt# zD?Vf2W4^A%X3J2><9m>HouKjCIL%@6f=nL?rTCHEm!z`Cc;g(yHTh z(mwe@vM+vD{3raZoRt>*YdKN*smqlFr=orN`SLPWaGJtvF5}yYfOE3KpSj-GX#O(G zTI>WI4q3GW5qW3jqt&tU^X`{fn)>WBcVuqmzRbYSh5U0fc3Odee@ebLc)A&JfCw+t z4V~NfkZ5%T-0HK`T+)zNW{=GVmN7zGi^52qR6f<;rT9G|9)`64%K5gwlDU!0cxFE# zj|ya{74|nH!mF`Z?X{~xO8^#xyg}-lqSah)qIV{!z}}%lhYlS&blAv$0V}4HmX%+PO#lD@ M07*qoM6N<$f?fN$M*si- literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_away.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_away.png new file mode 100644 index 0000000000000000000000000000000000000000..07113f020de82cc16b5cf5e4440deab660b3106d GIT binary patch literal 2583 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png new file mode 100644 index 0000000000000000000000000000000000000000..93fbc44d4d11fdffce01ca12e674b233c7f76c3e GIT binary patch literal 2911 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 JPDHLkV1kf#gp>dP literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_offline.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..10412faba21133da5b4064ca088d10345ae19f90 GIT binary patch literal 2290 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 M07*qoM6N<$f>#D5wg3PC literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_online.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_online.png new file mode 100644 index 0000000000000000000000000000000000000000..6fa18239acaecfdca95fd159b24d46dd36ae2247 GIT binary patch literal 2998 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_cancel_offline.png b/src/main/res/drawable-xxxhdpi/ic_send_cancel_offline.png new file mode 100644 index 0000000000000000000000000000000000000000..abd3af2c2149d3e88a11c30d430069d8c4ee99dc GIT binary patch literal 2956 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 literal 0 HcmV?d00001 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_cancel_online.png b/src/main/res/drawable-xxxhdpi/ic_send_cancel_online.png new file mode 100644 index 0000000000000000000000000000000000000000..80be8edfc926294a7f1692db5302d4c52cddc105 GIT binary patch literal 3835 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 literal 0 HcmV?d00001 From d15da64c5df63584d55a994d568345059a1f1c20 Mon Sep 17 00:00:00 2001 From: Alexander Groshev Date: Sun, 3 May 2015 20:53:27 +0300 Subject: [PATCH 06/58] Fix typos in URL to the project --- .../eu/siacs/conversations/generator/PresenceGenerator.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/generator/PresenceGenerator.java b/src/main/java/eu/siacs/conversations/generator/PresenceGenerator.java index 526005f33..c40c6d051 100644 --- a/src/main/java/eu/siacs/conversations/generator/PresenceGenerator.java +++ b/src/main/java/eu/siacs/conversations/generator/PresenceGenerator.java @@ -49,7 +49,7 @@ public class PresenceGenerator extends AbstractGenerator { Element cap = packet.addChild("c", "http://jabber.org/protocol/caps"); cap.setAttribute("hash", "sha-1"); - cap.setAttribute("node", "http://conversions.im"); + cap.setAttribute("node", "http://conversations.im"); cap.setAttribute("ver", capHash); } return packet; @@ -61,4 +61,4 @@ public class PresenceGenerator extends AbstractGenerator { packet.setAttribute("type","unavailable"); return packet; } -} \ No newline at end of file +} From 2582ece2105f98a7a20d72d8c8dc70772a48286f Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 4 May 2015 04:38:12 +0200 Subject: [PATCH 07/58] open market if share location plugin isn't installed --- .../conversations/ui/ConversationActivity.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index a76efbc35..349d8ffe8 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -409,6 +409,7 @@ public class ConversationActivity extends XmppActivity public void onPresenceSelected() { Intent intent = new Intent(); boolean chooser = false; + String fallbackPackageId = null; switch (attachmentChoice) { case ATTACHMENT_CHOICE_CHOOSE_IMAGE: intent.setAction(Intent.ACTION_GET_CONTENT); @@ -436,6 +437,7 @@ public class ConversationActivity extends XmppActivity break; case ATTACHMENT_CHOICE_LOCATION: intent.setAction("eu.siacs.conversations.location.request"); + fallbackPackageId = "eu.siacs.conversations.sharelocation"; break; } if (intent.resolveActivity(getPackageManager()) != null) { @@ -446,12 +448,25 @@ public class ConversationActivity extends XmppActivity } else { startActivityForResult(intent, attachmentChoice); } + } else if (fallbackPackageId != null) { + startActivity(getInstallApkIntent(fallbackPackageId)); } } }); } } + private Intent getInstallApkIntent(final String packageId) { + Intent intent = new Intent(Intent.ACTION_VIEW); + intent.setData(Uri.parse("market://details?id="+packageId)); + if (intent.resolveActivity(getPackageManager()) != null) { + return intent; + } else { + intent.setData(Uri.parse("http://play.google.com/store/apps/details?id="+packageId)); + return intent; + } + } + public void attachFile(final int attachmentChoice) { switch (attachmentChoice) { case ATTACHMENT_CHOICE_LOCATION: From 32593cff87e913522078bf41ac9c3bdd36e61801 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 4 May 2015 05:07:59 +0200 Subject: [PATCH 08/58] updated contributor list in README.md * added BrianBlade to list * linked Pull Requests for each Contributor --- README.md | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 5519e47f6..e7221eab5 100644 --- a/README.md +++ b/README.md @@ -67,12 +67,13 @@ run your own XMPP server for you and your friends. These XEP's are: (In order of appearance) -* [Rene Treffer](https://github.com/rtreffer) -* [Andreas Straub](https://github.com/strb) -* [Alethea Butler](https://github.com/alethea) -* [M. Dietrich](https://github.com/emdete) -* [betheg](https://github.com/betheg) -* [Sam Whited](https://github.com/SamWhited) +* [Rene Treffer](https://github.com/rtreffer) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Artreffer+is%3Amerged)) +* [Andreas Straub](https://github.com/strb) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Astrb+is%3Amerged)) +* [Alethea Butler](https://github.com/alethea) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Aalethea+is%3Amerged)) +* [M. Dietrich](https://github.com/emdete) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Aemdete+is%3Amerged)) +* [betheg](https://github.com/betheg) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3Abetheg+is%3Amerged)) +* [Sam Whited](https://github.com/SamWhited) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3ASamWhited+is%3Amerged)) +* [BrianBlade](https://github.com/BrianBlade) ([PRs](https://github.com/siacs/Conversations/pulls?utf8=%E2%9C%93&q=is%3Apr+author%3ABrianBlade+is%3Amerged)) #### Logo * [Ilia Rostovtsev](https://github.com/qooob) (Progress) From 768f1ef237a0b6d8f1577add3cb17fc2c4dea287 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 4 May 2015 05:40:41 +0200 Subject: [PATCH 09/58] update build tools and target api --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 610b88184..b312725e0 100644 --- a/build.gradle +++ b/build.gradle @@ -38,8 +38,8 @@ dependencies { } android { - compileSdkVersion 21 - buildToolsVersion "21.1.2" + compileSdkVersion 22 + buildToolsVersion "22.0.1" defaultConfig { minSdkVersion 14 From e388c75452788160501735a965ada9003e2a7dcb Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 4 May 2015 05:49:28 +0200 Subject: [PATCH 10/58] update travis config --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 4f147a61d..a2959e0a2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,7 +3,8 @@ android: components: - platform-tools - tools + - build-tools-22.0.1 - build-tools-21.1.2 - build-tools-19.1.0 - - android-21 + - android-22 - extra-android-m2repository From 61fd5d669651042c553f9782492d7d2c4035a54f Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 4 May 2015 09:54:10 +0200 Subject: [PATCH 11/58] clean up in attachment chooser code. fixed #1168 --- .../ui/ConversationActivity.java | 104 +++++++++--------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 349d8ffe8..b11ff0024 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -398,61 +398,61 @@ public class ConversationActivity extends XmppActivity } private void selectPresenceToAttachFile(final int attachmentChoice, final int encryption) { + final OnPresenceSelected callback = new OnPresenceSelected() { + + @Override + public void onPresenceSelected() { + Intent intent = new Intent(); + boolean chooser = false; + String fallbackPackageId = null; + switch (attachmentChoice) { + case ATTACHMENT_CHOICE_CHOOSE_IMAGE: + intent.setAction(Intent.ACTION_GET_CONTENT); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { + intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE,true); + } + intent.setType("image/*"); + chooser = true; + break; + case ATTACHMENT_CHOICE_TAKE_PHOTO: + Uri uri = xmppConnectionService.getFileBackend().getTakePhotoUri(); + intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); + intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); + mPendingImageUris.clear(); + mPendingImageUris.add(uri); + break; + case ATTACHMENT_CHOICE_CHOOSE_FILE: + chooser = true; + intent.setType("*/*"); + intent.addCategory(Intent.CATEGORY_OPENABLE); + intent.setAction(Intent.ACTION_GET_CONTENT); + break; + case ATTACHMENT_CHOICE_RECORD_VOICE: + intent.setAction(MediaStore.Audio.Media.RECORD_SOUND_ACTION); + break; + case ATTACHMENT_CHOICE_LOCATION: + intent.setAction("eu.siacs.conversations.location.request"); + fallbackPackageId = "eu.siacs.conversations.sharelocation"; + break; + } + if (intent.resolveActivity(getPackageManager()) != null) { + if (chooser) { + startActivityForResult( + Intent.createChooser(intent, getString(R.string.perform_action_with)), + attachmentChoice); + } else { + startActivityForResult(intent, attachmentChoice); + } + } else if (fallbackPackageId != null) { + startActivity(getInstallApkIntent(fallbackPackageId)); + } + } + }; if (attachmentChoice == ATTACHMENT_CHOICE_LOCATION && encryption != Message.ENCRYPTION_OTR) { getSelectedConversation().setNextCounterpart(null); - Intent intent = new Intent("eu.siacs.conversations.location.request"); - startActivityForResult(intent,attachmentChoice); + callback.onPresenceSelected(); } else { - selectPresence(getSelectedConversation(), new OnPresenceSelected() { - - @Override - public void onPresenceSelected() { - Intent intent = new Intent(); - boolean chooser = false; - String fallbackPackageId = null; - switch (attachmentChoice) { - case ATTACHMENT_CHOICE_CHOOSE_IMAGE: - intent.setAction(Intent.ACTION_GET_CONTENT); - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR2) { - intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE,true); - } - intent.setType("image/*"); - chooser = true; - break; - case ATTACHMENT_CHOICE_TAKE_PHOTO: - Uri uri = xmppConnectionService.getFileBackend().getTakePhotoUri(); - intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE); - intent.putExtra(MediaStore.EXTRA_OUTPUT, uri); - mPendingImageUris.clear(); - mPendingImageUris.add(uri); - break; - case ATTACHMENT_CHOICE_CHOOSE_FILE: - chooser = true; - intent.setType("*/*"); - intent.addCategory(Intent.CATEGORY_OPENABLE); - intent.setAction(Intent.ACTION_GET_CONTENT); - break; - case ATTACHMENT_CHOICE_RECORD_VOICE: - intent.setAction(MediaStore.Audio.Media.RECORD_SOUND_ACTION); - break; - case ATTACHMENT_CHOICE_LOCATION: - intent.setAction("eu.siacs.conversations.location.request"); - fallbackPackageId = "eu.siacs.conversations.sharelocation"; - break; - } - if (intent.resolveActivity(getPackageManager()) != null) { - if (chooser) { - startActivityForResult( - Intent.createChooser(intent, getString(R.string.perform_action_with)), - attachmentChoice); - } else { - startActivityForResult(intent, attachmentChoice); - } - } else if (fallbackPackageId != null) { - startActivity(getInstallApkIntent(fallbackPackageId)); - } - } - }); + selectPresence(getSelectedConversation(),callback); } } From e6aa604aded25c304816164624b94bb8abe3d69f Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 5 May 2015 06:10:47 +0200 Subject: [PATCH 12/58] enabled sm logging by default at least for development branch --- src/main/java/eu/siacs/conversations/Config.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index 5cca6c0b7..5bf320a11 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -28,7 +28,7 @@ public final class Config { public static final boolean NO_PROXY_LOOKUP = false; //useful to debug ibb public static final boolean DISABLE_STRING_PREP = false; // setting to true might increase startup performance - public static final boolean EXTENDED_SM_LOGGING = false; // log stanza counts + public static final boolean EXTENDED_SM_LOGGING = true; // log stanza counts public static final long MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000; public static final long MAM_MAX_CATCHUP = MILLISECONDS_IN_DAY / 2; From 5136bf9832b9a7aeb59926b42fe6a6632452c1ef Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 5 May 2015 06:17:34 +0200 Subject: [PATCH 13/58] r/o support for vcard avatars. pep avatars will be prefered --- .../siacs/conversations/entities/Contact.java | 26 ++++++--- .../conversations/generator/IqGenerator.java | 9 +++- .../conversations/parser/MessageParser.java | 2 +- .../conversations/parser/PresenceParser.java | 15 ++++++ .../services/XmppConnectionService.java | 53 +++++++++++++++---- .../siacs/conversations/xmpp/pep/Avatar.java | 50 +++++++++++++---- 6 files changed, 127 insertions(+), 28 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java index cef03ebe4..4ad105b1d 100644 --- a/src/main/java/eu/siacs/conversations/entities/Contact.java +++ b/src/main/java/eu/siacs/conversations/entities/Contact.java @@ -15,6 +15,7 @@ import eu.siacs.conversations.utils.UIHelper; import eu.siacs.conversations.xml.Element; import eu.siacs.conversations.xmpp.jid.InvalidJidException; import eu.siacs.conversations.xmpp.jid.Jid; +import eu.siacs.conversations.xmpp.pep.Avatar; public class Contact implements ListItem, Blockable { public static final String TABLENAME = "contacts"; @@ -40,11 +41,11 @@ public class Contact implements ListItem, Blockable { protected int subscription = 0; protected String systemAccount; protected String photoUri; - protected String avatar; protected JSONObject keys = new JSONObject(); protected JSONArray groups = new JSONArray(); protected Presences presences = new Presences(); protected Account account; + protected Avatar avatar; public Contact(final String account, final String systemName, final String serverName, final Jid jid, final int subscription, final String photoUri, @@ -61,7 +62,11 @@ public class Contact implements ListItem, Blockable { } catch (JSONException e) { this.keys = new JSONObject(); } - this.avatar = avatar; + if (avatar != null) { + this.avatar = new Avatar(); + this.avatar.sha1sum = avatar; + this.avatar.origin = Avatar.Origin.VCARD; //always assume worst + } try { this.groups = (groups == null ? new JSONArray() : new JSONArray(groups)); } catch (JSONException e) { @@ -187,7 +192,7 @@ public class Contact implements ListItem, Blockable { values.put(SYSTEMACCOUNT, systemAccount); values.put(PHOTOURI, photoUri); values.put(KEYS, keys.toString()); - values.put(AVATAR, avatar); + values.put(AVATAR, avatar == null ? null : avatar.getFilename()); values.put(LAST_PRESENCE, lastseen.presence); values.put(LAST_TIME, lastseen.time); values.put(GROUPS, groups.toString()); @@ -411,17 +416,20 @@ public class Contact implements ListItem, Blockable { return getJid().toDomainJid(); } - public boolean setAvatar(String filename) { - if (this.avatar != null && this.avatar.equals(filename)) { + public boolean setAvatar(Avatar avatar) { + if (this.avatar != null && this.avatar.equals(avatar)) { return false; } else { - this.avatar = filename; + if (this.avatar != null && this.avatar.origin == Avatar.Origin.PEP && avatar.origin == Avatar.Origin.VCARD) { + return false; + } + this.avatar = avatar; return true; } } public String getAvatar() { - return this.avatar; + return avatar == null ? null : avatar.getFilename(); } public boolean deleteOtrFingerprint(String fingerprint) { @@ -478,6 +486,10 @@ public class Contact implements ListItem, Blockable { } } + public boolean isSelf() { + return account.getJid().toBareJid().equals(getJid().toBareJid()); + } + public static class Lastseen { public long time; public String presence; diff --git a/src/main/java/eu/siacs/conversations/generator/IqGenerator.java b/src/main/java/eu/siacs/conversations/generator/IqGenerator.java index 6bc629b58..d7366daa8 100644 --- a/src/main/java/eu/siacs/conversations/generator/IqGenerator.java +++ b/src/main/java/eu/siacs/conversations/generator/IqGenerator.java @@ -91,7 +91,7 @@ public class IqGenerator extends AbstractGenerator { return publish("urn:xmpp:avatar:metadata", item); } - public IqPacket retrieveAvatar(final Avatar avatar) { + public IqPacket retrievePepAvatar(final Avatar avatar) { final Element item = new Element("item"); item.setAttribute("id", avatar.sha1sum); final IqPacket packet = retrieve("urn:xmpp:avatar:data", item); @@ -99,6 +99,13 @@ public class IqGenerator extends AbstractGenerator { return packet; } + public IqPacket retrieveVcardAvatar(final Avatar avatar) { + final IqPacket packet = new IqPacket(IqPacket.TYPE.GET); + packet.setTo(avatar.owner); + packet.addChild("vCard","vcard-temp"); + return packet; + } + public IqPacket retrieveAvatarMetaData(final Jid to) { final IqPacket packet = retrieve("urn:xmpp:avatar:metadata", null); if (to != null) { diff --git a/src/main/java/eu/siacs/conversations/parser/MessageParser.java b/src/main/java/eu/siacs/conversations/parser/MessageParser.java index 76d014688..7870fdbff 100644 --- a/src/main/java/eu/siacs/conversations/parser/MessageParser.java +++ b/src/main/java/eu/siacs/conversations/parser/MessageParser.java @@ -494,7 +494,7 @@ public class MessageParser extends AbstractParser implements } else { Contact contact = account.getRoster().getContact( from); - contact.setAvatar(avatar.getFilename()); + contact.setAvatar(avatar); mXmppConnectionService.getAvatarService().clear( contact); mXmppConnectionService.updateConversationUi(); diff --git a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java index 7505b091b..f7872210d 100644 --- a/src/main/java/eu/siacs/conversations/parser/PresenceParser.java +++ b/src/main/java/eu/siacs/conversations/parser/PresenceParser.java @@ -13,6 +13,7 @@ import eu.siacs.conversations.services.XmppConnectionService; import eu.siacs.conversations.xml.Element; import eu.siacs.conversations.xmpp.OnPresencePacketReceived; import eu.siacs.conversations.xmpp.jid.Jid; +import eu.siacs.conversations.xmpp.pep.Avatar; import eu.siacs.conversations.xmpp.stanzas.PresencePacket; public class PresenceParser extends AbstractParser implements @@ -101,6 +102,20 @@ public class PresenceParser extends AbstractParser implements if (nick != null) { contact.setPresenceName(nick.getContent()); } + Element x = packet.findChild("x","vcard-temp:x:update"); + Avatar avatar = Avatar.parsePresence(x); + if (avatar != null && !contact.isSelf()) { + avatar.owner = from.toBareJid(); + if (mXmppConnectionService.getFileBackend().isAvatarCached(avatar)) { + if (contact.setAvatar(avatar)) { + mXmppConnectionService.getAvatarService().clear(contact); + mXmppConnectionService.updateConversationUi(); + mXmppConnectionService.updateRosterUi(); + } + } else { + mXmppConnectionService.fetchAvatar(account,avatar); + } + } mXmppConnectionService.updateRosterUi(); } diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index ec0b3f928..9cee3538b 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1893,9 +1893,19 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa fetchAvatar(account, avatar, null); } - public void fetchAvatar(Account account, final Avatar avatar, - final UiCallback callback) { - IqPacket packet = this.mIqGenerator.retrieveAvatar(avatar); + public void fetchAvatar(Account account, final Avatar avatar, final UiCallback callback) { + switch (avatar.origin) { + case PEP: + fetchAvatarPep(account,avatar,callback); + break; + case VCARD: + fetchAvatarVcard(account, avatar, callback); + break; + } + } + + private void fetchAvatarPep(Account account, final Avatar avatar, final UiCallback callback) { + IqPacket packet = this.mIqGenerator.retrievePepAvatar(avatar); sendIqPacket(account, packet, new OnIqPacketReceived() { @Override @@ -1916,7 +1926,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa } else { Contact contact = account.getRoster() .getContact(avatar.owner); - contact.setAvatar(avatar.getFilename()); + contact.setAvatar(avatar); getAvatarService().clear(contact); updateConversationUi(); updateRosterUi(); @@ -1925,8 +1935,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa callback.success(avatar); } Log.d(Config.LOGTAG, account.getJid().toBareJid() - + ": succesfully fetched avatar for " - + avatar.owner); + + ": succesfuly fetched pep avatar for " + avatar.owner); return; } } else { @@ -1949,8 +1958,34 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa }); } - public void checkForAvatar(Account account, - final UiCallback callback) { + private void fetchAvatarVcard(final Account account, final Avatar avatar, final UiCallback callback) { + IqPacket packet = this.mIqGenerator.retrieveVcardAvatar(avatar); + this.sendIqPacket(account,packet,new OnIqPacketReceived() { + @Override + public void onIqPacketReceived(Account account, IqPacket packet) { + if (packet.getType() == IqPacket.TYPE.RESULT) { + Element vCard = packet.findChild("vCard","vcard-temp"); + Element photo = vCard != null ? vCard.findChild("PHOTO") : null; + Element binval = photo != null ? photo.findChild("BINVAL") : null; + if (binval != null) { + avatar.image = binval.getContent(); + if (getFileBackend().save(avatar)) { + Log.d(Config.LOGTAG, account.getJid().toBareJid() + + ": successfully fetched vCard avatar for " + avatar.owner); + Contact contact = account.getRoster() + .getContact(avatar.owner); + contact.setAvatar(avatar); + getAvatarService().clear(contact); + updateConversationUi(); + updateRosterUi(); + } + } + } + } + }); + } + + public void checkForAvatar(Account account, final UiCallback callback) { IqPacket packet = this.mIqGenerator.retrieveAvatarMetaData(null); this.sendIqPacket(account, packet, new OnIqPacketReceived() { @@ -1972,7 +2007,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa getAvatarService().clear(account); callback.success(avatar); } else { - fetchAvatar(account, avatar, callback); + fetchAvatarPep(account, avatar, callback); } return; } diff --git a/src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java b/src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java index 9f5ac988b..04d55bbe5 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java +++ b/src/main/java/eu/siacs/conversations/xmpp/pep/Avatar.java @@ -6,6 +6,9 @@ import eu.siacs.conversations.xmpp.jid.Jid; import android.util.Base64; public class Avatar { + + public enum Origin { PEP, VCARD }; + public String type; public String sha1sum; public String image; @@ -13,21 +16,14 @@ public class Avatar { public int width; public long size; public Jid owner; + public Origin origin = Origin.PEP; //default to maintain compat public byte[] getImageAsBytes() { return Base64.decode(image, Base64.DEFAULT); } public String getFilename() { - if (type == null) { - return sha1sum; - } else if (type.equalsIgnoreCase("image/webp")) { - return sha1sum + ".webp"; - } else if (type.equalsIgnoreCase("image/png")) { - return sha1sum + ".png"; - } else { - return sha1sum; - } + return sha1sum; } public static Avatar parseMetadata(Element items) { @@ -64,10 +60,44 @@ public class Avatar { return null; } avatar.type = child.getAttribute("type"); - avatar.sha1sum = child.getAttribute("id"); + String hash = child.getAttribute("id"); + if (!isValidSHA1(hash)) { + return null; + } + avatar.sha1sum = hash; + avatar.origin = Origin.PEP; return avatar; } } return null; } + + @Override + public boolean equals(Object object) { + if (object != null && object instanceof Avatar) { + Avatar other = (Avatar) object; + return other.getFilename().equals(this.getFilename()); + } else { + return false; + } + } + + public static Avatar parsePresence(Element x) { + Element photo = x != null ? x.findChild("photo") : null; + String hash = photo != null ? photo.getContent() : null; + if (hash == null) { + return null; + } + if (!isValidSHA1(hash)) { + return null; + } + Avatar avatar = new Avatar(); + avatar.sha1sum = hash; + avatar.origin = Origin.VCARD; + return avatar; + } + + private static boolean isValidSHA1(String s) { + return s != null && s.matches("[a-fA-F0-9]{40}"); + } } From 9eaa6800cae844b15df7b727d476fc9392f0f4bf Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 5 May 2015 08:10:16 +0200 Subject: [PATCH 14/58] bumped version code --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b312725e0..a8b32a6b2 100644 --- a/build.gradle +++ b/build.gradle @@ -44,7 +44,7 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - versionCode 61 + versionCode 62 versionName "1.4.0-alpha" } From b7c672e10e974a5eee19fb50556851e1c8d4635b Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 5 May 2015 10:29:41 +0200 Subject: [PATCH 15/58] avoid fetching avatars multiple times in parallel --- .../services/XmppConnectionService.java | 47 +++++++++++++++---- 1 file changed, 39 insertions(+), 8 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 9cee3538b..6b53b7588 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -41,6 +41,7 @@ import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.Hashtable; +import java.util.Iterator; import java.util.List; import java.util.Locale; import java.util.Map; @@ -210,6 +211,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa private HttpConnectionManager mHttpConnectionManager = new HttpConnectionManager( this); private AvatarService mAvatarService = new AvatarService(this); + private final List mInProgressAvatarFetches = new ArrayList<>(); private MessageArchiveService mMessageArchiveService = new MessageArchiveService(this); private OnConversationUpdate mOnConversationUpdate = null; private Integer convChangedListenerCount = 0; @@ -328,7 +330,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa message.setCounterpart(conversation.getNextCounterpart()); } if (encryption == Message.ENCRYPTION_DECRYPTED) { - getPgpEngine().encrypt(message,callback); + getPgpEngine().encrypt(message, callback); } else { callback.success(message); } @@ -1893,14 +1895,27 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa fetchAvatar(account, avatar, null); } + private static String generateFetchKey(Account account, final Avatar avatar) { + return account.getJid().toBareJid()+"_"+avatar.owner+"_"+avatar.sha1sum; + } + public void fetchAvatar(Account account, final Avatar avatar, final UiCallback callback) { - switch (avatar.origin) { - case PEP: - fetchAvatarPep(account,avatar,callback); - break; - case VCARD: - fetchAvatarVcard(account, avatar, callback); - break; + final String KEY = generateFetchKey(account, avatar); + synchronized(this.mInProgressAvatarFetches) { + if (this.mInProgressAvatarFetches.contains(KEY)) { + return; + } else { + switch (avatar.origin) { + case PEP: + this.mInProgressAvatarFetches.add(KEY); + fetchAvatarPep(account, avatar, callback); + break; + case VCARD: + this.mInProgressAvatarFetches.add(KEY); + fetchAvatarVcard(account, avatar, callback); + break; + } + } } } @@ -1910,6 +1925,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa @Override public void onIqPacketReceived(Account account, IqPacket result) { + synchronized (mInProgressAvatarFetches) { + mInProgressAvatarFetches.remove(generateFetchKey(account, avatar)); + } final String ERROR = account.getJid().toBareJid() + ": fetching avatar for " + avatar.owner + " failed "; if (result.getType() == IqPacket.TYPE.RESULT) { @@ -1963,6 +1981,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa this.sendIqPacket(account,packet,new OnIqPacketReceived() { @Override public void onIqPacketReceived(Account account, IqPacket packet) { + synchronized(mInProgressAvatarFetches) { + mInProgressAvatarFetches.remove(generateFetchKey(account,avatar)); + } if (packet.getType() == IqPacket.TYPE.RESULT) { Element vCard = packet.findChild("vCard","vcard-temp"); Element photo = vCard != null ? vCard.findChild("PHOTO") : null; @@ -2043,6 +2064,16 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa disconnect(account, force); } if (!account.isOptionSet(Account.OPTION_DISABLED)) { + + synchronized (this.mInProgressAvatarFetches) { + for(Iterator iterator = this.mInProgressAvatarFetches.iterator(); iterator.hasNext();) { + final String KEY = iterator.next(); + if (KEY.startsWith(account.getJid().toBareJid()+"_")) { + iterator.remove(); + } + } + } + if (account.getXmppConnection() == null) { account.setXmppConnection(createConnection(account)); } From db726a59b85146c583432bd9da58a34641356f0c Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 6 May 2015 04:29:45 +0200 Subject: [PATCH 16/58] fwiw don't allow stanza count to go over MAX_INT --- .../java/eu/siacs/conversations/xmpp/XmppConnection.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index a2b58a14f..0af6045fa 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -437,6 +437,10 @@ public class XmppConnection implements Runnable { throw new IOException("interrupted mid tag"); } } + if (stanzasReceived == Integer.MAX_VALUE) { + resetStreamId(); + throw new IOException("time to restart the session. cant handle >2 billion pcks"); + } ++stanzasReceived; lastPacketReceived = SystemClock.elapsedRealtime(); return element; @@ -901,6 +905,11 @@ public class XmppConnection implements Runnable { } private synchronized void sendPacket(final AbstractStanza packet) { + if (stanzasSent == Integer.MAX_VALUE) { + resetStreamId(); + disconnect(true); + return; + } final String name = packet.getName(); if (name.equals("iq") || name.equals("message") || name.equals("presence")) { ++stanzasSent; From d74e8a8a0ea20258e9e0eefbea75f94b7559f9b7 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 6 May 2015 04:33:21 +0200 Subject: [PATCH 17/58] fixed npe when missing instructions on failed register --- .../eu/siacs/conversations/xmpp/XmppConnection.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 0af6045fa..0aa67da2c 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -647,10 +647,8 @@ public class XmppConnection implements Runnable { if (packet.query().hasChild("username") && (packet.query().hasChild("password"))) { final IqPacket register = new IqPacket(IqPacket.TYPE.SET); - final Element username = new Element("username") - .setContent(account.getUsername()); - final Element password = new Element("password") - .setContent(account.getPassword()); + final Element username = new Element("username").setContent(account.getUsername()); + final Element password = new Element("password").setContent(account.getPassword()); register.query("jabber:iq:register").addChild(username); register.query().addChild(password); sendIqPacket(register, new OnIqPacketReceived() { @@ -663,7 +661,7 @@ public class XmppConnection implements Runnable { changeStatus(Account.State.REGISTRATION_SUCCESSFUL); } else if (packet.hasChild("error") && (packet.findChild("error") - .hasChild("conflict"))) { + .hasChild("conflict"))) { changeStatus(Account.State.REGISTRATION_CONFLICT); } else { changeStatus(Account.State.REGISTRATION_FAILED); @@ -677,7 +675,7 @@ public class XmppConnection implements Runnable { disconnect(true); Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": could not register. instructions are" - + instructions.getContent()); + + instructions != null ? instructions.getContent() : ""); } } }); @@ -692,7 +690,7 @@ public class XmppConnection implements Runnable { } final IqPacket iq = new IqPacket(IqPacket.TYPE.SET); iq.addChild("bind", "urn:ietf:params:xml:ns:xmpp-bind") - .addChild("resource").setContent(account.getResource()); + .addChild("resource").setContent(account.getResource()); this.sendUnmodifiedIqPacket(iq, new OnIqPacketReceived() { @Override public void onIqPacketReceived(final Account account, final IqPacket packet) { From 05f0aa614f5af638c6d6da5a4c6a119e1ec6eda8 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Thu, 7 May 2015 11:07:15 +0200 Subject: [PATCH 18/58] fixed npe when binval value of vcard avatar is null --- .../siacs/conversations/services/XmppConnectionService.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 6b53b7588..e58f760ed 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1988,8 +1988,9 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa Element vCard = packet.findChild("vCard","vcard-temp"); Element photo = vCard != null ? vCard.findChild("PHOTO") : null; Element binval = photo != null ? photo.findChild("BINVAL") : null; - if (binval != null) { - avatar.image = binval.getContent(); + String image = binval != null ? binval.getContent() : null; + if (image != null) { + avatar.image = image; if (getFileBackend().save(avatar)) { Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": successfully fetched vCard avatar for " + avatar.owner); From e0653c03713efe0e4f2f5438b31d1417b059761b Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Thu, 7 May 2015 14:19:51 +0200 Subject: [PATCH 19/58] fixed encrypted ibb file transfer which was broken with ART. fixes #1172 --- .../xmpp/jingle/JingleConnection.java | 2 +- .../xmpp/jingle/JingleInbandTransport.java | 59 +++++++++++-------- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java index e448f9477..4847d5f12 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java @@ -99,7 +99,7 @@ public class JingleConnection implements Downloadable { file.delete(); } } - Log.d(Config.LOGTAG,"sucessfully transmitted file:" + file.getAbsolutePath()); + Log.d(Config.LOGTAG,"successfully transmitted file:" + file.getAbsolutePath()+" ("+file.getSha1Sum()+")"); if (message.getEncryption() != Message.ENCRYPTION_PGP) { Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE); intent.setData(Uri.fromFile(file)); diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java index 9866af03d..4e039ad85 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java @@ -8,7 +8,9 @@ import java.security.NoSuchAlgorithmException; import java.util.Arrays; import android.util.Base64; +import android.util.Log; +import eu.siacs.conversations.Config; import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.DownloadableFile; import eu.siacs.conversations.persistance.FileBackend; @@ -110,7 +112,11 @@ public class JingleInbandTransport extends JingleTransport { this.onFileTransmissionStatusChanged = callback; this.file = file; try { - this.remainingSize = this.file.getSize(); + if (this.file.getKey() != null) { + this.remainingSize = (this.file.getSize() / 16 + 1) * 16; + } else { + this.remainingSize = this.file.getSize(); + } this.fileSize = this.remainingSize; this.digest = MessageDigest.getInstance("SHA-1"); this.digest.reset(); @@ -150,29 +156,33 @@ public class JingleInbandTransport extends JingleTransport { byte[] buffer = new byte[this.bufferSize]; try { int count = fileInputStream.read(buffer); - if (count == -1) { - file.setSha1Sum(CryptoHelper.bytesToHex(digest.digest())); - fileInputStream.close(); - this.onFileTransmissionStatusChanged.onFileTransmitted(file); - } else { - this.remainingSize -= count; - this.digest.update(buffer); - String base64 = Base64.encodeToString(buffer, Base64.NO_WRAP); - IqPacket iq = new IqPacket(IqPacket.TYPE.SET); - iq.setTo(this.counterpart); - Element data = iq.addChild("data", - "http://jabber.org/protocol/ibb"); - data.setAttribute("seq", Integer.toString(this.seq)); - data.setAttribute("block-size", - Integer.toString(this.blockSize)); - data.setAttribute("sid", this.sessionId); - data.setContent(base64); - this.account.getXmppConnection().sendIqPacket(iq, - this.onAckReceived); - this.seq++; + this.remainingSize -= count; + if (count != buffer.length && count != -1) { + int rem = fileInputStream.read(buffer,count,buffer.length-count); + if (rem > 0) { + count += rem; + } + } + this.digest.update(buffer,0,count); + String base64 = Base64.encodeToString(buffer,0,count, Base64.NO_WRAP); + IqPacket iq = new IqPacket(IqPacket.TYPE.SET); + iq.setTo(this.counterpart); + Element data = iq.addChild("data", "http://jabber.org/protocol/ibb"); + data.setAttribute("seq", Integer.toString(this.seq)); + data.setAttribute("block-size", Integer.toString(this.blockSize)); + data.setAttribute("sid", this.sessionId); + data.setContent(base64); + this.account.getXmppConnection().sendIqPacket(iq, this.onAckReceived); + this.seq++; + if (this.remainingSize > 0) { connection.updateProgress((int) ((((double) (this.fileSize - this.remainingSize)) / this.fileSize) * 100)); + } else { + file.setSha1Sum(CryptoHelper.bytesToHex(digest.digest())); + this.onFileTransmissionStatusChanged.onFileTransmitted(file); + fileInputStream.close(); } } catch (IOException e) { + Log.d(Config.LOGTAG,e.getMessage()); FileBackend.close(fileInputStream); this.onFileTransmissionStatusChanged.onFileTransferAborted(); } @@ -182,14 +192,10 @@ public class JingleInbandTransport extends JingleTransport { try { byte[] buffer = Base64.decode(data, Base64.NO_WRAP); if (this.remainingSize < buffer.length) { - buffer = Arrays - .copyOfRange(buffer, 0, (int) this.remainingSize); + buffer = Arrays.copyOfRange(buffer, 0, (int) this.remainingSize); } this.remainingSize -= buffer.length; - - this.fileOutputStream.write(buffer); - this.digest.update(buffer); if (this.remainingSize <= 0) { file.setSha1Sum(CryptoHelper.bytesToHex(digest.digest())); @@ -200,6 +206,7 @@ public class JingleInbandTransport extends JingleTransport { connection.updateProgress((int) ((((double) (this.fileSize - this.remainingSize)) / this.fileSize) * 100)); } } catch (IOException e) { + Log.d(Config.LOGTAG,e.getMessage()); FileBackend.close(fileOutputStream); this.onFileTransmissionStatusChanged.onFileTransferAborted(); } From 90b74d4b800d936c270d922eaab98eaa8a1864fa Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Thu, 7 May 2015 14:24:40 +0200 Subject: [PATCH 20/58] version code bumped --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index a8b32a6b2..0bde37f54 100644 --- a/build.gradle +++ b/build.gradle @@ -44,7 +44,7 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - versionCode 62 + versionCode 63 versionName "1.4.0-alpha" } From c4a4dd239207d95647e50f3132277e2371078d0d Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Fri, 8 May 2015 06:30:06 +0200 Subject: [PATCH 21/58] throw proper exception before changing account into error state --- .../conversations/xmpp/XmppConnection.java | 42 ++++++++++++++----- 1 file changed, 31 insertions(+), 11 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 0aa67da2c..6c67c0726 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -167,7 +167,7 @@ public class XmppConnection implements Runnable { try { String srvRecordServer; try { - srvRecordServer=IDN.toASCII(namePort.getString("name")); + srvRecordServer = IDN.toASCII(namePort.getString("name")); } catch (final IllegalArgumentException e) { // TODO: Handle me?` srvRecordServer = ""; @@ -224,6 +224,12 @@ public class XmppConnection implements Runnable { if (socket.isConnected()) { socket.close(); } + } catch (final IncompatibleServerException e) { + this.changeStatus(Account.State.INCOMPATIBLE_SERVER); + } catch (final SecurityException e) { + this.changeStatus(Account.State.SECURITY_ERROR); + } catch (final UnauthorizedException e) { + this.changeStatus(Account.State.UNAUTHORIZED); } catch (final UnknownHostException | ConnectException e) { this.changeStatus(Account.State.SERVER_NOT_FOUND); } catch (final IOException | XmlPullParserException | NoSuchAlgorithmException e) { @@ -231,6 +237,13 @@ public class XmppConnection implements Runnable { this.changeStatus(Account.State.OFFLINE); this.attempt--; //don't count attempt when reconnecting instantly anyway } finally { + if (socket != null) { + try { + socket.close(); + } catch (IOException e) { + + } + } if (wakeLock.isHeld()) { try { wakeLock.release(); @@ -279,8 +292,7 @@ public class XmppConnection implements Runnable { processStream(tagReader.readTag()); break; } else if (nextTag.isStart("failure")) { - tagReader.readElement(nextTag); - changeStatus(Account.State.UNAUTHORIZED); + throw new UnauthorizedException(); } else if (nextTag.isStart("challenge")) { final String challenge = tagReader.readElement(nextTag).getContent(); final Element response = new Element("response"); @@ -542,8 +554,7 @@ public class XmppConnection implements Runnable { if (!verifier.verify(account.getServer().getDomainpart(),sslSocket.getSession())) { Log.d(Config.LOGTAG,account.getJid().toBareJid()+": TLS certificate verification failed"); - disconnect(true); - changeStatus(Account.State.SECURITY_ERROR); + throw new SecurityException(); } tagReader.setInputStream(sslSocket.getInputStream()); tagWriter.setOutputStream(sslSocket.getOutputStream()); @@ -554,8 +565,7 @@ public class XmppConnection implements Runnable { sslSocket.close(); } catch (final NoSuchAlgorithmException | KeyManagementException e1) { Log.d(Config.LOGTAG,account.getJid().toBareJid()+": TLS certificate verification failed"); - disconnect(true); - changeStatus(Account.State.SECURITY_ERROR); + throw new SecurityException(); } } @@ -594,8 +604,7 @@ public class XmppConnection implements Runnable { " has lower priority (" + String.valueOf(saslMechanism.getPriority()) + ") than pinned priority (" + keys.getInt(Account.PINNED_MECHANISM_KEY) + "). Possible downgrade attack?"); - disconnect(true); - changeStatus(Account.State.SECURITY_ERROR); + throw new SecurityException(); } } catch (final JSONException e) { Log.d(Config.LOGTAG, "Parse error while checking pinned auth mechanism"); @@ -607,8 +616,7 @@ public class XmppConnection implements Runnable { } tagWriter.writeElement(auth); } else { - disconnect(true); - changeStatus(Account.State.INCOMPATIBLE_SERVER); + throw new IncompatibleServerException(); } } else if (this.streamFeatures.hasChild("sm", "urn:xmpp:sm:" + smVersion) @@ -1098,6 +1106,18 @@ public class XmppConnection implements Runnable { public final ArrayList> identities = new ArrayList<>(); } + private class UnauthorizedException extends IOException { + + } + + private class SecurityException extends IOException { + + } + + private class IncompatibleServerException extends IOException { + + } + public class Features { XmppConnection connection; private boolean carbonsEnabled = false; From d9e5035c084a5bf307d88fb4b69c585ffb5e859b Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Fri, 8 May 2015 06:50:28 +0200 Subject: [PATCH 22/58] config option to reset attempt counts when changing network (default=true) --- .../java/eu/siacs/conversations/Config.java | 1 + .../services/XmppConnectionService.java | 26 +++++++++++++------ 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index 5bf320a11..9f5d14fde 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -29,6 +29,7 @@ public final class Config { public static final boolean NO_PROXY_LOOKUP = false; //useful to debug ibb public static final boolean DISABLE_STRING_PREP = false; // setting to true might increase startup performance public static final boolean EXTENDED_SM_LOGGING = true; // log stanza counts + public static final boolean RESET_ATTEMPT_COUNT_ON_NETWORK_CHANGE = true; //setting to true might increase power consumption public static final long MILLISECONDS_IN_DAY = 24 * 60 * 60 * 1000; public static final long MAM_MAX_CATCHUP = MILLISECONDS_IN_DAY / 2; diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index e58f760ed..34c0a5d10 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -424,6 +424,11 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa final String action = intent == null ? null : intent.getAction(); if (action != null) { switch (action) { + case ConnectivityManager.CONNECTIVITY_ACTION: + if (hasInternetConnection() && Config.RESET_ATTEMPT_COUNT_ON_NETWORK_CHANGE) { + resetAllAttemptCounts(true); + } + break; case ACTION_MERGE_PHONE_CONTACTS: if (mRestoredFromDatabase) { PhoneHelper.loadPhoneContacts(getApplicationContext(), @@ -442,14 +447,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa toggleForegroundService(); break; case ACTION_TRY_AGAIN: - for(Account account : accounts) { - if (account.hasErrorStatus()) { - final XmppConnection connection = account.getXmppConnection(); - if (connection != null) { - connection.resetAttemptCount(); - } - } - } + resetAllAttemptCounts(false); break; case ACTION_DISABLE_ACCOUNT: try { @@ -531,6 +529,18 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa return START_STICKY; } + private void resetAllAttemptCounts(boolean reallyAll) { + Log.d(Config.LOGTAG,"resetting all attepmt counts"); + for(Account account : accounts) { + if (account.hasErrorStatus() || reallyAll) { + final XmppConnection connection = account.getXmppConnection(); + if (connection != null) { + connection.resetAttemptCount(); + } + } + } + } + public boolean hasInternetConnection() { ConnectivityManager cm = (ConnectivityManager) getApplicationContext() .getSystemService(Context.CONNECTIVITY_SERVICE); From 9e78e3e09da47463d97a25acd051a8218fa98e54 Mon Sep 17 00:00:00 2001 From: Andreas Shimokawa Date: Fri, 8 May 2015 21:36:20 +0200 Subject: [PATCH 23/58] only forward incoming chat messages to Pebble App and Gadgetbridge --- .../siacs/conversations/services/NotificationService.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/services/NotificationService.java b/src/main/java/eu/siacs/conversations/services/NotificationService.java index fc40ce756..e111da955 100644 --- a/src/main/java/eu/siacs/conversations/services/NotificationService.java +++ b/src/main/java/eu/siacs/conversations/services/NotificationService.java @@ -85,7 +85,11 @@ public class NotificationService { i.putExtra("messageType", "PEBBLE_ALERT"); i.putExtra("sender", "Conversations"); /* XXX: Shouldn't be hardcoded, e.g., AbstractGenerator.APP_NAME); */ i.putExtra("notificationData", notificationData); - + // notify Pebble App + i.setPackage("com.getpebble.android"); + mXmppConnectionService.sendBroadcast(i); + // notify Gadgetbridge + i.setPackage("nodomain.freeyourgadget.gadgetbridge"); mXmppConnectionService.sendBroadcast(i); } From 4c486f5e583ddfc1f53f296d8a6fa9672981440a Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 10 May 2015 03:12:44 +0200 Subject: [PATCH 24/58] paint single unicode hearts as red and slightly larger --- .../siacs/conversations/entities/Message.java | 72 ++++++++++--------- .../ui/adapter/MessageAdapter.java | 26 +++++-- .../siacs/conversations/utils/UIHelper.java | 4 ++ 3 files changed, 66 insertions(+), 36 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 7ea3d60b0..95e27c79b 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -9,6 +9,7 @@ import java.util.Arrays; import eu.siacs.conversations.Config; import eu.siacs.conversations.utils.GeoHelper; +import eu.siacs.conversations.utils.UIHelper; import eu.siacs.conversations.xmpp.jid.InvalidJidException; import eu.siacs.conversations.xmpp.jid.Jid; @@ -95,9 +96,9 @@ public class Message extends AbstractEntity { } private Message(final String uuid, final String conversationUUid, final Jid counterpart, - final Jid trueCounterpart, final String body, final long timeSent, - final int encryption, final int status, final int type, final String remoteMsgId, - final String relativeFilePath, final String serverMsgId) { + final Jid trueCounterpart, final String body, final long timeSent, + final int encryption, final int status, final int type, final String remoteMsgId, + final String relativeFilePath, final String serverMsgId) { this.uuid = uuid; this.conversationUuid = conversationUUid; this.counterpart = counterpart; @@ -179,7 +180,7 @@ public class Message extends AbstractEntity { values.put(TYPE, type); values.put(REMOTE_MSG_ID, remoteMsgId); values.put(RELATIVE_FILE_PATH, relativeFilePath); - values.put(SERVER_MSG_ID,serverMsgId); + values.put(SERVER_MSG_ID, serverMsgId); return values; } @@ -211,7 +212,7 @@ public class Message extends AbstractEntity { return null; } else { return this.conversation.getAccount().getRoster() - .getContactFromRoster(this.trueCounterpart); + .getContactFromRoster(this.trueCounterpart); } } } @@ -359,34 +360,36 @@ public class Message extends AbstractEntity { public boolean mergeable(final Message message) { return message != null && - (message.getType() == Message.TYPE_TEXT && - this.getDownloadable() == null && - message.getDownloadable() == null && - message.getEncryption() != Message.ENCRYPTION_PGP && - this.getType() == message.getType() && - //this.getStatus() == message.getStatus() && - isStatusMergeable(this.getStatus(),message.getStatus()) && - this.getEncryption() == message.getEncryption() && - this.getCounterpart() != null && - this.getCounterpart().equals(message.getCounterpart()) && - (message.getTimeSent() - this.getTimeSent()) <= (Config.MESSAGE_MERGE_WINDOW * 1000) && - !GeoHelper.isGeoUri(message.getBody()) && - !GeoHelper.isGeoUri(this.body) && - !message.bodyContainsDownloadable() && - !this.bodyContainsDownloadable() && - !message.getBody().startsWith(ME_COMMAND) && - !this.getBody().startsWith(ME_COMMAND) - ); + (message.getType() == Message.TYPE_TEXT && + this.getDownloadable() == null && + message.getDownloadable() == null && + message.getEncryption() != Message.ENCRYPTION_PGP && + this.getType() == message.getType() && + //this.getStatus() == message.getStatus() && + isStatusMergeable(this.getStatus(), message.getStatus()) && + this.getEncryption() == message.getEncryption() && + this.getCounterpart() != null && + this.getCounterpart().equals(message.getCounterpart()) && + (message.getTimeSent() - this.getTimeSent()) <= (Config.MESSAGE_MERGE_WINDOW * 1000) && + !GeoHelper.isGeoUri(message.getBody()) && + !GeoHelper.isGeoUri(this.body) && + !message.bodyContainsDownloadable() && + !this.bodyContainsDownloadable() && + !message.getBody().startsWith(ME_COMMAND) && + !this.getBody().startsWith(ME_COMMAND) && + !this.bodyIsHeart() && + !message.bodyIsHeart() + ); } private static boolean isStatusMergeable(int a, int b) { return a == b || ( - ( a == Message.STATUS_SEND_RECEIVED && b == Message.STATUS_UNSEND) - || (a == Message.STATUS_SEND_RECEIVED && b == Message.STATUS_SEND) - || (a == Message.STATUS_UNSEND && b == Message.STATUS_SEND) - || (a == Message.STATUS_UNSEND && b == Message.STATUS_SEND_RECEIVED) - || (a == Message.STATUS_SEND && b == Message.STATUS_UNSEND) - || (a == Message.STATUS_SEND && b == Message.STATUS_SEND_RECEIVED) + (a == Message.STATUS_SEND_RECEIVED && b == Message.STATUS_UNSEND) + || (a == Message.STATUS_SEND_RECEIVED && b == Message.STATUS_SEND) + || (a == Message.STATUS_UNSEND && b == Message.STATUS_SEND) + || (a == Message.STATUS_UNSEND && b == Message.STATUS_SEND_RECEIVED) + || (a == Message.STATUS_SEND && b == Message.STATUS_UNSEND) + || (a == Message.STATUS_SEND && b == Message.STATUS_SEND_RECEIVED) ); } @@ -443,7 +446,7 @@ public class Message extends AbstractEntity { if (!url.getProtocol().equalsIgnoreCase("http") && !url.getProtocol().equalsIgnoreCase("https")) { return false; - } + } String sUrlPath = url.getPath(); if (sUrlPath == null || sUrlPath.isEmpty()) { @@ -457,14 +460,14 @@ public class Message extends AbstractEntity { String[] extensionParts = sLastUrlPath.split("\\."); if (extensionParts.length == 2 && Arrays.asList(Downloadable.VALID_IMAGE_EXTENSIONS).contains( - extensionParts[extensionParts.length - 1])) { + extensionParts[extensionParts.length - 1])) { return true; } else if (extensionParts.length == 3 && Arrays .asList(Downloadable.VALID_CRYPTO_EXTENSIONS) .contains(extensionParts[extensionParts.length - 1]) && Arrays.asList(Downloadable.VALID_IMAGE_EXTENSIONS).contains( - extensionParts[extensionParts.length - 2])) { + extensionParts[extensionParts.length - 2])) { return true; } else { return false; @@ -474,6 +477,11 @@ public class Message extends AbstractEntity { } } + public boolean bodyIsHeart() { + return body != null && + (body.trim().equals(UIHelper.BLACK_HEART_SUIT) || body.trim().equals(UIHelper.HEAVY_BLACK_HEART_SUIT)); + } + public ImageParams getImageParams() { ImageParams params = getLegacyImageParams(); if (params != null) { diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index da92fb183..89618dfc6 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -7,7 +7,9 @@ import android.graphics.Typeface; import android.net.Uri; import android.text.Spannable; import android.text.SpannableString; +import android.text.Spanned; import android.text.style.ForegroundColorSpan; +import android.text.style.RelativeSizeSpan; import android.text.style.StyleSpan; import android.util.DisplayMetrics; import android.util.Log; @@ -207,12 +209,24 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.image.setVisibility(View.GONE); viewHolder.messageBody.setVisibility(View.VISIBLE); viewHolder.messageBody.setText(getContext().getString( - R.string.decryption_failed)); + R.string.decryption_failed)); viewHolder.messageBody.setTextColor(activity.getWarningTextColor()); viewHolder.messageBody.setTypeface(null, Typeface.NORMAL); viewHolder.messageBody.setTextIsSelectable(false); } + private void displayHeartMesage(final ViewHolder viewHolder, final String body) { + if (viewHolder.download_button != null) { + viewHolder.download_button.setVisibility(View.GONE); + } + viewHolder.image.setVisibility(View.GONE); + viewHolder.messageBody.setVisibility(View.VISIBLE); + Spannable span = new SpannableString(body); + span.setSpan(new RelativeSizeSpan(4.0f),0,body.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + span.setSpan(new ForegroundColorSpan(activity.getWarningTextColor()),0,body.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + viewHolder.messageBody.setText(span); + } + private void displayTextMessage(final ViewHolder viewHolder, final Message message) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); @@ -289,7 +303,7 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.image.setVisibility(View.GONE); viewHolder.messageBody.setVisibility(View.GONE); viewHolder.download_button.setVisibility(View.VISIBLE); - viewHolder.download_button.setText(activity.getString(R.string.open_x_file, UIHelper.getFileDescriptionString(activity,message))); + viewHolder.download_button.setText(activity.getString(R.string.open_x_file, UIHelper.getFileDescriptionString(activity, message))); viewHolder.download_button.setOnClickListener(new OnClickListener() { @Override @@ -334,7 +348,7 @@ public class MessageAdapter extends ArrayAdapter { scalledH = (int) (params.height / ((double) params.width / target)); } viewHolder.image.setLayoutParams(new LinearLayout.LayoutParams( - scalledW, scalledH)); + scalledW, scalledH)); activity.loadBitmap(message, viewHolder.image); viewHolder.image.setOnClickListener(new OnClickListener() { @@ -528,7 +542,11 @@ public class MessageAdapter extends ArrayAdapter { if (GeoHelper.isGeoUri(message.getBody())) { displayLocationMessage(viewHolder,message); } else { - displayTextMessage(viewHolder, message); + if (message.bodyIsHeart()) { + displayHeartMesage(viewHolder," "+message.getBody().trim()+" "); + } else { + displayTextMessage(viewHolder, message); + } } } diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index c3195d868..493547536 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -17,6 +17,10 @@ import android.text.format.DateUtils; import android.util.Pair; public class UIHelper { + + public static String BLACK_HEART_SUIT = "\u2665"; + public static String HEAVY_BLACK_HEART_SUIT = "\u2764"; + private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL; private static final int FULL_DATE_FLAGS = DateUtils.FORMAT_SHOW_TIME From 1e28f600386f1f1dcd734363c932d5ccbd6267fb Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 10 May 2015 03:14:13 +0200 Subject: [PATCH 25/58] changed conversation red to material red --- art/ic_send_cancel_dnd.svg | 2 +- art/ic_send_location_dnd.svg | 2 +- art/ic_send_photo_dnd.svg | 4 ++-- art/ic_send_text_dnd.svg | 2 +- art/ic_send_voice_dnd.svg | 2 +- .../siacs/conversations/entities/Contact.java | 4 ++-- .../res/drawable-hdpi/ic_send_cancel_dnd.png | Bin 1559 -> 1587 bytes .../drawable-hdpi/ic_send_location_dnd.png | Bin 1333 -> 1333 bytes .../res/drawable-hdpi/ic_send_photo_dnd.png | Bin 1381 -> 1383 bytes .../res/drawable-hdpi/ic_send_text_dnd.png | Bin 1126 -> 1128 bytes .../res/drawable-hdpi/ic_send_voice_dnd.png | Bin 1149 -> 1161 bytes .../res/drawable-mdpi/ic_send_cancel_dnd.png | Bin 1040 -> 1025 bytes .../drawable-mdpi/ic_send_location_dnd.png | Bin 908 -> 917 bytes .../res/drawable-mdpi/ic_send_photo_dnd.png | Bin 909 -> 915 bytes .../res/drawable-mdpi/ic_send_text_dnd.png | Bin 769 -> 781 bytes .../res/drawable-mdpi/ic_send_voice_dnd.png | Bin 774 -> 795 bytes .../res/drawable-xhdpi/ic_send_cancel_dnd.png | Bin 1940 -> 1958 bytes .../drawable-xhdpi/ic_send_location_dnd.png | Bin 1721 -> 1753 bytes .../res/drawable-xhdpi/ic_send_photo_dnd.png | Bin 1723 -> 1756 bytes .../res/drawable-xhdpi/ic_send_text_dnd.png | Bin 1395 -> 1430 bytes .../res/drawable-xhdpi/ic_send_voice_dnd.png | Bin 1426 -> 1419 bytes .../drawable-xxhdpi/ic_send_cancel_dnd.png | Bin 2911 -> 2983 bytes .../drawable-xxhdpi/ic_send_location_dnd.png | Bin 2578 -> 2589 bytes .../res/drawable-xxhdpi/ic_send_photo_dnd.png | Bin 2588 -> 2618 bytes .../res/drawable-xxhdpi/ic_send_text_dnd.png | Bin 2004 -> 2005 bytes .../res/drawable-xxhdpi/ic_send_voice_dnd.png | Bin 2152 -> 2200 bytes .../drawable-xxxhdpi/ic_send_cancel_dnd.png | Bin 3791 -> 3862 bytes .../drawable-xxxhdpi/ic_send_location_dnd.png | Bin 3456 -> 3514 bytes .../drawable-xxxhdpi/ic_send_photo_dnd.png | Bin 3544 -> 3569 bytes .../res/drawable-xxxhdpi/ic_send_text_dnd.png | Bin 2597 -> 2592 bytes .../drawable-xxxhdpi/ic_send_voice_dnd.png | Bin 2811 -> 2849 bytes src/main/res/values/colors.xml | 2 +- 32 files changed, 9 insertions(+), 9 deletions(-) diff --git a/art/ic_send_cancel_dnd.svg b/art/ic_send_cancel_dnd.svg index 54e02a918..67a562b2f 100644 --- a/art/ic_send_cancel_dnd.svg +++ b/art/ic_send_cancel_dnd.svg @@ -50,5 +50,5 @@ + style="fill:#f44336;fill-opacity:0.627451" /> diff --git a/art/ic_send_location_dnd.svg b/art/ic_send_location_dnd.svg index d91fa9130..705cdb6f4 100644 --- a/art/ic_send_location_dnd.svg +++ b/art/ic_send_location_dnd.svg @@ -50,5 +50,5 @@ + style="fill:#f44336;fill-opacity:0.627451" /> diff --git a/art/ic_send_photo_dnd.svg b/art/ic_send_photo_dnd.svg index 0e406edec..9ef8b7821 100644 --- a/art/ic_send_photo_dnd.svg +++ b/art/ic_send_photo_dnd.svg @@ -52,9 +52,9 @@ cy="24" r="6.4" id="circle4" - style="fill:#e51c23;fill-opacity:0.627451" /> + style="fill:#f44336;fill-opacity:0.627451" /> + style="fill:#f44336;fill-opacity:0.627451" /> diff --git a/art/ic_send_text_dnd.svg b/art/ic_send_text_dnd.svg index b594f3195..1b7ad51f4 100644 --- a/art/ic_send_text_dnd.svg +++ b/art/ic_send_text_dnd.svg @@ -58,7 +58,7 @@ id="grid3631" /> + style="fill:#f44336;fill-opacity:0.627451" /> diff --git a/src/main/java/eu/siacs/conversations/entities/Contact.java b/src/main/java/eu/siacs/conversations/entities/Contact.java index 4ad105b1d..9dbca59a1 100644 --- a/src/main/java/eu/siacs/conversations/entities/Contact.java +++ b/src/main/java/eu/siacs/conversations/entities/Contact.java @@ -140,10 +140,10 @@ public class Contact implements ListItem, Blockable { tags.add(new Tag("away", 0xffff9800)); break; case Presences.XA: - tags.add(new Tag("not available", 0xffe51c23)); + tags.add(new Tag("not available", 0xfff44336)); break; case Presences.DND: - tags.add(new Tag("dnd", 0xffe51c23)); + tags.add(new Tag("dnd", 0xfff44336)); break; } if (isBlocked()) { diff --git a/src/main/res/drawable-hdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-hdpi/ic_send_cancel_dnd.png index cbfd8e76c06a7800a253e3bc4485974bbd2f22fe..83a7b94b2e8db05b7a84926d9e623f0c75159d61 100644 GIT binary patch delta 1495 zcmV;|1t|KL46_W7Zhx>zL_t(&f$dsLZxdG-J>MP2apFKy3I(L{l0a(Nv^*RqWaAP- z+8^Lb+4iLn+7;dOCsYCn2`Euf+g-b0Umk(t4GoC_(JoLWqEZMF?|@63IF9F@E`rOqi^Qkb05GGmav4yge;b0W-^IFd}eK2%YSMO-DX3Y0l)(16x4KC z@qT-`^{(V{rNxNfP-3&0u8kGTPDA8vp=`kR&kUz@x(!gi+$Q621DJ#T3$T{%8)F{N1g!|qN;UK1zH5=Khh*rS2ZnIw% z$&vBP5>$S9fQpWsoy5TDC_(B?>9q(VzkljMRV+u&4q|1+`(XoARl3)dUT-OgwB-?X zueQxWti9ZN7a}^ab01QG4En8ep~#8oMDqiGVv@_17LJ{RIX96>f#sJ;XyT@vns97T zJ!VB-H+CFUCWREvp78~)xw;aIRjhGCub~8OLo27WYp$-uT5^~E62TompF)=B1%Hog z+l>Tmoyt`p1p(&$;*&DjdNx1l*5|oE+r$}P$3Q}9eEIj@?zgIKL1dC!_(ICx}-DVyaY%|KK;wmzbRWy=dFkaS&ql?%Gb+0}xpi#g7XfK=DV@Ygsom<^ju-+ufqkFT!94t+l==lcbzJy>i_pFGXRB z#y&aPvtxZlTWJ7WMac%=gHTryEyQ0MxNcc`%uCRQ!J<79yP3%()~NF8va;7&qLVfy x0RWcGl7clYqVC<(@%x(=>5X1Y7k2zxUIB%JzHD+y;r#;7AAmI%Zwd` zQpW&{Bn(%9$dydB_#*)~NuWf+s!sl})|gV@Yf0kx@DLi`WorvR#|;om*xatdj;;Op z5RkXxE^LO}dVkVLeYNl5Z+}Of8Ch6)BtJpnNd@eTIyWBt!=;>eDhuUbZLzpwOnM6P4kK1EzC~gq26~6NH=) z5i5Rr$q*5XqG!q@;{}uPp~4;v?A=b`$yZUSPDpIAgnu)42KH_b8yhOD+2?-r@-_++ zWY>;#^LW^(uEMHL{&0jXy+JbepX&3u4Wq%rgVk)|P`4q0!UV9i#*|@Rb(eA))R*Fj zBk6+rl1n)az{op_k|_ZK@A*JsHD~Oop`&O(tg}v~IF~6GXNCHrL=Y#Srr>g>T%2_( z#W|ZW5`Ra*?rL`Y-Jt&9OHr$126@$8%IR$N?wxi+wp_fS3@b;{RZ3qRx;KBV-L|K) zFz-^%z(gGJeo&vUu+re@7z_-pfLl_cJXJNR+>4d+^btFSOogovz# zbG`dju3M#+ocyE~H66(ai1y9ZBWy93OGDsW-XKgX*UL(^(Nwv`TrS<&ZhMk^CK=jd z>>=BTh()OBnv+LoH8SPmY|Y94`@3^)&B;$9YNguwLR4Rag8=^b^z9Lrwo`)|5;Z=6 zaDQ=rbCQT^qbz#}9l|`7q3CUK7XZ57bDhMxr+jFM>&e+8tOeDdWD#Kf@^FDqx`|tI z@{?AKdny1=&XMn>UST8V^=^nqm<|0bX;1;R1$^nZ`?blIi#Hh2es#fA;imvRj=htV;QOGyz*pP? zSheBtF8~aLEr9h`1ZQkwXBrNi&I&c*Hjmhn$;wb zbcOo-=+fPy(fBCAE5j29D0+r3``}NoCR7)~?yDDxaa22Au!J*!?20-!9)I$CFc$+5CGTj{(tMw05F_G6h$zRu`@XISNyH`pHo>n}1zX9iiy`pc*B*zjzf; zE72uT-PR)4gA8pPHuNL0zBC30wX!mR-irVHU)`p)s@>Ldqfb^g>LamDHrZrj`3DW? V>$-l8ZRP*~002ovPDHLkV1g5K*ku3! diff --git a/src/main/res/drawable-hdpi/ic_send_location_dnd.png b/src/main/res/drawable-hdpi/ic_send_location_dnd.png index 3bcbe18af2ba194e9b49dc3cab55a76a60af0c10..a9c51317e58f7ad921b2741e88a2770440d6f56d 100644 GIT binary patch delta 1230 zcmV;<1Tp)y3bhK5cYn=qR8<^3zx$@`v@?Z%XfYc3Fow_=lUi+qr0U3ElSbVb8dk=o z347xopgY|eAt;G)Bb7#DR8pW!9Yv^9I*KNZM3G8qq(#9ponhL}%snn_jnS65_rCXZ z)3bbY&iVb$dw1U4j{(-Pj&+0y3Dca3j;4ZFw;7__Dv&w=@PEKXATnDj7q2v@&(DQb zJMdskbTrL-wFw3326%TB_AeqT(@SOLn)qsGS{f5ry#m?kQp^RU+V%VH zU0ZB**1;+o&j7T0=?G>>WJzQJ%-U6?L{RRt(*O}0@_%F^5mhKYM9_#Yg6XozyBmiy zKmPstLb7{%33x$(d(0|JC;RTNlc9@?roCD{u{*uuc9OLwToRMl$_=mnGZX+sQ)55G zD-Ewu@Uw}R2x|+ajoWQ{wF;)e`wXdNL?Q>brPB**5hR^n5XwOS6%#{|nr())0aykT zV3P@t#DDq5lV`70ngylC8j)<#^CaZ^vg_N_=U;uFgF zORmLRbGW+HUV#;vN*BzSy3NAYXm|^lxA3$bigMGC*GU8Kqy7D!fSo3u1dM90!0xSB zQI`#=n{vsn-fE<$uTS;@FnYQQG_AeNw}4k$x_@NKjX?T~$?nJ2`h5P$t|uUBuc@Eb zFs=<)uEz+-e6ss>1sKn`HSs;b(?k+ zEQqSZYz0ct4oG{Q_h(PqVQs5`ahp)f8aqThZ_HNX7mDR`)*4$u^u*{zLZ)nWt{~+~ zbbloKldaBe1x%)$bS@B#xX7G>#cx(lgSg?MwS&w}&E(IxD4l{yHd_LD%tdPhk{>@X zF|p*Lb>57L-LW+dkzZZ))u4gvaozBRtKK=73=USP^(U@+1AHXublFwxYx``db?X@j zX8d@p3d+^vEnCj|vGBdco$GychpOn8t$#OoZUbt**7(`E2|pgbH#|3-9KArns9&EI zi13WxP(T2|0H9c|e~*HBzdnQ%7HZV{LG%rf^aL{EY3y*H-D zzJ$Pi2ni;lr!r1I#;YN)U;;2!BZo*>-*FMl$I44@+s@!`hd@tDWGIspk;8ykHGf#r z>Ybp^paVY!il;K)0Tz>F!AR4{S6>I+M=0l8v6jLS5lmO(Q7|2AE)0axLny&yaAJv+ zHz-*19{>avlvjCE2HhsP)ezc=WIUCbRnTv({(TcFg~PEE*{fmI5AmoKh@Be$hQPm; zHw2EwhR4RktQ~4F0EnkDA5f6}>qmm%+juJTVc2y;4<-Pot`-gnLGp2%y8R s`=4R1r>A+Yr>FVt<8 delta 1230 zcmV;<1Tp)y3bhK5cYj@L990;8p0gj_M8%X~vf16Fo3D}}g62X*s8)nRL2slVSK_76 zdw+pmdMCD23o3|>1x3_?P$<>5irQ!u7E3bO-E=?Fq&BT-V!n3H>rEP|CfRe&%;-%X z*qfR6dEWP#IWzN~a~9aa4t5YF7^V2_e7SkkU|`pv=dG9~wz^~S2KRzUn#77oX(i#m(OoT0{PSF{RvceR z_^%6DHqj!HOfBoZHnmzAi)qzo6i8{re4gknmzTE+=`EL+3jIwAFrv)9Rnp(_;Hz^CInt-J-Mf_nDr!XQ0+Gl_m6h=%m zMa*(<)L;`Vnp1{FbXIfy2b#t0%k>|i;oXhHEPwYsSQ$$u8b#CCIC!|;-MeqA^OfAd zvj7j7>M`jX=LRfWBLP^;_Pwb<zd`e&kkB0~V;wgO3-tAwpgI(s9-Q;$!>B2= zwfC;+(j^f%4a3Q2RTfP$f%BQV_fyz)M6$n?ZcCj8P&EjxrrT1ZQPdELF%}A| zu{He`fbISPu$+iD-lk)d+YFKINOsPaW<>bTX3v`d0wt#&nVOo8Dt~0g03ciUepcYW zrZ);ao2eA9M43BMV*rq@d7lU|_DA;-{*tbFpGKWGa$^MK&cmsb6e$Whwb+8=1a#DS s|1(VW^z5GM>Dm2%*Rg{g>>wQc1#8Kt{qIH)VgLXD07*qoM6N<$f~QSY^Z)<= diff --git a/src/main/res/drawable-hdpi/ic_send_photo_dnd.png b/src/main/res/drawable-hdpi/ic_send_photo_dnd.png index 2eb856797e265ebf053fca9381a038a5bc3dce36..15b1eb7a0af4acd4035f6b6f8d864676d4ef921c 100644 GIT binary patch delta 1290 zcmV+l1@-#n3g-%tZhz!SL_t(&f$dq%Ph3?L|DF3DFfii)MIsApH?-1@z=FV(-N-`{ zYTB^Dq>VMPv5D~yP!}d9#zp@DO%tnbNMqVnqqdPi?aHwr3m^nUObTftDS~BqZ$4n& zJudjjn>SEC?wx5D^V{8f-#PF1d+&anb1qOq2_+N~q|+J4Vt=M1QeCd#vcuRJk~V^} z@;*Iykk!S-)a8f)N}A49FhvbMq%kpUGx<6LUlAa6@DVzk0D#loagmv#N3|zLo73I# zt}Z@WggI769~eE#ju>4DtD{c?C3RtIR`g8ZR@k~A(tGykd4;e5DOHmC3xLNS^>fzB*|5)BsTeYCGGCh21!7i#+xOkz_^!#7_Z$m})=>gSns|uz!%kCIk>qh}1;G;DqBHSnO#D zhTTAm1Udn<6yoLDg)wM>!2{vpk=ebT*%BHD5Kmhjr#6@_6Y+7KJhV;+291V}*72mXnMpliPpoh}pfbH&i_)7#Gy zz+Aq3!_L$-=$MvTrXqs}yno?Vf4^aOcf3d7kHLr_H;OSp{Kf{$PwcMf3NEs3pjD~~REyMMyJ{_!Wkld7bYg$duHPxN#)L9%sl z57fP8MbG5;WW<$uDOnTAgh=IlT_N4`hjs(>dfSy|W*nfy78r7%B#ape@8Qe6jTK-t z9l_IS?vIpjw`kL6LWP@>Fv0wvx9y~AYjL!6$8?sej(Izna(y3~n~Jd%8q0Tv$eDVA zS%1m5k}zVb@wS8Y$rS+Z5nN^G7ww!sB$;YexG8QP2ru@u1b3RZr`EwV{VbE+!PDMz z@JTEdBBGa6sHq8K7GXD#6P-(${pql7%E-9uZ3igb3OvWD2mo8D#}2{|#%91Yd|(HJ zL2qaU07CFtRbDzGkCwIWv!}fsck5oe34hSgzLtc+;Lykq-mXNftqI^}RZ@D=7Ri^q z=g>R1Z@Z!4hXc|ut^qU&zTKn$rXRv0&HDstk-=&;8%5U(wC2c+mlxGBQ9UQL4Wt= zGTyN*A&Yz2a$8%OU1MC)m5Tw|GiYwNGj*SBu9Jfy(bL&v*BYObZxd35_L>I~A1A~3 z)VA6u1tVT*X2!`^%y|-vg#wgr6@t&gb(J@Y-B7?P6*Wsjv*T8>ZADiZauomwq8dn5 ztDaN)q40IZO#wB8?eI$}8#yrY)_<5Qg_f(*Vq!PW`K4iU|1Az3eK3Vw^7rKlOPHB) zCZvi(NgV`oDy!Uae}A5^hQSF(GJi)$OFxPY7lOa1AIFmZfxWM4W1WqL;a*_i6un?q zwG5;Qm^InG6SzP2_w(jcLJ1|5P(leM91#Bluerw!y4Tf700000NkvXXt^-0~f=!Ne AR{#J2 delta 1288 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 A^Z)<= diff --git a/src/main/res/drawable-hdpi/ic_send_voice_dnd.png b/src/main/res/drawable-hdpi/ic_send_voice_dnd.png index 50184ee8beb86ea31880ae568fb715a8718f98b6..26a89e8e3d80832f131d681f48f3c05e4b609fa0 100644 GIT binary patch delta 1067 zcmV+`1l0Te2#E=hZGQv?Nkl{@!3L@d z*KQ*P36U&PvFVB(8<6;HU{%;vNU&gmgb+JE-B1ujElC?yg48W;ODY7RAX>x%l7=`R z$Eop~!vfj(m*8>U0|&jco0&W3o}+nlpJoQ|;lqayAAdvsjejKU-xr!k*Y?dt#je2e zjGUg#d!5r$V+;Kc?^UJJAe8C>ss73+8k$quwoXP)PkiT9ZqJP64<();F$i##96}L% z6dKK(^di6Vf^;zzPmvs2-4p;&NDeKg69>J};JUGy{rk5nh2fSb2#-uBlVP`YxNa;M zEG9?XF=D1&-J*kSF zfQ~SxJ>cvJV_v{F<|UMXu5-Fg*eU1?WB!V@4&T^DLuVM%;_tCmVVeXmr4r9V*jH|A z$9X<7p1oNcrB+~A>;41mCQ|b~O~h zF&W7$)Q{wy%|ilgs)*Fc%83(>iB_Yk2mn&jAB!ak0u}%WkuIbj`677c%NsRu<5zM3 zj<2NSJsNVqChi0P3VtPcDKeI6x&npdL%TKf!GCgH6~Lj$C&oHWCjdY`9e;|zfpVLW zTo`;s#xBgZ!&k;aGIqPN?3V#XD*{E%g+?>)m~yrCgWh7Tybnm_|0Q5F54<>=Ozdoj z4*-^viJi)_UZ^$&k(otR_@EuWwr_`W{qcKj2QQ)Ob0(z-!FwaO-F@yzi+ke3;bCiF z_J78sfIKO}K-Eyma@4EA@$=W)(YLN^ucgBe_6gO~WQ`yIm?mT-96+{NaR2}gBqB>i z!~`4wu)SuCQWWyd@YxGrx2tX4_jxPnc#i{lhG3`(Jq7w_4K*#$IRGG36u=Gvb~Ssn zASAC9Uhn=qbFG2S0IpnA&L#VzwjDSsM1O3ZRFjTvz1w|iqJ@9p+Hmy-b~*Jx+)?T= zA$A*yAbu(dKkFX5c+o8_o;>``A5QGCG!hi<70O+WpPZ1yFCv(-ZFRou)Wi>NYw-LH zdg)NC7qp(M&FZ`s9?f3$GOyv-eChmZdre**J)STH7(M5{fjVFjVhhuGLqlP}CWfZkq^w*} zSGo}vx^v~ujVAuAOc!<8nCOCqi7_sB+Lw2d@I{yJcJ%m8gIXb{58yT?TZ zW(KJ9hWB(Z@9ge(zk9xOa^Jf*_g)}Ij2JOu?12A9k;Sevt$!O>?L0z?YP*wK8efaL zW~9dQ>4DQQr4h*t5HbKD(1Lc7HgPqbpPGoOc4WpD(%Bb4jc}hD0tE4MH$QVViuxuB zQqS$XKx%Y9Qvg7Kq((irZ#W7Kp&Oex_QX*Gycj^hOUuWfd^Btwp&L8eTpR+B3@{|Q z*}QQ+Y#pH+BY%;tLqvbrIzl%lvMu-+JQlW&@MrArWjz=a`sy6Xs@MpKjU6_`#-ark zHe-Vr3m*+(%vi)TRx299n2mt5A&fHO5)iX>qp zs0ahDSH}ve>~T4|yd9u!q`lk+wQ~l5gw^u4Z%Q3|8TZT_n=eYUVNm0Ml%4xyz zlk+pTc6B(Wf}7%00I9)@42%(=F9`EeZP}pxq~Pk$7qqcb*)Z%dZAu^k|qVICQ&&g+<)TS+$AOB8b_#r zpQ9w2c9MCGfFDF_pj8n7niKvPekm~|$$22qJexmp>icwI_Sf>fj=8xN0GBLOwlk4D{at(7qLu^qrf}eH@glt_|8LwtNa;d;c;(`yVX6?YY@ZJ$wM*x!DYj z{}#$k5qBJa?X!CL>N1vE8eiKimBvJswqg{zC|xYLeZyA(r&g{jfaAG+7bsnncD4^u zC4W=$$5Km6b-m0S=-SJ3`_CHLS3xwF$3-kl_$Ha;wY?Sx0JxXUwym%09Es;BbXJTP zHbpy@S(yE)UTp`y&-2{g0m8gSsI|IJfI!}c#WD?606-S)q`Cxj@AYUQXw4GucYC?% z>b@Wd<)U)7r>DKS15=HUvJ81qH3W2Zvu(1g$;L@g_!$7#ROO Z{sK7ZR-h^uyPp66002ovPDHLkV1lSX{>cCU diff --git a/src/main/res/drawable-mdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-mdpi/ic_send_cancel_dnd.png index e4fa38a3ed1c9a3a6cb076ed0a7920e42154f930..75006446906ddb163dae01069789a243d58f8b03 100644 GIT binary patch delta 929 zcmV;S177@)2!RNYZhwABL_t(oh3%J5ZyQw<#m{+;6FE~mq7o^r=%P*+UPZQEHbkPH zrW8@B5@ORzu*i;Yz&9u#fmIe%N;gz25QVm$rcx?ZGgh+mqDhe0wp9_tj*Z&RyDY3B zGoE?=lLREHp52=_@7~|cz3;pk;H~~=;-m`%Q0)t~@|4OghJQd=iM%U>0{|2p81gxQ z-8^J_#tZfcn12PRRjEv$ecxFzz-0=GV+9xNL-@;Y&pM4ttM&54fV%aXHj39Ed}o~d zQxg0hQf|$8&E~Oy1Yp;LgX@3|15aCki;?iff`And0y{1WgdeShFD7bR4qHALTwJMcqqj=30%m6z8 ztvwJ=+rKwULJ4tQs@42RptJ8emu$Pq0GmZGxM3h`!=Wewd{^{>8z3HJ--6TK($vaO zAOVyiKDH!zQuKl~0#fpV&72jAl7p-jJ%59MIE~;Yz<(#14@kKz0}P2l`=jc@5Yt=e z)b)jEQ1F7y^qcCxnSvK=MpyoF^@ji!G9QsBwOxJA3ZztS(EmM5s7#Z<^h1W__;4zTEAw^_J%kFu z)t;*nm47B)qKRPoN$2CE#2ccZFgm~?RJ?pgg8@j)T7f1O)4S}|u>z)g2)!{$WUyx< z4Y!1}M9{SYDag}tVd8z$bMAu&1(pDlMaA*9w$} zY>$GmZ|zY&m92bkDv>h*G~)$(6zp5p?ws=chkw~HkT{==d&V`a%b>EEfug;sZ4)x#`y-s>8v0I*im44 zw9ilsWLH_vF#s=|KfV&<;bP;rbvT{D1fxL{TDl3J-$skMtW9*TIUe zNr>yVMjt~jnB%&0FS|?=0|9_ktNHF+{-S~TghXkqHG+Kw^YiSV(#UGyV*&k>1Yq0M zWkN0XKdv|*eM0mPN_hri*C@4Jy6^7|D;m#Ry%G8w<4vaWzM^4U00000NkvXXu0mjf Dd=A|NcC0ytM zM4Y%Ea{c?m11Kr{LwGoD(~MeE;yo1^aYgF zY|!}J2BmBpgMWPK<8i|PfPimAh2lrHc_UC%@D>&1gK@+3poAZWZt=`eK($I`qEo;& zl;Q70HJYF78Z^T1Uj+3`>w5w1TMAn zvv2pHqJ60SG}Z5P=R?;!D_Sk3X&8llF<uN_tf#F(Dfd7Z^4P0)zI|-0J+%B z30~}pr45RU_OhS4hy9v0hrd>aY+z>L4Ni!Ag7IoRJfIVs2y-v zt5hbYw*R^g$g~-Z8v-d0RA4{|Zo={%1LQ$2J9U+7YmZZb0N_`*_Q=p z(S_253%hr%;@=?(F4|IPq1u(3?xqn(Z%gbL%S2icT!^u?8>5-QcJ53*=H91^Rtqxc zekF|vzRUAI@ALl7;hgtg;C;Mf!8}DXp4UHUf{z@UJrcHw*nbQF6dEG_aG>e6eT`{W z9xeQ@Kmyo0wC^Cv6M!}(SicnT-MZ?OPe3aUG~;>wTio_(3VYMm{M+G|X5f52T&s1` z$W0oNJkKpVopYIC06_R~Qz<&5lP8@O0}9;sr+{{5hItL8T|wjbQ!4`0K0G=M@nCM4 z|6;6j=)lObfq%jfp8&GnH3FfCCnBB@2<=W{7v1AY{oJ_ZjOXCg@t$(9GQD z5(i_XsDBnKkPN{Qfg|xSfT6ja)GrZepwO%fm`~Crg@F0BYv%4P8;F%h3yx4-E)axj znjf}QU;9>6tdKDyAR$O}I#JO&EHeWQ`F;z+L|z~W6GOh=S}`C1XtbRPP|X}Ljbd2* zKCL`8&~UBRp)psp@(|`KeLwZ1NDTx4rR!651Ak3tDEYN?^G+6hHXs04Tqs--7$oTg z2Hl0eue17R2HH3|*)$QpO43CUzu7oBnfcCT1_FT6t*JW6AFTrNhYh#xOy%*;1q1-a zX7`Gq-`-r8__VaC^=)3?+(4|?mlQ^q3B8^#654Q`%e?kran*qUV7*^|A-Z1>2nmEV y&MjvH*MGA9Ev{O$#z)6nOWwy zAh=Lm>b`3&{vD#wg^HkH>)u_=qWA$KE)r1*1T%5QWG11FX;JerpXco&jfl+sOl%SQ z?(Th__kDlo+;h)4@F@Ogp)5(YaydWL@t^b1vkoRCI}2c@JAXjK#Nz%iix;ca_J0aw zpyv40B^j?uJQ3+N{_w=-W6jmC1a|B|wQ@N>)bp>%cs^;){T4s=)%u{=XzV9(dr3@R z@GUv%Og6JQQF;AXfVK-$MF*EM!~D%;FK(Ql zEFBrB?eUr-)_XQ1QK9Kp|D{=jTD6v*9=dHu6!f<5EC+);Xr<=>$0Dq3p zoZC_73Z|KXcE{{WrIL%<4kBkL=xJKw#30SY?cKch?ja1o>E`lwJ8T zrkUJcW+30=R+uL7a;;p>|NH$)rIPc-OJR9|r_h?QKy)Af)sPzqWQ^o`!CM=J=_e20 zZH`q&PPVve##4iG3^_VGwWyY{XW8cX)Y}HLVY(rQSik>J6c##22R~0VSKo>17rQY! z-S|bg^1(3*9^_jYBt+T-Xww z_I@Wf2PC@Bgv9>PL5){TYDaKH$9E+wEg}UN!^Ko zijBrT&TgdUF>XxO>xqAg#6SRr&D90OVp6|DKYtZAs)_xnfdIN*_qt)baX!O#`+nz> zwDnU1mDbko%IV`cpOgP-X>Bd_noA7?2cOQ&z6sN1_I0tb@_m-tnScNa=g(X>>9+yW z`q-J_&$8Cd45WpHuAFzxWdGP-wCDA>rlqCM0|x>qZ2a=O4}E?jOFE?j=t9FO9m#67=q9SFpH0TBQI002ovPDHLkV1f}yp9TN` diff --git a/src/main/res/drawable-mdpi/ic_send_photo_dnd.png b/src/main/res/drawable-mdpi/ic_send_photo_dnd.png index 7b6700d6fe15542aaf2219842608bf434aa50f54..08033f6331e02ee64168625f570f2391a55cbf8b 100644 GIT binary patch delta 818 zcmV-21I_%62a^YoZhsI-L_t(oh3%I?YgAVlhM)J|+c9^{G^0+TV8PNZgoL^YjHD?s zIMPzPse$RXKfp~J+_c@esmtvA6+vCO2u|pLv4Mynl?FFABa!07&lzLFU}wpC8*l5TM`3#xe)8?mI(Ax*a3qgPhyS=C#hqbQ)}sEC2}0JMq<;*8-UD z^lwXdg z;l$j#iz_vNMyYs6*eT(C1YmOaoF7z17MAN;T&Y>9IDZ$3^J#V})t}n)?NSFODjh#2 zbV2A#u%lo{WjY;f#uuVf6Q2NRaixaoa;i1DH3~I{@*gfiduI&J3fs5SXD}p-&;Ikp z#6f`JIJ|CRt?xj%@*lBmp%Ed3ytbQ7e~y0Oto4!TPIVSdX7(D$uSV zfYH7KNo1q?{V9Nvh2^@*zxXmJgLNssm|t3Y1khCTgp9E7Ky50Uu~P96z;I>x&Sv2M z=owd$?jqea<7)hG=7-_RtvdjX>G6VmeVt~Bw10oB-NN6 zFL=H;Ybo!u)OVTSa7&zjQaXNlI1aBTt37yDb$YES&*My5n4W+D%*YA*HVRtbJULlh z6+8qmC`4XsR7Pk$7M*Wa4;dk1d@FuN^(NYOs12ohL-j?nN6By-kZ*S5?b3ib{hExo wr7J9S*(+;ai&&b}TYLr$a-BWxX-_-#9|(3R7qYrOhX4Qo07*qoM6N<$f^(dXqyPW_ delta 812 zcmV+{1JnGI2aN}iZhs0%L_t(oh3%KWZyZGw$3NfQ^RIv%lpKof-BXktiLIQVp#v0b zNCPy;5OhHO_>FJ~3>N-mfBHySUpa<6`ArBd%f16sCho{8Lr zAe!>9cYxO%CU#Z^8$P;UiNo1R?rygQdK|p*nPH!F6J)Q1$|LdO?S|d5Wrn?blrR99 z*?Z0Q-X7}eHh;B~#K~qm_cF;0ZFi5Bk((pE_P zI4EA0n36H*n%n6d+Etud&$lDd;*Wb_00e0mFU=2H&omIbCU>fkL@l+RnJ}(Y0it01 zv@E$I={!INOQ!lyb2wVO2RoHX&ASTpwQ=pwOjjR;;VFPhT=)ri)^VVn zuW6@eWXYB1!2AQ1v;GeOCb_$9Vxi+e8TNZ)+~}G8WXg(7!D}4{qWPK;<`4(ifuA`p zK>5ZXGk=y}<@7r26Y?p)yhhsgj{`;wN7f zqU8qwtD_h5zVxZf9BwDIG59CRwOTMfGZa^z2Tuz*W@jq<7!a+-ZB1}i3PIVGs;tbw}B7bGXSIU z(&vrwOTCAH0U2+j-E}#hPVLmPWf?gALv==a+HAD|`RM-9!axQ;H`^^hl{lOgDj!9q qG9}m$D*qaXv)!KSSjRe6v;GG9Vhda9%j*IF0000XV{ZggCU%+*}jB3Ko) zdHZ@&mn#b=Za8I_9DXQFW*#cwY+V~q3FZQAPi5ywjyF^wWS9$7oEme4X11w9A;H`o zx;5NS6Ps_gSbrEW7l?qAa+yaISV2%hU~=?DF_*b7f{~!0W?>%CRxUdY;oY!6jlw*j z9cOH)qRoS_LG{8sAOf=EWCu)Jxz|);mIf2lv}s_85*vg?(iTBi5EvmF0=(?rD8G~C z<^7tVx(kks#9(WyP|>|qv^0#Z3I)77zEqz!NfDK>D^67MZa4?xD z?(Oy}#V#eZ6^%{OCY3EfH)(7ok|d~4swcwlTH%WT1bjM_Pp9J-`?_wj0!wLS)4(E_ z5FmkraS+1IQV8I)rhd`+_Wj!7jHmdOzMjkbH1|XSBmoKVU41RcYsIIXuRpH(r9Gfs znrkXdfPV{unvj|x1*D>Y_=29y%xGC(yTk|}zM$z}D?=3B5e38-6oaIi?oL36FNmU3 zf5t&WkTUqpUi`EY1mXb^kP^&Q)_cf9hIl~hPIjOjJQEef1Bxpif80+Q;sGhZ|A%f7 z!~^2df!Jb*3sk%@d=7$S6=EvS?WN_ft%SHhY$R(>iI_+su2^-PVAJ`3j^DaWb``Q7 R?<4>K002ovPDHLkV1hPTIivsp delta 671 zcmV;Q0$}}(27v~UZhwABL_t(oh27S>ZWBQi2H^k9*iHy!JvO)C-GH%;Q*4+Cr zO@C{BcXnkzr>!_vXq19uEsPRoX<-0yMR4qKrVVSH;0}BI7qabGqF-l3Eq&_K66Lm>v)&wBXVTA(U&zPMbx2%GrEQ|;o5?K+Ig;)oa z*e6Q@6yaMOa;4C$Z5-`I!gHVZ%20Ao^AA^~9TV3AAp(_7J)PQkU+dJ5zOC4q*iY>O zkz*iTL4Q=J3P%s=2zml&AxcR=I)ZLaSBkJ4PXf{rlqRc#eyzBWjv#{7e)mctg1wY} zc5U;+dK^duL_iwAjb1s!hD1Phx8f@DTvCt-2w*iyNCc$1{6C|DL_h#SD>Q0I2-KXa zTqKzP4cXW7{OZ=)$5BE;Agfqa2}43vD;8tz&KUo7{Q_g}X^k_I@d*F`002ovPDHLk FV1h92AC&+A diff --git a/src/main/res/drawable-mdpi/ic_send_voice_dnd.png b/src/main/res/drawable-mdpi/ic_send_voice_dnd.png index ef25b1c4d044532378f3ffb64b0591e73fcaf403..aaf8ff32c4e6267483f95ae1a45d677eb6609472 100644 GIT binary patch delta 697 zcmV;q0!ICY2Ac+uZhx3bL_t(oh3%KmOH@%5$3N%3$>xWeWiDK_@y8-0TgVuJ#-I|p zC@6yb5Bjlc5pAP&fy<&@yCNts!HUKN7p5YnQ5!8Qq86e~+RW%U@0}LSj1uFFzR8N5 z@9N%n&-Z)2_i}mXTqvT5!XSkTEVnh)CXH1G;Bo9}Z~xf4zkgy#Pd53ZG3x@*_{-8{ zz;EA{$73-!y2h=cXv|#9Vg{fw8n@27)pcd)Tj*#V$e|4bl*5s>rrJMd$g+}k`C>#& zy&G*;h6M5cj+kt4eTTLS+h)iTQ8&Dub3znPC=cwUJKoMYA-C}4TKwJ~JOR=L5U>-M zW#Cl=K+)xVb${6yji<+vmX^Jq-HGm>GrdP+Qy16a0X zV#K$a;o9pow`|B>No0B(Bgsr;nfernS+@`-vYA?OsRBCD4kf6*~vq z1(2bkIM5yG2-bLzdK^*9qf@?T!!zsoQ4{R~sQ_@GH($QI9ixIQwKZQg!a)Faw5RmN z=p%uge_{oRcLYy6DyLGP-Uh-WH}df|)xv7$k@9FluK|@Q+G}HT-#;+?Ia_?}c<_MZ zNEb>2fPVvXt0i*1vTt}XU#?B})Qj!Sl}6&gm$-)Ean_k&$4p*;^rOwtW5{Y)f zX#`Wf?lcsfuZlH6$*%sgzQNh8Y8U)2i**Fgq%tqA5$*9mAAMMeUct3YRh(>NxA^CZ fYtc{<{~dk+@gmxfY0UOz00000NkvXXu0mjfYRtkvV6JNC(XY>UhW*|Chy?!}P?*EDG! z*pPZO?QQl}_Q3_GV33)8iJ~9k%cWBN(uM}NkBINX_!^2YJKuqM09)l!F`aI#PbwQv zK&D%n@z{D+zbvNHF;p(rI8yFg{IcR#({~O5h?pr=>wgZ=AKkWZ0M7wZu3H5r%EM{|s7nO50QJqY>b8jTzPplwI$;?$$ zt^la;IpG!_1@YS2!mi|UeVbMD0OZ6j>7$3dOfEWZtNg`8HU*4}FaluEm1@;`m|t~% z1l4MLPk-&6K6^rR=bnhh0TfhW&Jz73SgW-$bKIzm2xO$8trbtU9;aM)wVgT#+T<70 z>DaNI$aPg6lK`%Q8j*J!F<#{zXS3ZJp-vr3L%CDN(lHes6(n9aSL>QCiORHPM diff --git a/src/main/res/drawable-xhdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-xhdpi/ic_send_cancel_dnd.png index 276ad02424f33eb25a8aa6492e6ab7870cbcf38e..dde1b7076d606ce0a44319cbaf55a68934f9b283 100644 GIT binary patch delta 1869 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 diff --git a/src/main/res/drawable-xhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xhdpi/ic_send_location_dnd.png index 90ce346cba6998bac84fb5c14333932b053eb85a..99c8ce36f2da0664278836c893374c64723c7ef0 100644 GIT binary patch delta 1662 zcmV-^27&px4cQHlZhuxuL_t(|ob8(1ZyaYC#(&SuZnE~;X%3cZ)Fuv~N+lNDSazgb zgl%l~8cGd+140pMF1Y5Ji-1~{gJ_XB3Yw-jl}HnN9ZPNTsoT<24hN-_xTJC*&cR-v zGxKsmOk&q*cINwLx1jyqdY|Wg{b=T!?|WyUNs}f`nl$-eMSqPbYNb-Hnp=6y;`njN z_KToX@Q`5zz=T$f_?E$}nLZ>J{;7R!=OvAf-mZ7Abq#3w*paS?^(PGVNwg->nz1Bo za-ID7JtKd(oK=rosY^gNjveXBYyD}^7d=^C2tqs6dT#1NPk#3$(}1SCyLWVbruZ~y z0JFfSw;(cOxPN#ndRdjqx=-&db+Vya>g}{3_?Be*v#J4LXh!gSTY2JY7XFz8bo0r+ z&xSE4WVC1DzZFA^`CRb*!r8G)zP-H%baSBhb9vKu3<|!zKMBFgy6k(qho}DL)7R^| zP%ZU#=Fv0t4hO)XkVnr{`wu_t)7M)-*3*+$$TzJ{w|~{PJs9mKJ3igry~CHMw}2M+ zgoB2BAJvbOvug@Gs_Eg#pr_f?+)beeY zDS*=zRL!kCCQBEN!IfB?EDlZ0!PLk8ekZW=*57xb3MT}QB(Gt`1yw%}{3T6~;J5}^ z96z2$Cu82=sUD?4Xs2rlX9JZd=PwidF&jJ!_g;mqm1Lrj;Rq;bMIGFg{W~EXNIFwk|$be#kemwGxB>MN;g#rF49x;r=p6d9=klF?p;6Sagi zU+U=y!r(;ONoCp|H*h+OwRbFkP@QXAlYcDnh*R*$lKAdI|KV5KqL$aU9w_e|gpURR zUrig1nbz7nmOn_Ny{At%76$r`%jj|OFtJR`MZq-ygAM`?rCD<}`5Kk>k;&&=Je=o2 zVQiIHatcUB3%VP!0L-;B2*q2j9?lcR`P}Ne2ARG3O^c+pme%N9S0CqqI?r8LM1T7D zK&Qb(u}$jL%95*(m!W+=3`TtT_+$ssc^^Jr0xFyxyJTp_hnEiw%@jr|@B8rb_Tn%U zzxU^t}- z=p&z=i4e1eJqO18T6$*j$-_Ms*?)20zO^6=o-K}yzwOi0>lFl0JU3Ah{MEPbgD~`d z>&W;!zJ0w11h6jqEy%-Rp;ly(;$O?l0cA6p1a#*!xN;WW+Y^_4e|on;CIJE5SPD*K zT+hn?F1lH4jZ?i;tcA=1+CMh7tdQSi<-dVKe(B@Pbw4r-2%tDL`Bs2=eSfNK;X?7; zL?uK2Yy$#V&*gq4Sn=&^rnNYVe&O49E13uM(Alx;rr>4Yz6$ixuF*>Rx3o2qc|ZWg z;qfx2Kl*djd&S}Lx;!Q85|F@Fck(mPEmtoS3v0UlLKb_T?WjvY0Q=5N%%k81w+*CB zvKRLbSDb^cmAVB4&^A2w9)E_*^s(GFH0AMDeK2(m2;lP7>hBD$B-I&Qxjb8aDT|&y ziMj{WJw3gq$ev5`wU}Tf2=dQ&PfxF9+1qy1Js^O#(W%)e4t`qOdL#pTu{iW*L*`5k z2?${K$oSiaUVG5*jQF);d8%Qrl^PZhKwEkI6k__mKQR0AnY{7&GRR910 delta 1630 zcmV-k2BG=c4Y>`FZhtmOL_t(|ob8(5ZxmG&$G_*!ZVT1&TjE0Zj=0h+yImi~{w=#PA>%BWQvY1=3nzcU!tUQ;N_^p+9Il_xRAQ z7ASP*-ZQ&u_VYaFdrrPHbLZT12PjjfOqnue{;NK;SiRz%kUWTBnk6TX`woSH3mtwlA+Pc+nPrP>u}8^BfJqG>{d&nm6E+@bz! z(Nwrd)?y^d8?#dZ&&nv$#Y*O5YyEUqM(;71q7?6GZLL^+dvYhU>L9R^)Fz@pYyF*@ zSbdzjyJsY|?|;h^m2m&2O*NG>&g%f`qRNqHaB4;$Y`oDw9EEr!1`TYeZ-~cZdx=pU zh5myucsx$@&iY(BC9N%P(6x;%jqxCO1HdwA?IoC+ah$j72d`u#MMc+z{!N=|Ds-?1 z#Wx24mR0Cr&+z(&4U(c_2JzOd@rv2lYh0w)YS9`P)qg=;?e1x9t&q|bGiYdd^c7;R zm(sJKcGc+Q%Ti(@2IZ1Z*Amo=5?T@{r8<1KaifTqgop!vm6;t0EeV*}0V$EE$l4%3 z(NND~9kLt@e$G!cSikZyTYgEq6yk?8L z>;)WuE0Ih6@Sr&WKtNFIrMs#*z7K$Bl7PTZw7A!r4C@16y9Uk8b3#LeF^%~CTCeZc zQrE8V`ffdm_g5FQjD)nGO@DTEZZ5x2;J5* zXuKwuIvqBy&#U_pz+~7sV$_6*A)|M(HD@W>acY(cy*f^6K7h?An)3^~nh^xG0)Aq1Y&B?*%0fb&p6zl6@WA2N$ z3RY}1-Xy|~vE=5pg-C8V!33~3#5WK705M7z>H~kbydG% zeESkHrE8r=a|8?>AlTS58z zWi~x|2xdBGt6@D+m?w< z@K0V!Y)uq1hycw_>7OFj{LL0C1OV<(x*MP?(to;3p@DS5PyH&bD{c?~%sA>x7TYi^4FeoF&Jl_r zXCwyI4_?U-(a9*Z7ef=Bl>YT@o=6M=fB;jS0F6YYzkoj-Jz;dHSO}3BRF}(5Lg_D} z(*GNc&m{I-k0LUI0Km;=&Vg_~Dt!&QIQLPAjz|pxfB^SC2QVeA%ZzEo>VH#d-3N)> zpt@Xc#9=-zts4U$b^R;mr?dqUxj_K1-p`x__%|s%0xr#IMo&=;B7nyy)yK@ZZL7tE zJC&7uD2kqEF^Xak05p%J#vH|mY#K-gm{}cOlgU^cT_{B}2moqwnM(vRo<0)M$y)EK z*sEFyMKuTjMpspS1+#w+y?@b_l}DxPS&E_?)Y{WCeJ>syK)Aofrs67gu(hYh^pMh+ zq8kJN4Fdz$!Sqof>k$J?iVr`Pye$ zY0$gPBdM{H6_%&u1_8jv>}5Y7{XP)|4AL6vgIX_@D|KD}Iy|?r!*d%uN?k{pGG)q? cDf9o}FY&B4n45AOVgLXD07*qoM6N<$f-<=Q9RL6T diff --git a/src/main/res/drawable-xhdpi/ic_send_photo_dnd.png b/src/main/res/drawable-xhdpi/ic_send_photo_dnd.png index 2c37db74aa1e32863db9313045076ebef2f18b45..fc69cb416fc817de7308661a4e65651d033b1e9e 100644 GIT binary patch delta 1665 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 delta 1303 zcmV+y1?c*g3-bz)ZGQytNklQok(Kn$Ha(FG=$Kmw`aA7HA~mUiJEKnNs?V5kJ5kd`E8w-tf`5RL8U!%&{q zNzT5DeLkOmytg>#d!D>>_vFrJVBWlWada85wo27=o8@PZjDLGBNlLnZ@XGEx6u1Px zNwx6#v3tMVAJ@c^(oP_!dKQ#306>w>9BLQPhEqLdQ7&}9HtSG3fYvLOg@tzN5=m?K zhO-JKyI*KH?z<#U_IkstLG1zBDpk*k$g4qboE4}&K;ClgG!)K<-NCd&?E(7n=*r>4 z2il*A&+qy*t$$Fy2wu7RJ|Lw*b~tTNzCev~?R5e#53}QGf${~~EW0l%@U18YFi_ju z`g-;L`n@Rj8E3vg8;-MR@xVt>4m7DyJs0B5a`i(6iTuWO(x7?*c~0$35HF2t;7Nh% z3Dj`hHIi?PdICv@>IwAV#EIorJM}?a6G zRNx(Zqg=Z{;MAxmvftu@3Iy6Jxo1Rpc2pA>HUpL3*4K+8fC>cKELZCaaxv0J*L zC#^xDLIK@cUCk8!c=)^)+DaiO8hHwBP01;+KtWC@sllfoUli#;<13|cW4U?zLD2U5 zdUDaPTdS*?#or(1JC-h33VC)^0TvHx4O@XWMSs~s+Jxi;R8fsPXkm}2$bj}!vslcw z(s^4eZKv9_DYTU+TZ36kBi|7g6r_L{uHb{9#sU*eLrNCB@MZd4ojJq%}rf}Cm#o7|n@-_+k(ZBTM{n23}L{s>6E7iGi zG62RDY7Jsqo-^MWit^l#tNk1?y9))>0e@GI>8? zzL4$U?^053*y4mS^##(_KPz!x{`)l!7*k&$g7tCg7?_S_T|2(VxK@)J%N69-2?hxoDjzMFW$fiakb?A`de%R_o*jPW*cr?H>F90 zG4%vW>(M_4OEQe9C(xq>dNk|LB*2(_fe2WhmRi(4lLTY(1=@6KCoLiq)gY4yWAX(O zawUrE!%2oQ`2s1ZI)=D|e+;8}t$);5zdP`b63`wX0^&itgDlX~1Y_C*iKBrjt^=F!4Og=!t>(4B}nD(wg()$j6mS9XffSSeHk_PPE8_gn&X$O#2dIfm$ z3G^((n05fsvg$(4VY=D@q%@wP@cTK8PnQ8}v+O$Kp2xg-^Jc350NP__ZxFVgtNH){ N002ovPDHLkV1lElblm^| diff --git a/src/main/res/drawable-xhdpi/ic_send_voice_dnd.png b/src/main/res/drawable-xhdpi/ic_send_voice_dnd.png index cea4212a87ccdc744e68b8d530416c11b41c3c5a..66b0c67715d0fcb8f270c3b72a6f28f42722881f 100644 GIT binary patch delta 1326 zcmV+}1=0GF3yTYoZhr_#L_t(|ob8)WY!p=-$G^WfOR2m4!ygemi3tK)#F)Cfa!?i) zC6AoPhP!{cp#pLi801#G{yw4hE$|mRyjc1^dO`Ph$aRjHo+qMr=_s- zz8=7&-I>|h?aa<@&HEgG@4esmx8KaX_h$ADU@#aA27|$1Fn_optuCOrBiSdGN&(zN z%1QtbVj2opXzQ`=Gvkx3tgmGTl`_e7+LFTx*jTHd2CgWZpLXTP|B9-%`Lx8KLZ*MS zWyOvVOw`j~AZ6RGe9)7hxYX?0s!>r3mNLn8qO7;;H3t9)CM+v{-ewG&IuAR)~a)J_2^thNOVJ=RNq@H!#vmVzK|U-wgJ|ZU_97N! za4DPmq&kPT?RR?e6F1!Y3vfH=8$m_PdbJgwdwPv@EPKByTk5V?h7Q}X!rXPIs z`w(a!1OV~d>dZ{S9wae;iH(8!5P@UjvGeW9jZOhLR?McK5b6{}Z4_`701%u8QcY=U%DPn*ohO8&sW0G`ue~DYv1(mgMWm)2ynq~5Wv1Gd~e0@_-|oog?fmyv@5v_ zlviDagjel~{;1YUR1bwr|ASUcy-CUjw{{X=bdQXU1kspJ=%-v~vgv~w-0RU?fs*fS zrB3#qI@i!6z^#F8t1PYeL32Ai78gPdb?45XXtd^9gl-T4Dep`jgkYdXw~7KU*ndzL z30~;Qjs5M`sgO;r7RXi$`biDhiW;kKGt2>+cuu;sGrdQIuh20kIiX-yC^sP}+zX(G z!j-ac>)?t2HWk0>Iz65Xp=`JO&Er;P+XhQj-hjxOCP_?HXn(w7WFpY>RxO%-(w+zU zI!ZU<`<12klI#d2C*=;op=(p+lYf1alXt?%=|yCpBJhQD&+HrrsPH_A?#1K~qM(7Z zcb3bk)kC9&uxoVHj6!5S%w%FS>h@MDJ_Yh|0G=<{?lYw+mo((ZUfp>iti4pdwES}@ z4)({(GuDT0ZHc)3mV7fY6Ln4VY5BhzwG3#rIY1j2)b1FAd@u(2U<~rX7$@X|F~|pF kkPpTngTY`h82-2X3vWfP>RJ2>{r~^~07*qoM6N<$f_-{`=>Px# delta 1333 zcmV-51Hf`-lx4|W4Ds2Y>|5-OkF3vU1%RC zWK}ie1-wu3K5*Qzp?cT07?rf)WIEje+V55y4ge6cN@yRykxqBiv$k?19+2m$Hvn0= z)Om!gYMZr>)_BO?Kq0hTKssT+mJ29pS}q_$n}>8W(SLFQC3^Xw1p`W&)(c3RtwvK} zN15!V`aXehp@vxRIqvXZ0aG3#;x~dyp%~Ox=*VmkOWt2l4#n%rjlNm4U#$}XKm^l^ z+uBfC5j>uMNAUvy4c-aVSK8;Tz`#JOAyPmDrxv$O3pNJN(AT2)J@O3JpoL97$1*i8 zg@{)W{eK4vEa?dv@7d~76h8nc0lx%xYUT4*q9Yx8h;{{8$okqeb_9*@xtSdVS@Qt| z4P5Qcjb0Dzr{7ydjnwJ~L=32{B)=_g(`4^tg+m6`OzAU$++V5}iF-<{&x88^?CI&G zNZMZyd^IkGNCB;PN5(~1nBPW#-mJYZXwIg|8-Ei5oLWjqB<^{@sS2wjJkRf`A#N(4 z%~k7Dj>zvpO6iNfM(W+88+&~Z%sEo|(c$S?IU$ta!}KW_gvS%zxe?#(JjcYw-c6d^ z?W>LaIZQu{Nbf-a;9=&xg|GG&3+M5{}kh3geV6o7?g)-j4$3w!ur+V(C)`*bm#Fv~lcL!=z`tMhv&m;Evh zk01(NnU@7}&~J@1ow<>7QT1clYB-&1zG1l~Uu18ttIt<_T;!eJedWRtVPPoO{aqX$ zu>{1+muI29(?XVfec)j?m3i$v_C&s&=YRMbu-xwcmq7KZ&yOs5w)*&aT=3%XiuDj@ z-s#&*^7Vl3EW|opX(g%#*V+06Sb7^krd+=UzDVUqevINVpV&{i-g5enXyQP*KB0IN z^;3xt&vxf>OWFdAr&8-IX@60ucXROuc}`z&uFD-cQ%l`J#2%0Ube+Bw(#wig;QeJA;A&>Jtu7$8*xIlX-y(uZVB?ElUxQJD|D? z01&+z;9AUobqIiDsU-TVRDSe_h$WZTuZQRynzlGk;V#cV|ue*@3~qnK(3qNbIi&w=H_ z#PxntEe-!Wlj_W>1xTFO%{8x=i0W>-spa}wMc1%Dam@a@qFad>N r0t&$d6oLsT1QU?KU@#aA|6BeAX# diff --git a/src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_cancel_dnd.png index 93fbc44d4d11fdffce01ca12e674b233c7f76c3e..e68a912d75c1fab78a4ac903730c3fca5dc85406 100644 GIT binary patch delta 2903 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 BqGkX9 delta 2831 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 diff --git a/src/main/res/drawable-xxhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_location_dnd.png index ea3d15026a11ed86699ab6c7761bb6b9ebc72110..1773e62d22d3b429cdba9c02c72f81ee95821470 100644 GIT binary patch delta 2505 zcmV;)2{!hU6rB{1Zhx9dL_t(|ob8=kY#dh|#=rlW^~T;^r*1;p1W40{N>Cz7O0+f! zRNcm|DKza1LE~B$01%Qi7}!Xq!Yy zb8AWMc)eabGw0*MHFc`kiS2Wl4fA{T`uqOJpJ(>WxebtzkbjVnkdTm&kdTm&kdQDV z;=6$Pa-mSjWo7K6NXdtEq(2CS<)WDtQ5k}Z06-w)q%I4jq=EA)P-hVG%~94JyQNqx z`EJ8}sH(vJQ)v2do#OgP2O1tMBh#{AVFnfn6vRa&@WlH-%W|yA}W-aVVFn zJSXi(M}5~aMQj2aYRRuoL4DWTRW%dD#VC-cZra=XZ-3vV05J({MZPe_zI>`}57!78U?#$|I$g#?Sfk_Y&A}b3PBHzV5@@2$V06wl;a`$vO|L)ZBDy zO61Y_e}8Aq21Q5wR;iF*?%LUDU@R0;0{uM_buN8vAV4is@*NfmDVM%Z11ksRO}54Z zeIUf`BU1T-OHXHkjkIpKMFS7H@^eKHaMQ@=?{)UD?<_D0qpu23wQ+ql8Wt=>ssp$;CY?tfn4wFxD1a=W)4*vP&2EEADfjK14M zfIOQUm)iER-X&GFi`G+X7gyJL1vwIloD+$L0Due{MC%n0tOanZU3J()&fREcMML}5)%<6xBxi!C1NAhzU+N4Zq zg?}wKb@cYksiu~uPZM~QWZFhuiouUF`?}w>p$%C64%4B!%Z9E%MxzuTn`>AAkm=~{ zxvcn@K&;FnYeg$L=$+XVfI_#tTeRu9oJevDL`bhGyotYYqwm$a$r>a zh;hwG@5pub9$lzTeOLdWhU_v?(-lzeG=Hu+4Qqk1_3o??^+q)XBSV#xu|IMys@p;0 zk|{j^5W!+Tye?x>b2`=nyEKtqVOlc)yH<90kD1bwVzCk^`Ku|tDTYU3yzNuiyCtUd z2TV&!7#udPsc2r4HOAXMg|)yGq}HUK0F~Ne&qn8#!yDJFmUnk-nnKZR+po~JC4YRGyl7f8t$B}eO_f?}T2s}SZ~OnWZ3*8rnmP-J z(Ow<36j&%2>wR+l`Z|IIQ+ksK-yR9hnbmv`d$+{y?lBNX3#VZ5SZdVRva(WLw26j? z&j6e?IU4hRtPcK)(r=j7)KHsB%}sYNRA=P={2C>A&_qqs(WLPF09<`z@#cV^Kws@?cU)O&H~G3!vmzm@`SX7AR-gl)Yw5+e(rW)ZXYO9*z3yA z6%pC%^6)UHo6>_+^cT}pE`AZJh&x?6It?tlXW%S>ewUs$5z&3QV!ySyudCtwV3i=y z+i#4kOehLFT)R3CEPvD9e+sPr2Wdhd$+Y*Ma_#Hotf^4xZPk6138O%)?zEf(S&a(N>CJKuFo5u3o4bPNm&)E|7;@qR?Owc)^lcYN0|MQj2CfNV!k zrvU%*UB?t6e19$5(ckI2j_JfIFagMjTL@U&aykb>NP3H_ssHOGR)GOPuGoK00WbTm zLj-@y?mZa0$Bozp1^_#ktlCAv319vcoY;Bus@=Z)XCt=f@RpjJZWZun1gsrWay3Yq zP&MICvwH^4y7awXVtIuDK(4d*yoR{%PAhpau3-T&4u1>)>N|V82ywOsgy7-&j-H|` zzxfdBzyM%07<(RswO#pB5HeJ$q@T0xvru9m*z)$Hqa>fTJJu+K*1ukM@SxEnjBF75 zz<|lqLkaA$rBBH2`mX*#TlyxciogIM7u9VQ(D?Ct0-nr8wXqu#n~ACkOp3)2DtyM| z`g}shk$=)p$6?y!da0Vg03f^f$QiA$#grbk{3gy__^VM>fdRneS@rB#xDxj+?&@*2 z>%O>H`yix#8$plCRD584|~HOGjfjdpsYiJ}>}~fq~1F z@$@eNT)4_l-_9+PUr5{F4Y48qh6oIpT=p&M^5fHwNg_~D5gwOay+&V%blmHP#v?xBEDfXWBU01?2D7EBUN-g;o-*qG;BqSsxBqSsxBqSsxBsk{39Se0P TCz=C200000NkvXXu0mjfV-?NO delta 2494 zcmV;v2|@Oq6p|E>ZhwzSL_t(|ob8=kj9pb7#=mdxb7rP3ViD(d=A6!SW`trRf`mlS zgrY`?R9+;+TTCP|-X45b-dl3PPFE zVP?+W>+_)u4x}CCvew%B)ct#%bH4At&o_JTwbyL}85tQF8GjiW85tQF85tQFXM{-? zuwIUJ?mQ>T&0iRheGyH840-@WGCa0ioq*^ZO80~s-uTxb0PM4&?O-!bryVy#@YU8^fnADAw?EZ=Ax|EM8%QR;W% zK~70J*jFn(Mt>ZPTzJ?bwSj5p&bH}S=RXGF8UR~;cpBiii2bwg?s#JJz}LoM!v{S14STbS(fN;mI)Ga#zpH zvnP|TWr@@THnr`7!JLV|k6GSO6eiS1%2JDk=L!0y|n7yqw^dlJK^Hj6PTI9ZIAn>pigXuI=49 z!yD6n&wpA80z`nXP7Dn6`1bZ1n6N9?-WGlnz$Tx*j_7EMa$i4yT{)koUIUvhRd&1T z4@?3|0~ZvkpZ4kLEwD!SP?us{>&wpm0N|YL4ORrT<)C*Hr+Ga38tg>-6_=Nvwb_x zcWvXmNy-3M_&B>r%+TOz1#HCPaR3OZt;U$%AmAkux}Ew1JfY}H01vqIaT=Ha)&qTn za_2!|g!$awo~hA^6+U*~8^br(Q+U6-YT!IDr~mo?DGZesh#$Dnmar&tPq9`$w3hER z`hSK$Y@{1Ow7IA&X865Q^+?TyHsJUkwg6t_LRa9)W*ptL*02Der&d0+7)Lh=bTW$E zW+ErYyoB3E2aWa1k3eG>-!U*VwbCVUMFwW3CV~*Rl8kNE1^{tDmzP|(fr%Wlt!Zc; zELA6--Kb9Q(eem{hiufe92pGT)?ALWz<(Ou7jL2PE}NPnP5_J6e&qRl^q_=UTY3OM z;@o1 z-f~<%ht1m*6SY+iy3zztvb#Damfd^ea@<`K1H5WkvSX^df55UPDy88;0PQw417rQz z|EKLrxXIkhwl&-G;ia}Ub269M)_)Az>>vA^+RlW{+_WsW>Im+d7#OhD`m7X-n+Wc* zr3ajvgWrr#Hf(Ax$5~*dYV~!9RtuMKZhI71n^s13?3U&3GeXlgdt=^?)6QQ88n>+} z1-oa8+b`az&h)n7ogs0Jjhfy91MA1U9H)U9*$<3R5GnjxqyNI~>(yxVUw^n=F}~$u zJ(`hO_pr}ua2i-Hmv{2tMrey^M&GFwhOS)ecV`MiSH{igyMUbZs7F!k^bB)4ML)hqDQQ){Q)PTmsnl*_OH57XRCpu?fu1-1l* zE`XmDfB*)-8^4_BZ3e5T!>&D?Pb4i?Cq@9yx%NpO&Xud%o^$QuJTL+=pww+pVjDv} zbG3(UkNm7&F~MKF_#{YRVlT(&C9uNu3(py-?!zkyBu@9%Cr5pFd4F3U7AQFA%gZ+e z4!CX|F5z*>?A%`^q;iL}4IwNB@#eqzvhx;Lpa` zq_eTF(|dZR1A5?WILidch!6Vq^&Z&y z^|1=if(L05PxsZwDu2Fx6WMF38Rqu2@>wQ8i_OUCO3O2mNMQX(kBmcnG6`=R2zp{8 z>(e$uV%zTp2EP!M>Mh4l3l%Lk_5ZhDVsE4TA`u)&%6|hqI(TeiCMom80t0~A`EVZq zXETiK!@1nTrhQ3PkZ52#UK%|?Dv_J_dLZ>c((i0ZG%x^ozJI#yk7$9Oe2R^pYU$ym z>qtDXt8p-rbWhrw`4aC*!+Tj04-5eM>Jy^@^hDBioEaS|OuyiK_|}|ai(vPmIw?03iZ-nk=D206FGIHUP@h;*qLaVz=(rU%sJZ0aoD`2mF`>1Y01EVQv;qk;ufvp z?G7YkBEB_E1Cnc{Wdj3%uIgAhfcCET^MZa^sDDpB@3JP>v~*wq&{G}TZ=iR4X^w#o z^;XB+J$!qjTp^3i!H~;_u07*qo IM6N<$f=XM^0ssI2 diff --git a/src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_photo_dnd.png index 09c11a817a5f389811effd76d2a234dfa349bedf..fe33a1d0d4b56fb966e40faeb3ce0e7cfe685586 100644 GIT binary patch delta 2518 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%0A;%Urw4NKSR%bdotCL_aH?jkgdKlm( zoryE71R-ZZe}CRPaV+dPp~tZIMn*EmtllEvCW!U$?6%Q#*mFV~)@rHyj9I-$z)k)J z>;ACup??f(Y{z=jLogg~WSnclM20d~?al02;IJo&azHz@Oc`V=KWO1a1{Fam6;Pv2F~b;BTVU zft)w_elMXrN2#Uy47Bk@)kvkn55mv_El5kFi@sU1beApYZ??c5t?cS_zX z{~dxuo#u&(L_88H;tSOa?c%&#?h?Vq2MLzCPs-bG%N27qweWPob?1UYr6mWD!cHb& zMI>&~XAHqV9=Whlqa<+s>MUwf2M94WqCB6?ELSN3R3mM6N?*%zw4Vt__Ou ztyG}aeh{}|^V!CUz{iZz)=m8qqcm;|I=+2+vI=0nKWbJcR>MT35%i{b=@G@9{nDe9 z>|(%gB7mmIY`^rZM68DS)Pa9|bz~$hf=m0Qhs34t7sdk{xsbY}{an2!R>LUjlc3{+ z&4IpG95;PGaO;mku;!?V)qgMxI&g(SiSD~$0v*`4NPs}iQ4{y1Bal|y0uo5PV;I!N zpyP_IzIRn4)Y;(U2-F-k@y-&dHwPVG7(m|*^DQfIBBT+lIcnk^!$buR@FUggEQyc$ zrH90sLhV>1C`Lr}tsUS>#5+qQvu*zGA;7*B#87Z3=xsCsCG21S#($NFd(ts9lNs3_ z6ksX5*)K6Eg|~u^*9y)kVs0Q4w_!j^1#ZU9xKnRypd7Uf4OG&#N?>;y%SWh<<53d3 zVHzsLhIbx}S_g$Mv@6aL3Ab@PN@6!m$YD3{*g-LNeQFXSFGr<;UdDh2f1Pa zKp`p(VTs)^08oNE+JD7l-SPnq`Dd?llbCqLn`(Op&nYCLXJR4@BXDaY<6IdOv$Rq^ z{~Ho(>VmdnUg90C7M|XN;G)&3ZKG)ml89ajwUC_=UK!wyl%X?D? z+U?o|fTgCEa($iRYl;n`iPn-o3Pb^n-S>=~}r$;ODMAcJ0!eV%fFYyR)U$ z5+1fJc{5Y1yc1SW%`ROon7@yS>8YJC!vx%P28$1{RC+SZ&J_U&cj|2bZxeXFRv6D( zzMnq#iiA*SeSgcEE!2)RI&Ecs+;Ij||DJn@B8jQ12NGr&04Si?IKA*7f&J2EGH^Zu z5Vd0-0IypO1g!cT9;C=vx7X@5$r;1`3+`;>$G#iK=QLO<4K(u3!zzNJ)n1TL!vH|8 zub-ZOtY+Jn_ba2D-*Lsvskz7dS@_c_2{vr$@tDHk6Myxbvn%RcUbc9HNb`v#J_gSx zabwtpkk}%^M?AZDNLq4WdDnl>m`NA6=@h>X;Cf+VTjzgD;tl&0VmDIQ>Dk5CsPSUn zt8`W8{z0x-m{YiukXyjyeZ^=s){kKTmRB2Y6Txk6zF4!s*P2%9$oA>UYM9nVwSqHh z`M5@eH-9ex1x0|#`EXGv)|FxBqksY-g$=%sM!q;-7nv362B6N$ayd1DAq~A*L}eOe zCZ#!;+z*C?W8E5d0Ygj8zGV2qdqzQkBrR2RNupcTjj_p~>evF$?J8v%rmvbB%BDW(8ga$mO^Q zzCpSWG4lXF)R0M~)$3u$EQ7&dFc=I5gTY`h7z_r3!C){L3HVzzuWv2fRhQ#ax()rzNuh?Uh6@R{9F>l3`fX6M0rmdxVM@LcJ<7OWy^7Y zki;Na%fJN$+v{z9hLkPc!vt-f;R1o}p4|MPDEYMRVZt_# zaKWAu+kczygeBk8JxtW*2`&)Wjg2`!5KZ2L@(33S?6q!lRRLeuHB4HO z@=qn+xjevy0%N;f>RW@K2~gHGP@3fdF7zkK{ch_qfNMI2$x2y<3k^2tZ9d{L+6L3S zl|{JFV7sRuxL;iL6&=H5wJgDf2D{X5FWg}b&N7A#rgAvX!u=z=o@2Nx%lkB~t8L z|HqwqX_hlC^;O=*_4Ug8ZZB7_VZnCGu1#9DqGyw|0c8tVBWR1ra?##hi2|28SeX2? z))BX6felhE4WG4ussd=_>5?N1TyFkSVdBO{8H;Z1z*!5{2xTkMCTK%s85ufjgMYvk z5-d#r`EaX_ebg%z*QRILCF0#4xFX;RA&1kLNr)G#rE5Qwr~ke;{AZ;!21>e%>+6-3 zmE{KCczsDJR{!sH@^#pvSfeAh5-xi;&N!y?Z`lF)yi+cnlcx@10XaUy#x7QFecBV& z2w4_jA?67b){`|425zZ{_D*%oP2RIPxQ1A(FZ z5&@gIy7N$_qAe5~Ia}S$P-rN>$ln}pZ(BQ8UOrM0uR%eBg1UmTA*c)35TN0CsEf$r zoFD|r0p*WwS^YLFlwagU$KJm$-~ToXUjpP7b>3Wz5`c*RtGO@o88uvFFn=Xj^=3Kp zd=wj$Ut};BT$60AS+bNvk-wl^`PJg@p1Ts~14jb8xV~Nyk@vu&QH_jFmYk zzffQVWI#Du;CBWy3*{FIY;bDp2)*k?+`^W5D8Eo(p69F;?BvP~lwZi#Fc#(YD|b+S zp}-{n3l5he=Y@D;@%QKdmG&@E3JiAj%!y?wnI%8=pw#slq_{ z1qRF6^;hAb{DQxRiCWFU$Nhzc@(ToZWov5@aE|C6W`+t6)kv^@xAhKy z_Vl|OsH7VSW`V2j#Jd@&v>FL^omf*NU%(7h+KmKLGQ2~|KxL%^U^~5y28cV}{GEZy zS_i-^w|oqW1}dW+1hcLW;Hbw8l*wc=nM@|r9QQwA(L|7mZ>v=R00002ZZ?557ZBkZhuipL_t(|obBArYaI6-$MMhiH>nAHK=t% z96}$UaV||DrH9Z$(@W@~w1>9P&_bWUw9wK+2uX;O{~^S*w%c8ZZRxL?$b( zWH)wGsE8hBe%~I#*p9RhGqdxXr~SPzhSko@*LpEKv$L}TbbmUXPNyqKcWk?s_6)kg ziGvS(y2FpGTdm)(Tc;jOV<6q|=->mry1fjdKLUURt^?xljg4#XCO?|4Ux&aLpiRrU z0Pu|en1;(vhrj?}-Ey84;4=pw*Kq0A7i`nApJdSY1}&uF(yK36w_%?$n0_~EVGWmj zeZk(qxl+5{eSd`rVfe!$2MZ?`|Bv`l6m^1ju^GOUd zC=GY7KqnJDtMwd!6N+aUnT87r)@c0*jBltOCTNok7YMA|a2_?7f2ewxuuURdAh27_ z=7PI#{C`FDFj1Q%xIkbGP_N#4kqA}Q1C7%pzy-d7u~BdRln4*2944-OIBVnDzX;&8 z=ZUkxV713gr$iELdBBeyeJjw30yA5PUfg zaG}5$=SsbL_f;ZHsTwHF@&Fh5ljNS|{088Tiea)+mf^yKHSDJl{RY!ql|{JFU|UPA zFG-1Csu(7#WeF}c*jlqWJ?)k*a6C7d=Bg~fMYge}ieRQUMnkY~6CcCcrLX|n&_kN@m5v_Slm&Up0MA=Eh)_?qbWq+z>N+HdX%O-&;M5uYhvxfZaUjbp> z{}*>AsK|R<>SuXZS69pR?d_SJ9hjamWg5gL6Pr@P6krpe3KL8Lnk(SdmC$ghgN4c8 zYl+>8Ay8va%pTrrX@-GX&fanahRf4`DsX)E?9?Z>Z&wcPwP32Sgh|9E6HI{SVt@M5 zeO!%%Dwh#VbBEYV$u9oL+ z@76p+&H~0vW{;D^u4HFxEge_a{tSo1Xl!T4#0HU^A0Tl)ZM2h zHB*on=SrV6ZyfudTdw$T2bkCtB!5f^t`zR=KnSS2i>RIn7=Csqm}i)TNz7&r&+eiX z0qX9eQMbu}v0*ujo`G7)<(d?z3JH@1sw7b(LX8`@0RMP1N<(dKO2NR-`tDC}Kc+87VYFEW@1?i~7~_kX(2B6cO{ zZNn9RZERitcbuz^1a@_GwM_s0vC2rU)EWIZ3Mw9kKAxcR}YG-e15_RR-6 z%hGkTeQhr0vH;~58f@QlJAYaF07+$8g7OOuW&mv!gJh{JLivRPV}P~*r>NIAvJB-H z3hd*h<^ zH`AUcN`b+;jm8|9zMyg#RTTlsFEE&pM^5K$=PDAEUtlmMwDaOsM1Ls1;ComOj$cKF z@(Tp^{)x_UhP#+mu1SFM3j|i3a@)w@?lnnJeu2Q4xJ?=InnWnSKwv_MHgoz{5Phhr zJ@3-|ghBa@1Y2u1r{Q8biD3q%q3$&j?5JlrGNo^HXsE-D1e2Wn>AZ#-T!3SkXeage zuQb%?hJw9;b0wBtn|~DVU<@#r-YM;SuWP8`4Fz)=AFU8mS=GkxLb)0$XhXqDjJApw zLmz6d>|R{CabrutCJNh7Fb|?5Vmy9nsPP*J#sF;sP8=K2Q1LYoY_o1Jjr%=f4HbU_ z!3?17MO>+dQrAE*7otNUk6#)}eS?o-#HWJ3{nAj$)feo;lXNTd0x(A{tf7*xFWB@E zv@zrxdp^`u*}ZsDLnT`Omqa!?{jMKssPyX##^BH0A*G?R(;=`swq4uV#YsRzWwAqG z+k3`o0jZ(#Qnz7$d9B%8NP7;QPN&o9bUIy%{U007a`=RbvCjYi002ovPDHLkV1iA7 BnwS6p diff --git a/src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png b/src/main/res/drawable-xxhdpi/ic_send_voice_dnd.png index a5151331ca736f9caf0f63d2361bdfac1b8226fd..4a5b41040e42f41801189767953884ee495912e0 100644 GIT binary patch delta 2114 zcmV-I2)*~{5SS5=ZGQ+ANkl)gHf*niL0oqySDKnNj(5JCtcgb+dq zA;evW>Ro^-b3HxL?#`B-5v4jbp$z~OW7*dF=HLIdI^Q!l_jbK&G$HhX6^0KU&{`b^ z(Ov?-Z?iTGS_kuMO6d#n%pd<8bd4s3Hn6q9O;^{X~N zg)*?*a9^5Oe}4ghRmHZrlAh|JqA1E`xquPd|-1u zJy9_2^?Mve*vrXeli%ZPRl^6?-Py9U+zf_E3^cE|TRZ(8XR8`Mu!vF}L5;Oe6xdj` zYWTpIb$d`_Spkk!tA-B@q|w$* z39N);*MGZ$$|SImk-$Pm0xMyWBNrXQED5ZHQ||&ikibGl0xKa?Q^Gh2tQ0}^FkzMi z7BUi8i4aUBN?>6lft83ja#=47lfX*Jjk7RK0(+0fzfP3ELPi1$nTTHS@qIxCEa_Uwtx7ka@z^`d3dfoZU7U=}%XFa6k#bIVLcm07HBdTFPW zdtjQ?x|xbL8QZUpNwfP8Pqf2JKdqd&%7AP5CJ;E^oSCV3hz0;?bh-CMH;fdu3Eu)^ zMSlx!+coeZFa1z9YlHEcnX1Zjm@X5bJ=H|&UbpSqqU&a=`d_{U);czIlU();McVVK z0A%q6GgY~WSf0mVU4BIa2G-hMy6D?s+`mI2z)WyifQ#;3I@<5)E2@d#PG1J&byKx% zVzzDc;u~HXE*s8%ZgE}4aa6kBNd&Q5qZPz;D z>-pB#z*CNBNnYy0Jq{s)P1Uw_#K zO#giU_#dtrDXt9Pr=|$F=vsgk`E)h?wPvQzFsakn+Tqc*h{xN_cU9L@r9dX>mIn_#secG%*K%UeVj^aLmCntqRNHrc;Lv_jbQs`$3~V~x zb^FGfW{K4KMCRhF)sC?+@=!eCw0sNT^6PjIy`0EQ{;1l%tL59|Zz-$Ec^K!2FQ-1)v9)*ffr)xR))+*2^&hgR783N9`w_+mjsr+E-@iQk* z7+*5B5(d=D;Gq+Q%3*;y+dh8jPXUz%pbqQY&h_*}@81#s3K1%-=2MKrY;K;FCFdgux$Nx*MH08cf2#>|J>ge z3Zs7g|CG6&p6G|W;v*XLsF%ew8MK&i*1tj7%Yi)&-%z)eq*q2#-K^=$%xLxaksDC_ zLOgQof~mji`EJ`+Yj)<% zYVX?^pxj9R9>qFE8h?EZ_VlU(Q2(%i23V`Ta5Q-j+t!x=bXNOWW~>nCF9dxRgat+V zy4@68EjUXn01&sf#q4z_7Nue*7+tJrH)}jV1lM;m%D4`PzZ=x~w4AyJ1_1wl_~F); zX8Vg?PWE-d{Kkrof3Gu}&DXn>h6oI}eL1~6eCXpA<2Zcy4}TD~pxaLb&c(*2e(m*r z55F}`U>law{kxUYr--<_o^=rTT9NSM_RREK^{nGg4Hp=2dv7ZYrv?f1scJ4rOdvvz z9eyT0F+I^JdsV513~a-EI^De8Dx?8*%*#F7RxoH$L%-M-y)_Z^&2TjuI6G8|fgb+dqA;jI|KYP8JMKf^1hX4Qo07*qoM6N<$f;~D5?f?J) delta 2066 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 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_cancel_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_cancel_dnd.png index 02ab1d0fbfc0707335625080bba510c83a889d80..307ca8a0fe5261265fce5c537d842b6f3c2921d3 100644 GIT binary patch delta 3788 zcmZ{n^;^^58^+lfA;^c(O2`-rN=mCp3^qWzq>)q_lpOgUQUmD*i8(+(VsyzUK@=Gw zqogdPOInF9{sG_nw{u_TT<2WR^_+9R&M;5rwPa5q?Ew;DjLzH0_i*Q)^ow5bamq?> z`IMBJ$#aJ{K_sTU(l`U@^H?((k&;Pnk#KD>V8N{v4(NWBrdpNNNZ)e`H@jqyL##E# zey2b&6<3ddbzQHdYdknhc1g+PzANFVUT5E3Z4e`%Di-j-HDIaZ)Ie0T4&Nf>B!Ijvk8{WZav3!zRZZ zRODO<#Necg`(BrA3xkG*^Y1NqhwOE#mE=w4(d` zH3Z6nK{||k?i%IfIf#!+Wh0NCXmU2cqm?jl>fXP7bYo@*^2(Dcop;brcz_7?tmV;y zMz$!&=s6`NoDceogq6vINSm8;kdkZArx6=w+VHQBDbA-QCC}<88hG@o$O)L=5v`u# zA-Y{jQ;9dUX&>p98lKlZao)pkn7Q&DfWOa^a_}=DO1MqXmA_~btk||8{e9>AQxYKB z#2ASg-0X0R`LR5l>fFea!~ik8zGM9BXvGfHuz{{diBR=+TbYK3m?1rzd9=8p-=7N~ zl{Tf+KA5Q$5%dQO&HF5w=qw>XQcVuAEUbfWzhgG|fBa~2FxPg6?0Nk?lrPL}Kf$oK z9=WW5VRfYmZ{HJ-3WF)DkRY6ss>NL(u&CoP6$*ypIMJQ?FeSdxXB*p7 zFfZym&QTHI$$Wy)eDI;aUhw_UwAn%&<~Jo#o;!syekL|BAC3|3Vzf|u52zJAvP2PW z?ew-Xk@uhQeRWQWiF@08h$Q+KgLAJfPb*hl)9qye7e9{>|4HLBXCTIvgZV}MM{!wW zl>l*1bR}^yr0T%Yj-FmyF+~L1SSoVEC#Oi+lj5 zQp1HWWI4-1;4zru zi`shuYjuS~h>4wMp`{BkeTvuO`9os)&mFP2G z)n6Os$ikL{I{OajpbCd*PhQ=!QG-aoeH&nuPS_BR1xht5kqyt$Z>FFr7_Q%^3Y`u; zSxlhV52e~iqjdO9xUfWJ>?*Vn&IFqx)xj zJB5$l$D{v-7kdeP?#Z2!?v&$bNf4^R7z+6X=<_z#wA)s*2}kYMJ#RI^i&a{4gcn-F z01&as#fYWbY6Rxm*gs|TXc3?@-lgbTudZ5)>zXWLAAXn@m6^I_`J#iW z_^aCPYM4jc_58Ek{oD`wBz}^P4QOOhJ`rPVHN8GLk%ghfPS_hMAB>svlvXVQH>2cR zfKGz@cP(Y3(-|e_wOx=_%?&&?Gb2T^*~>z7|722J2ZX$i-23DsiWJ3Dv*=}{3ju>k z`JJo+(%w*~_+`4aAn|Nd22U)3?<9u_WW_p z^@XPDh(fz7Vg9&3+(sOTdlmf+jaT^IaX|Up+Q0N-M?RYqUsv^Eu}h$`0;*!zz5-q@ z(${3z#Z4ktBe-#=mXdF;JK>dsJ~9D*jRLxOI<2Ny-Z7fp$b)$t!a9oWix~pjeRZ$U z6uD>1fY>;l4q{KHwgw2YwLLiW8|gS~I&OXXeMLBi{*i}0@@vFsM$N362PD(g z-zbD`jHRO9+^tlrTw)o=&?;p4D$e(q0bn{lk1C`>sZ<;~tSKyR`6@v+^OER=MSLw4 zeqmjdqU_$ELN>$~i`XD-r!V7M7iSI2f7cJsyzQNK8&Kn^d8NwxG9roo@gD_(EPJ-J zU)l(nq(+Xx-dD052Ism7S)S@1zscSzz^ZfkEz??B&IYtw1hS9(%XEmu;dh3b!u5Zzoxq0oAB2X*jTg@`gjMI}N2@ zy2|*y$Rz#8{hx>3$k{!PGJ)Lb$;oo=rD1IvKT+Dmj~~;*bFYJ&_nk`$8CHwb+KPeJ z72)IVJV7Qi7rBF0mVe=uSkXxhOGQB0Xojiwnaq@V-u=juW+DkIwCaLv2>ab;o^l5b zETr|dHRCQ*ewKTS96aj%;6fKp7ZG=pRY8FhvWCuBzx}9$g@c_!J%KP*-a^APIz&m4 zyQ!yhB*BmSmNi8GZB3+4aFWdc5a~5~%*HegO`;WV%10kFuyhQD%FTZpdmS?VK?cPt zykl&RK+5(~QbdLgq>DR%2e`SE)VJ$y0Wx*PHHrHn1&^cr$W*)MQG8xcVup_t+m6o9 zF4xr%whlB==M2h4VWucY6;mO-oBe^bJB7ni<<^Ha7cV7J+}94Zx8M(4PO_2wHJV-| zblg1)qFR^Skn5%utmAh$cmMoqXGe_Q^HUmJ?u48+#b;|5#&^p5`jnGnge0iPE=}%y zdGHc?nJQ57!>g5nFjbiR$>(~e&Iv&)jz9;}hbekH^nWO2a80WJnZfEasA>dXvOV=l z2gT)gfHVK*ml(Cuvc=l~>=mRypT0+O@zT|+^czhMWm3%lfaR9$&3~aEjW1lebC$X_ z6Ws{?lT2#N=e?`)+kR^8x(EuERhJRJ(_FoH0Ty??d&gJE0S+_&&1Gw65{l0im#qse zu#SUXe@B+n@2q&S7{=QZxvqlf@dHVI?b|(Gcr)?3yQ4V{KZc#^*jnC4WuKhX)O0p zVqTccYE+Sej7{(Q=Dd#PM;mC_65-q|COtJd$w@DsYPEX%g$xMPwWmOAF5yc`c5b|? zPJ}1hqkwN)cwI{^hZ^l?!xNU}V?e^u!jD+CNNstsjydn&4NJAY0<~hWudeDUsPk3~ zmwUe(`7g2#zgU?J&w{spX-{}`@ZzZv^RU8Y zR>Rx5`Ff{jDlO5jsZ;c213k*a(UN(?v9`nwvmPYOD-(78!EsF|`vTbC{KH8)poO=K zr^!Jg7Rs@_y)sz4h+MlbWeLy7(p-KMwQq zB(8n;4F5^{#J%5$9(;?LyW$Rds29ujl1#+Bsp(XDsLi2-sPd<4VN)LP*VclLQVhG9 z5~qU3)?2s(s~qL8vq;Bd*rjR#A1Ak_l7_1915Zkx(!@5(e#hBf<0OQi9IKSCxL-*K zZF127iAG;g{Bdl+guL#eKX?v&>=Ehvv?BZgNZjpf7KzLe_StX75?J>EhY&}$!ENmA zgwn-h>PNa$Q3=N`P7Ojj)bQX6UJ{Kxk=$Pp48t?qBt^sqF^EPG zW^wBw@d6_9CC^W@2w9FTy}NaeX+VCfr@w#CQJb(!qb(ZR;d3{xrO~gtaOHy`6&U!H z=p<#4vqvEz>UzK4{HTkC(4WfQXpBA>-^xmJz(Eg<^kfAh6s7)hdc}WznegG|%SkVf zz+C@0P>c~a-g|mk3Si9il?wjnJldjU(b4*144d;*6 zWq(f29>vX4FNn-s`bJr!4&BOB7gvGjCd;X{EwQSO#4Bl3iF^x2X#J@pB!ZTCOQTMl zaAzjr1(y$`F*ql^zgL-}5TmV@GCR97O7VPJ^Or zz!P1LD*jx}z}m@i9YQjghJW zKz^R7RhHt!XvZ)dNxO-X=U~sP;Kg*qH6t7ClBG(8;UBSf#$R7(4$U{ke-4^SnAP8c zj`5l8KHoq=N1SHfzV^y5JQ*N5?3r|zuY5B`wlNcaU|4)sPr}h+;+>fT%ZX|B?eWP5 zl*5KAcc_z6BKLLjiN2;80I}U%Gp!gfSfp-ct;%7@O6!@Z|2shr{_?GH10tGHVyDS{ z`dBBOfj+`UICLvXUajb5_%>I{*@aB;{^4v?z`GB6jj8>`P zpDK^#-XN9(E4X34c@Uakw)6E|y3;K<;pq~KNB)uPh)+oY>W|Jh0Od_ck1XJBPaU{O zo7W2dtxha)zub)Ok4ZydKX*>V0s~MFKxnr4L9xCF3ALZMcNfKsqkX z+t`E`!C4_8w_pg!T{Ys!0%E&I{U-HRszO2m7LUPEc4Q5VE>=f%6r$*Qw= zIz@6^j`!{+*~Re!R2o!?blV&WAz9|v8xUoXv@h>9m|R61F^{D$K`rADQs8l$I=c=4 z(Z*O44O0D5?C6E@wD##ha6%BXgdVH3ELkb|C+a-q!Su@{d-$+!@xIn2qmbScOryeI zLso7UhGCZH-~Cng>NmZ7@>F&JjQcKp`Rzm(@fhCg07!WH4d)0QscQ;2Jl0EeGe!Fy z?}_!0>LpB*Gvi1v?$Grk6$75sgXEm}0=Wsr8tmmwxAKc4#ldh`^!{D#>_(5+e~xc- zu5H_YMB0(0H%70wMI0=Zh|<4bw#N*;O`&fFH$p0_jO z6z5K^fDdzvoz}X32l04{=uUR=062Vx@%?1|X=gzI0xrAK5FIu!7P#imxw!j|xrA0i zX7^-EH$(+rf4zm3D2K&YH$Ebrjs|RPQEw{Og`H=06>#L^(Yo;t>gWg5risWP_jz3f z>6$PfINTuhFdBY9}u;H>Xu19`le?qk4*CufTv?0vuP zkoy!(X_ro-`ZH5}9}k!b?&CFRh9m922hVTbq?eC7a~~#lN&Tfy=f2*Md2Ki5s10zz zm&6Yzoih;z40*tm%`M&>DXxO3t>rsvX(3-TP*t>%GeHyHWfF4eRov~(aYwQ#X`8IL zu|?sOaLd>*zc*nv3!8k1IO)&7g&zHkb1VGu%&vFKg^NTlxEA@EG%r1xepnswOXQZJ zci3MjxUbH1iyEXF_Eh96(#;vX(+IGjc3!V*wTbLijh=tZy~-b0Q~%-34od&|fX%w2 zcRiJ!8br2P?SGbQCmconXe^d>PFj;>V`FG~D7Jq^p|O1kbQ|_F(b;(~(0s-ag5Z?P z^;CXuFOPGOcArat?IK|U882uI^G$`P&rZV+r)Z3hW7gSz@6YOdNQ}#c@&JE?ca_|< zE!AyM>>xClk;N(Xz_B|`8*P0S^Wc~S&;+wC`_Rmj#@|OOMDp<%3t=H@nuBi&Q z(RZ^G5P27OYGeuHOq;;M&JQ!)-4d#iA4MiiwH|8xB(^i{5QMM0L#3m5Dy<)OunMe% z+~cs`gT2|u1}gseW?^1QQ#-MQhImq4&*CW~|Kq4W9~+TUlUYQm#+nepv3zG*jO%Q( z)MNy}<5{^N71)?vv<23L0g&l?JY`9p3WEiZ)M?)!L{^moQDrqSfhR;`FfO6lGHkFI z$6zIE?S#q^RFXXG6+>)`m;K*#TBFGrQjlsXb}4hKDc0K-{-pO&43#Bi!;MHD&*6QPK#Yh_75BB0kMrP>+nw8NgT8w;lp>r6@-Vf1eR6c1-ZO>RPPl`se-mrJ0 z0%lgb=C~0w4A4beix+?)Z|`Hqd-oc=0(d4YdxpN@qv(g1{BZd(k##CA+bPLA9T|wr zkxCzt(x=W~O3|@$a>C0`M~k1>YNfcF7IoVX@;z-S{=UlBE0F%t+AV1G>v^&np}OZo zOz7VLx&tkUck~gCh-YuI&(IK<3mdFr101~(KQ4WETktnk-y9jd9lFcJof5uMq-=vc zbTjJO2)%uXnTph|-4M0ZHw~Bz6If5w3#oxa0ihF>0z_=LgW|swaUDKUH#Z>4%W0ZK zvF-W|UiF#Xg7H**zfN$lScwSd8cXF@a+(-08;&``Nk9tOdu+`*~fGS1mEi3#FSQBsI@q|mJUvtt8da6ypPww zXe;bRil#I7rHAXp#~#o%xB{-tgXY=hMNP^>XB~2zFHWyoKq7BjdWIh`u)K0gke=1? zOFOwIuJGI6Pz;3!sPeLO0f2q*`I%6fkHG0X36WL8!2{BwE|gxpOK2`j=N3O)2@^bv z+aTM!xQOq&a`x6;-mwWb3s4Y^7!DAWC7>6VW~6V-ODdLof#>c70FU5FyXoxGC}u>c zQg7j=W5>ut*X#!&OtI|SKDC-6I~8`PMy%Z55uD(SzJazrNA9TK5lMwMe4#d=F7YsT z;orSkb?AK|dv67&5HiD<^&^R{$00k6Zi(u3UaQS&f1PkXEACWWS4Qp=s%=ugUQE4r zr;-%CDj{+88cMBV2e?ou=5m6`~oXzvB-77Wt^YFsBYLzYv469GJ*N=t?GM{WcJ1ca& zMiadA--WT0f~d<3bAHk-556UNoh$70d)+_hR@YfF*OdkwC=ueV)z@-jc41D@&4O2{ ze`aHUW>h$wp${3KUh;?EygEyK`ahu3DcFkpWKIhMSu2Wp*FQKnNS(rtCYGvpr_f(a zYDbsVnBRhdbkh>)ZUi5Sj$9?6Y@8Q_(XC5TuFqyh-gPvFhX)AI)Gr&*8Ghcmr}?2w zu4D+{^)sE1GbJMfwNlEoS(Jw+F>~mgY1o@_qTxZCDeFqv9e2O#Yt5+!6)w^uE@@MG zIF93~DHyb~YSM%}HMgM9Y7ShT68K3+t>`9NJV-a@7=P3$cFpUZ#`a60 zmfyxTG5Y^)5-U)2lh3rOV^q~zHl%pN9A}cnFlK11BNe-BhuQWc$_Bf3K zU diff --git a/src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_location_dnd.png index 08e2b39bd187449bf7f73b559f9defc94418e8c3..e7f6fde74b8264ef77012cdc28a2e173771fe43c 100644 GIT binary patch delta 3438 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 delta 3380 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 diff --git a/src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png b/src/main/res/drawable-xxxhdpi/ic_send_text_dnd.png index 929a33a474c09e4b1b9521a0f051abfdd79d51b0..b11cd6b62080446ee18d434ef7b8f1e52ef1f84f 100644 GIT binary patch delta 2508 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 delta 2513 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 ZehW{Ghx+BGoq~dP!q(csieh;=?qBbcE&u=k delta 2708 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 #ff323232 #1f000000 - #ffe51c23 + #fff44336 #ffff9800 #ff259b24 From 33d1621e3b2c9a34689dfddc71eeb9ee4d91c348 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 10 May 2015 11:56:23 +0200 Subject: [PATCH 26/58] added white heart to new rendering as well --- src/main/java/eu/siacs/conversations/entities/Message.java | 4 +++- src/main/java/eu/siacs/conversations/utils/UIHelper.java | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 95e27c79b..4dac0b98b 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -479,7 +479,9 @@ public class Message extends AbstractEntity { public boolean bodyIsHeart() { return body != null && - (body.trim().equals(UIHelper.BLACK_HEART_SUIT) || body.trim().equals(UIHelper.HEAVY_BLACK_HEART_SUIT)); + (body.trim().equals(UIHelper.BLACK_HEART_SUIT) + || body.trim().equals(UIHelper.HEAVY_BLACK_HEART_SUIT) + || body.trim().equals(UIHelper.WHITE_HEART_SUIT)); } public ImageParams getImageParams() { diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index 493547536..2cfd58235 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -20,6 +20,7 @@ public class UIHelper { public static String BLACK_HEART_SUIT = "\u2665"; public static String HEAVY_BLACK_HEART_SUIT = "\u2764"; + public static String WHITE_HEART_SUIT = "\u2661"; private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL; From 239e86a98a4af8ab7ce7f6b96bed0bb4dc9e4bb5 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 10 May 2015 12:04:11 +0200 Subject: [PATCH 27/58] optimized heart render code a bit --- .../java/eu/siacs/conversations/entities/Message.java | 5 +---- .../java/eu/siacs/conversations/utils/UIHelper.java | 10 +++++++--- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 4dac0b98b..c87e5518f 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -478,10 +478,7 @@ public class Message extends AbstractEntity { } public boolean bodyIsHeart() { - return body != null && - (body.trim().equals(UIHelper.BLACK_HEART_SUIT) - || body.trim().equals(UIHelper.HEAVY_BLACK_HEART_SUIT) - || body.trim().equals(UIHelper.WHITE_HEART_SUIT)); + return body != null && UIHelper.HEARTS.contains(body.trim()); } public ImageParams getImageParams() { diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index 2cfd58235..9c62dcbfb 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -1,6 +1,8 @@ package eu.siacs.conversations.utils; import java.net.URLConnection; +import java.util.ArrayList; +import java.util.Arrays; import java.util.Calendar; import java.util.Date; @@ -18,9 +20,11 @@ import android.util.Pair; public class UIHelper { - public static String BLACK_HEART_SUIT = "\u2665"; - public static String HEAVY_BLACK_HEART_SUIT = "\u2764"; - public static String WHITE_HEART_SUIT = "\u2661"; + private static String BLACK_HEART_SUIT = "\u2665"; + private static String HEAVY_BLACK_HEART_SUIT = "\u2764"; + private static String WHITE_HEART_SUIT = "\u2661"; + + public static final ArrayList HEARTS = new ArrayList<>(Arrays.asList(BLACK_HEART_SUIT,HEAVY_BLACK_HEART_SUIT,WHITE_HEART_SUIT)); private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL; From 22b12091a103a164a1d54874ad376d02dfee1519 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 11 May 2015 07:57:52 +0200 Subject: [PATCH 28/58] rewrote parts of message adapter to avoid using NULL views --- .../conversations/entities/Conversation.java | 6 +++ .../ui/ConversationFragment.java | 48 +++++++++++-------- .../ui/adapter/MessageAdapter.java | 41 +++------------- src/main/res/layout/message_null.xml | 7 --- 4 files changed, 41 insertions(+), 61 deletions(-) delete mode 100644 src/main/res/layout/message_null.xml diff --git a/src/main/java/eu/siacs/conversations/entities/Conversation.java b/src/main/java/eu/siacs/conversations/entities/Conversation.java index bfee50075..95a8c957d 100644 --- a/src/main/java/eu/siacs/conversations/entities/Conversation.java +++ b/src/main/java/eu/siacs/conversations/entities/Conversation.java @@ -16,6 +16,7 @@ import java.security.interfaces.DSAPublicKey; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; +import java.util.Iterator; import java.util.List; import eu.siacs.conversations.Config; @@ -218,6 +219,11 @@ public class Conversation extends AbstractEntity implements Blockable { messages.clear(); messages.addAll(this.messages); } + for(Iterator iterator = messages.iterator(); iterator.hasNext();) { + if (iterator.next().wasMergedIntoPrevious()) { + iterator.remove(); + } + } } @Override diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index 6b11d3109..b6a7dc767 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -117,6 +117,27 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } + private int getIndexOf(String uuid, List messages) { + if (uuid == null) { + return 0; + } + for(int i = 0; i < messages.size(); ++i) { + if (uuid.equals(messages.get(i).getUuid())) { + return i; + } else { + Message next = messages.get(i); + while(next != null && next.wasMergedIntoPrevious()) { + if (uuid.equals(next.getUuid())) { + return i; + } + next = next.next(); + } + + } + } + return 0; + } + @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { @@ -126,7 +147,7 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa messagesLoaded = false; activity.xmppConnectionService.loadMoreMessages(conversation, timestamp, new XmppConnectionService.OnMoreMessagesLoaded() { @Override - public void onMoreMessagesLoaded(final int count, Conversation conversation) { + public void onMoreMessagesLoaded(final int c, Conversation conversation) { if (ConversationFragment.this.conversation != conversation) { return; } @@ -134,29 +155,18 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa @Override public void run() { final int oldPosition = messagesView.getFirstVisiblePosition(); + Message message = messageList.get(oldPosition); + String uuid = message != null ? message.getUuid() : null; View v = messagesView.getChildAt(0); final int pxOffset = (v == null) ? 0 : v.getTop(); ConversationFragment.this.conversation.populateWithMessages(ConversationFragment.this.messageList); updateStatusMessages(); messageListAdapter.notifyDataSetChanged(); - if (count != 0) { - final int newPosition = oldPosition + count; - int offset = 0; - try { - Message tmpMessage = messageList.get(newPosition); - - while (tmpMessage.wasMergedIntoPrevious()) { - offset++; - tmpMessage = tmpMessage.prev(); - } - } catch (final IndexOutOfBoundsException ignored) { - - } - messagesView.setSelectionFromTop(newPosition - offset, pxOffset); - messagesLoaded = true; - if (messageLoaderToast != null) { - messageLoaderToast.cancel(); - } + int pos = getIndexOf(uuid,messageList); + messagesView.setSelectionFromTop(pos, pxOffset); + messagesLoaded = true; + if (messageLoaderToast != null) { + messageLoaderToast.cancel(); } } }); diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 89618dfc6..b23709fc3 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -12,7 +12,6 @@ import android.text.style.ForegroundColorSpan; import android.text.style.RelativeSizeSpan; import android.text.style.StyleSpan; import android.util.DisplayMetrics; -import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnLongClickListener; @@ -26,7 +25,6 @@ import android.widget.Toast; import java.util.List; -import eu.siacs.conversations.Config; import eu.siacs.conversations.R; import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Contact; @@ -44,7 +42,6 @@ public class MessageAdapter extends ArrayAdapter { private static final int SENT = 0; private static final int RECEIVED = 1; private static final int STATUS = 2; - private static final int NULL = 3; private ConversationActivity activity; @@ -79,14 +76,12 @@ public class MessageAdapter extends ArrayAdapter { @Override public int getViewTypeCount() { - return 4; + return 3; } @Override public int getItemViewType(int position) { - if (getItem(position).wasMergedIntoPrevious()) { - return NULL; - } else if (getItem(position).getType() == Message.TYPE_STATUS) { + if (getItem(position).getType() == Message.TYPE_STATUS) { return STATUS; } else if (getItem(position).getStatus() <= Message.STATUS_RECEIVED) { return RECEIVED; @@ -222,8 +217,8 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.image.setVisibility(View.GONE); viewHolder.messageBody.setVisibility(View.VISIBLE); Spannable span = new SpannableString(body); - span.setSpan(new RelativeSizeSpan(4.0f),0,body.length(),Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); - span.setSpan(new ForegroundColorSpan(activity.getWarningTextColor()),0,body.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + span.setSpan(new RelativeSizeSpan(4.0f), 0, body.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); + span.setSpan(new ForegroundColorSpan(activity.getWarningTextColor()), 0, body.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); viewHolder.messageBody.setText(span); } @@ -235,8 +230,7 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.messageBody.setVisibility(View.VISIBLE); if (message.getBody() != null) { final String nick = UIHelper.getMessageDisplayName(message); - final String formattedBody = message.getMergedBody().replaceAll("^" + Message.ME_COMMAND, - nick + " "); + final String formattedBody = message.getMergedBody().replaceAll("^" + Message.ME_COMMAND,nick + " "); if (message.getType() != Message.TYPE_PRIVATE) { if (message.hasMeCommand()) { final Spannable span = new SpannableString(formattedBody); @@ -244,7 +238,7 @@ public class MessageAdapter extends ArrayAdapter { Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); viewHolder.messageBody.setText(span); } else { - viewHolder.messageBody.setText(message.getMergedBody()); + viewHolder.messageBody.setText(formattedBody); } } else { String privateMarker; @@ -373,10 +367,6 @@ public class MessageAdapter extends ArrayAdapter { if (view == null) { viewHolder = new ViewHolder(); switch (type) { - case NULL: - view = activity.getLayoutInflater().inflate( - R.layout.message_null, parent, false); - break; case SENT: view = activity.getLayoutInflater().inflate( R.layout.message_sent, parent, false); @@ -443,25 +433,6 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.status_message.setText(message.getBody()); } return view; - } else if (type == NULL) { - if (viewHolder.message_box != null) { - Log.e(Config.LOGTAG, "detected type=NULL but with wrong cached view"); - view = activity.getLayoutInflater().inflate(R.layout.message_null, parent, false); - view.setTag(new ViewHolder()); - } - if (position == getCount() - 1) { - view.getLayoutParams().height = 1; - } else { - view.getLayoutParams().height = 0; - - } - view.setLayoutParams(view.getLayoutParams()); - return view; - } else if (message.wasMergedIntoPrevious()) { - Log.e(Config.LOGTAG,"detected wasMergedIntoPrevious with wrong type"); - return view; - } else if (viewHolder.messageBody == null || viewHolder.image == null) { - return view; //avoiding weird platform bugs } else if (type == RECEIVED) { Contact contact = message.getContact(); if (contact != null) { diff --git a/src/main/res/layout/message_null.xml b/src/main/res/layout/message_null.xml deleted file mode 100644 index 0e0f1c924..000000000 --- a/src/main/res/layout/message_null.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file From 21deda7b0029b729c94af9f1551278859b78f119 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 11 May 2015 08:45:38 +0200 Subject: [PATCH 29/58] no font padding on red hearts --- .../eu/siacs/conversations/ui/adapter/MessageAdapter.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index b23709fc3..060bef71c 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -210,12 +210,13 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.messageBody.setTextIsSelectable(false); } - private void displayHeartMesage(final ViewHolder viewHolder, final String body) { + private void displayHeartMessage(final ViewHolder viewHolder, final String body) { if (viewHolder.download_button != null) { viewHolder.download_button.setVisibility(View.GONE); } viewHolder.image.setVisibility(View.GONE); viewHolder.messageBody.setVisibility(View.VISIBLE); + viewHolder.messageBody.setIncludeFontPadding(false); Spannable span = new SpannableString(body); span.setSpan(new RelativeSizeSpan(4.0f), 0, body.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); span.setSpan(new ForegroundColorSpan(activity.getWarningTextColor()), 0, body.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); @@ -228,6 +229,7 @@ public class MessageAdapter extends ArrayAdapter { } viewHolder.image.setVisibility(View.GONE); viewHolder.messageBody.setVisibility(View.VISIBLE); + viewHolder.messageBody.setIncludeFontPadding(true); if (message.getBody() != null) { final String nick = UIHelper.getMessageDisplayName(message); final String formattedBody = message.getMergedBody().replaceAll("^" + Message.ME_COMMAND,nick + " "); @@ -514,7 +516,7 @@ public class MessageAdapter extends ArrayAdapter { displayLocationMessage(viewHolder,message); } else { if (message.bodyIsHeart()) { - displayHeartMesage(viewHolder," "+message.getBody().trim()+" "); + displayHeartMessage(viewHolder, message.getBody().trim()); } else { displayTextMessage(viewHolder, message); } From 53e43daa0d8143d9a5abcd1391153b88a4702914 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 11 May 2015 09:08:56 +0200 Subject: [PATCH 30/58] add a little bit of space between merged messages. --- .../java/eu/siacs/conversations/entities/Message.java | 2 +- .../eu/siacs/conversations/ui/adapter/MessageAdapter.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index c87e5518f..3c144f5cf 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -396,7 +396,7 @@ public class Message extends AbstractEntity { public String getMergedBody() { final Message next = this.next(); if (this.mergeable(next)) { - return getBody().trim() + '\n' + next.getMergedBody(); + return getBody().trim() + "\n\n" + next.getMergedBody(); } return getBody().trim(); } diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 060bef71c..0730f0e11 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -232,7 +232,13 @@ public class MessageAdapter extends ArrayAdapter { viewHolder.messageBody.setIncludeFontPadding(true); if (message.getBody() != null) { final String nick = UIHelper.getMessageDisplayName(message); - final String formattedBody = message.getMergedBody().replaceAll("^" + Message.ME_COMMAND,nick + " "); + final String body = message.getMergedBody().replaceAll("^" + Message.ME_COMMAND,nick + " "); + final SpannableString formattedBody = new SpannableString(body); + int i = body.indexOf("\n\n"); + while(i >= 0) { + formattedBody.setSpan(new RelativeSizeSpan(0.2f),i,i+2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + i = body.indexOf("\n\n",i+2); + } if (message.getType() != Message.TYPE_PRIVATE) { if (message.hasMeCommand()) { final Spannable span = new SpannableString(formattedBody); From 9156665addb5541cacf640f033f03cec0937f052 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 11 May 2015 09:20:08 +0200 Subject: [PATCH 31/58] increased space between merged messages a bit --- .../java/eu/siacs/conversations/ui/adapter/MessageAdapter.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index 0730f0e11..ec351622c 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -236,7 +236,7 @@ public class MessageAdapter extends ArrayAdapter { final SpannableString formattedBody = new SpannableString(body); int i = body.indexOf("\n\n"); while(i >= 0) { - formattedBody.setSpan(new RelativeSizeSpan(0.2f),i,i+2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + formattedBody.setSpan(new RelativeSizeSpan(0.3f),i,i+2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); i = body.indexOf("\n\n",i+2); } if (message.getType() != Message.TYPE_PRIVATE) { From b6f85ba0dd765e72a89a85461b3f8c48f038270c Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 11 May 2015 14:18:30 +0200 Subject: [PATCH 32/58] avoid using paragraph style breaks by accident --- src/main/java/eu/siacs/conversations/entities/Message.java | 4 +++- .../eu/siacs/conversations/ui/adapter/MessageAdapter.java | 7 ++++--- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 3c144f5cf..217b82bb7 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -17,6 +17,8 @@ public class Message extends AbstractEntity { public static final String TABLENAME = "messages"; + public static final String MERGE_SEPARATOR = "\u2029\n\n"; + public static final int STATUS_RECEIVED = 0; public static final int STATUS_UNSEND = 1; public static final int STATUS_SEND = 2; @@ -396,7 +398,7 @@ public class Message extends AbstractEntity { public String getMergedBody() { final Message next = this.next(); if (this.mergeable(next)) { - return getBody().trim() + "\n\n" + next.getMergedBody(); + return getBody().trim() + MERGE_SEPARATOR + next.getMergedBody(); } return getBody().trim(); } diff --git a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java index ec351622c..29dfced2e 100644 --- a/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java +++ b/src/main/java/eu/siacs/conversations/ui/adapter/MessageAdapter.java @@ -234,10 +234,11 @@ public class MessageAdapter extends ArrayAdapter { final String nick = UIHelper.getMessageDisplayName(message); final String body = message.getMergedBody().replaceAll("^" + Message.ME_COMMAND,nick + " "); final SpannableString formattedBody = new SpannableString(body); - int i = body.indexOf("\n\n"); + int i = body.indexOf(Message.MERGE_SEPARATOR); while(i >= 0) { - formattedBody.setSpan(new RelativeSizeSpan(0.3f),i,i+2,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); - i = body.indexOf("\n\n",i+2); + final int end = i + Message.MERGE_SEPARATOR.length(); + formattedBody.setSpan(new RelativeSizeSpan(0.3f),i,end,Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); + i = body.indexOf(Message.MERGE_SEPARATOR,end); } if (message.getType() != Message.TYPE_PRIVATE) { if (message.hasMeCommand()) { From ceadf2f6fb67666abb0d8f9b84a91841396cfc0a Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 11 May 2015 14:28:36 +0200 Subject: [PATCH 33/58] pulled updated translations from transifex --- src/main/res/values-ru/strings.xml | 2 ++ src/main/res/values-sr/strings.xml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/res/values-ru/strings.xml b/src/main/res/values-ru/strings.xml index 2fc257f7c..7b1048209 100644 --- a/src/main/res/values-ru/strings.xml +++ b/src/main/res/values-ru/strings.xml @@ -441,11 +441,13 @@ Удалён %d сертификат Удалено %d сертификатов + Удалено %d сертификатов Выбран %d контакт Выбрано %d контактов + Выбрано %d контактов diff --git a/src/main/res/values-sr/strings.xml b/src/main/res/values-sr/strings.xml index bcf420ba4..ea5cbdb85 100644 --- a/src/main/res/values-sr/strings.xml +++ b/src/main/res/values-sr/strings.xml @@ -97,8 +97,8 @@ Опште ИксМПП ресурс Име са којим се овај клијент идентификује - Прихваћај фајлове - Аутоматски прихваћај фајлове мање од… + Прихватај фајлове + Аутоматски прихватај фајлове мање од… Поставке обавештења Обавештења Обавести кад стигне нова порука From fe5c4cab4608a6b3ded682f4a69da14916cc1d37 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 12 May 2015 03:56:13 +0200 Subject: [PATCH 34/58] don't reinit conversation when coming back to activity. avoids unnecessary scrolling --- .../java/eu/siacs/conversations/ui/ConversationActivity.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index b11ff0024..6e175d8ef 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -927,9 +927,7 @@ public class ConversationActivity extends XmppActivity } this.mConversationFragment.reInit(getSelectedConversation()); mOpenConverstaion = null; - } else if (getSelectedConversation() != null) { - this.mConversationFragment.reInit(getSelectedConversation()); - } else { + } else if (getSelectedConversation() == null) { showConversationsOverview(); mPendingImageUris.clear(); mPendingFileUris.clear(); From 93e444ac3ad4b39415d7097566c319904ff14bcd Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 12 May 2015 03:57:05 +0200 Subject: [PATCH 35/58] don't set unknown error in muc --- src/main/java/eu/siacs/conversations/entities/MucOptions.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/entities/MucOptions.java b/src/main/java/eu/siacs/conversations/entities/MucOptions.java index addee8db2..d867a3708 100644 --- a/src/main/java/eu/siacs/conversations/entities/MucOptions.java +++ b/src/main/java/eu/siacs/conversations/entities/MucOptions.java @@ -343,8 +343,6 @@ public class MucOptions { setError(ERROR_BANNED); } else if (error != null && error.hasChild("registration-required")) { setError(ERROR_MEMBERS_ONLY); - } else { - setError(ERROR_UNKNOWN); } } } From d3a6aa9f7a3132f8f67f2de99b4afbaba7823abb Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 12 May 2015 04:33:04 +0200 Subject: [PATCH 36/58] handle conference invites differently to deal with killed activities. fixes #1188 --- .../services/XmppConnectionService.java | 1 + .../ui/ConferenceDetailsActivity.java | 4 + .../ui/ConversationActivity.java | 6 ++ .../siacs/conversations/ui/XmppActivity.java | 87 ++++++++++++------- 4 files changed, 67 insertions(+), 31 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 34c0a5d10..0ed89206d 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -2108,6 +2108,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa } public void invite(Conversation conversation, Jid contact) { + Log.d(Config.LOGTAG,conversation.getAccount().getJid().toBareJid()+": inviting "+contact+" to "+conversation.getJid().toBareJid()); MessagePacket packet = mMessageGenerator.invite(conversation, contact); sendMessagePacket(conversation.getAccount(), packet); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java index 8c4f6eafe..07b8819d9 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConferenceDetailsActivity.java @@ -385,6 +385,10 @@ public class ConferenceDetailsActivity extends XmppActivity implements OnConvers @Override void onBackendConnected() { + if (mPendingConferenceInvite != null) { + mPendingConferenceInvite.execute(this); + mPendingConferenceInvite = null; + } if (getIntent().getAction().equals(ACTION_VIEW_MUC)) { this.uuid = getIntent().getExtras().getString("uuid"); } diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index 6e175d8ef..a2a405c36 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -901,6 +901,12 @@ public class ConversationActivity extends XmppActivity void onBackendConnected() { this.xmppConnectionService.getNotificationService().setIsInForeground(true); updateConversationList(); + + if (mPendingConferenceInvite != null) { + mPendingConferenceInvite.execute(this); + mPendingConferenceInvite = null; + } + if (xmppConnectionService.getAccounts().size() == 0) { if (!mRedirected) { this.mRedirected = true; diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index 392e57a70..71fb62b51 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -113,6 +113,8 @@ public abstract class XmppActivity extends Activity { } }; + protected ConferenceInvite mPendingConferenceInvite = null; + protected void refreshUi() { final long diff = SystemClock.elapsedRealtime() - mLastUiRefresh; @@ -367,7 +369,7 @@ public abstract class XmppActivity extends Activity { } public void highlightInMuc(Conversation conversation, String nick) { - switchToConversation(conversation,null,nick,false); + switchToConversation(conversation, null, nick, false); } private void switchToConversation(Conversation conversation, String text, String nick, boolean newTask) { @@ -435,7 +437,7 @@ public abstract class XmppActivity extends Activity { @Override public void userInputRequried(PendingIntent pi, - Account account) { + Account account) { try { startIntentSenderForResult(pi.getIntentSender(), REQUEST_ANNOUNCE_PGP, null, 0, 0, 0); @@ -446,13 +448,13 @@ public abstract class XmppActivity extends Activity { @Override public void success(Account account) { xmppConnectionService.databaseBackend - .updateAccount(account); + .updateAccount(account); xmppConnectionService.sendPresence(account); if (conversation != null) { conversation - .setNextEncryption(Message.ENCRYPTION_PGP); + .setNextEncryption(Message.ENCRYPTION_PGP); xmppConnectionService.databaseBackend - .updateConversation(conversation); + .updateConversation(conversation); } } @@ -665,32 +667,13 @@ public abstract class XmppActivity extends Activity { protected void onActivityResult(int requestCode, int resultCode, final Intent data) { super.onActivityResult(requestCode, resultCode, data); - if (requestCode == REQUEST_INVITE_TO_CONVERSATION - && resultCode == RESULT_OK) { - try { - String conversationUuid = data.getStringExtra("conversation"); - Conversation conversation = xmppConnectionService - .findConversationByUuid(conversationUuid); - List jids = new ArrayList(); - if (data.getBooleanExtra("multiple", false)) { - String[] toAdd = data.getStringArrayExtra("contacts"); - for (String item : toAdd) { - jids.add(Jid.fromString(item)); - } - } else { - jids.add(Jid.fromString(data.getStringExtra("contact"))); - } - - if (conversation.getMode() == Conversation.MODE_MULTI) { - for (Jid jid : jids) { - xmppConnectionService.invite(conversation, jid); - } - } else { - jids.add(conversation.getJid().toBareJid()); - xmppConnectionService.createAdhocConference(conversation.getAccount(), jids, adhocCallback); - } - } catch (final InvalidJidException ignored) { - + if (requestCode == REQUEST_INVITE_TO_CONVERSATION && resultCode == RESULT_OK) { + mPendingConferenceInvite = ConferenceInvite.parse(data); + if (xmppConnectionServiceBound && mPendingConferenceInvite != null) { + mPendingConferenceInvite.execute(this); + mPendingConferenceInvite = null; + } else { + Log.d(Config.LOGTAG,"putting invite on pending"); } } } @@ -855,6 +838,48 @@ public abstract class XmppActivity extends Activity { } } + public static class ConferenceInvite { + private String uuid; + private List jids = new ArrayList<>(); + + public static ConferenceInvite parse(Intent data) { + ConferenceInvite invite = new ConferenceInvite(); + invite.uuid = data.getStringExtra("conversation"); + if (invite.uuid == null) { + return null; + } + try { + if (data.getBooleanExtra("multiple", false)) { + String[] toAdd = data.getStringArrayExtra("contacts"); + for (String item : toAdd) { + invite.jids.add(Jid.fromString(item)); + } + } else { + invite.jids.add(Jid.fromString(data.getStringExtra("contact"))); + } + } catch (final InvalidJidException ignored) { + return null; + } + return invite; + } + + public void execute(XmppActivity activity) { + XmppConnectionService service = activity.xmppConnectionService; + Conversation conversation = service.findConversationByUuid(this.uuid); + if (conversation == null) { + return; + } + if (conversation.getMode() == Conversation.MODE_MULTI) { + for (Jid jid : jids) { + service.invite(conversation, jid); + } + } else { + jids.add(conversation.getJid().toBareJid()); + service.createAdhocConference(conversation.getAccount(), jids, activity.adhocCallback); + } + } + } + public AvatarService avatarService() { return xmppConnectionService.getAvatarService(); } From 93e620d6858cd713c8895256f3233e9d0bd75d74 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 12 May 2015 04:40:57 +0200 Subject: [PATCH 37/58] removed debug logging --- src/main/java/eu/siacs/conversations/ui/XmppActivity.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java index 71fb62b51..934c696f0 100644 --- a/src/main/java/eu/siacs/conversations/ui/XmppActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/XmppActivity.java @@ -672,8 +672,6 @@ public abstract class XmppActivity extends Activity { if (xmppConnectionServiceBound && mPendingConferenceInvite != null) { mPendingConferenceInvite.execute(this); mPendingConferenceInvite = null; - } else { - Log.d(Config.LOGTAG,"putting invite on pending"); } } } From f84ccbe1fa3efe3463f0e18ed98c7124a8b4806b Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 13 May 2015 11:56:25 +0200 Subject: [PATCH 38/58] version bump to 1.4.0-alpha3 --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 0bde37f54..c47e6ee14 100644 --- a/build.gradle +++ b/build.gradle @@ -44,8 +44,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - versionCode 63 - versionName "1.4.0-alpha" + versionCode 64 + versionName "1.4.0-alpha3" } compileOptions { From 51aeeb766c5c0ad649abad7777bb5e194a6ae997 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 13 May 2015 11:56:59 +0200 Subject: [PATCH 39/58] use zero width white space as message seperator --- src/main/java/eu/siacs/conversations/entities/Message.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index 217b82bb7..a8bb9c557 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -17,7 +17,7 @@ public class Message extends AbstractEntity { public static final String TABLENAME = "messages"; - public static final String MERGE_SEPARATOR = "\u2029\n\n"; + public static final String MERGE_SEPARATOR = "\u200B\n\n"; public static final int STATUS_RECEIVED = 0; public static final int STATUS_UNSEND = 1; From 6489ddac6c6d3d6eced35ab4640963eb15667bb5 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 13 May 2015 14:33:52 +0200 Subject: [PATCH 40/58] clear avatar cache when uploading new avatar --- .../eu/siacs/conversations/services/XmppConnectionService.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 0ed89206d..4f2697a37 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -1879,6 +1879,7 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa IqPacket result) { if (result.getType() == IqPacket.TYPE.RESULT) { if (account.setAvatar(avatar.getFilename())) { + getAvatarService().clear(account); databaseBackend.updateAccount(account); } callback.success(avatar); From 82878cded1007331e953908dee11c66557e9ae20 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 13 May 2015 16:23:20 +0200 Subject: [PATCH 41/58] show location quick action after receiving a question about the users location --- .../ui/ConversationFragment.java | 5 +++- .../siacs/conversations/utils/UIHelper.java | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java index b6a7dc767..20fc17506 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationFragment.java @@ -59,6 +59,7 @@ import eu.siacs.conversations.ui.adapter.MessageAdapter; import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureClicked; import eu.siacs.conversations.ui.adapter.MessageAdapter.OnContactPictureLongClicked; import eu.siacs.conversations.utils.GeoHelper; +import eu.siacs.conversations.utils.UIHelper; import eu.siacs.conversations.xmpp.chatstate.ChatState; import eu.siacs.conversations.xmpp.jid.Jid; @@ -905,7 +906,9 @@ public class ConversationFragment extends Fragment implements EditMessage.Keyboa } else { if (empty) { String setting = activity.getPreferences().getString("quick_action","recent"); - if (setting.equals("recent")) { + if (!setting.equals("none") && UIHelper.receivedLocationQuestion(conversation.getLatestMessage())) { + setting = "location"; + } else if (setting.equals("recent")) { setting = activity.getPreferences().getString("recently_used_quick_action","text"); } switch (setting) { diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index 9c62dcbfb..e289e0e58 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -5,6 +5,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; +import java.util.Locale; import eu.siacs.conversations.R; import eu.siacs.conversations.entities.Contact; @@ -26,6 +27,19 @@ public class UIHelper { public static final ArrayList HEARTS = new ArrayList<>(Arrays.asList(BLACK_HEART_SUIT,HEAVY_BLACK_HEART_SUIT,WHITE_HEART_SUIT)); + private static final ArrayList LOCATION_QUESTIONS = new ArrayList<>(Arrays.asList( + "where are you?", //en + "where r u?", //en + "whats your 20?", //en + "what is your 20?", //en + "what's your 20?", //en + "whats your twenty?", //en + "what is your twenty?", //en + "what's your twenty?", //en + "wo bist du?", //de + "wo sind sie?" //de + )); + private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_NO_YEAR | DateUtils.FORMAT_ABBREV_ALL; private static final int FULL_DATE_FLAGS = DateUtils.FORMAT_SHOW_TIME @@ -234,4 +248,14 @@ public class UIHelper { return counterpart.toString().trim(); } } + + public static boolean receivedLocationQuestion(Message message) { + if (message == null + || message.getStatus() != Message.STATUS_RECEIVED + || message.getType() != Message.TYPE_TEXT) { + return false; + } + String body = message.getBody() == null ? null : message.getBody().trim().toLowerCase(Locale.getDefault()); + return LOCATION_QUESTIONS.contains(body); + } } From 4414cf3b277ec7a0a015e23eab197374f3714da6 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 13 May 2015 17:10:11 +0200 Subject: [PATCH 42/58] ignore question marks in location question --- .../siacs/conversations/utils/UIHelper.java | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index e289e0e58..51984c910 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -28,16 +28,18 @@ public class UIHelper { public static final ArrayList HEARTS = new ArrayList<>(Arrays.asList(BLACK_HEART_SUIT,HEAVY_BLACK_HEART_SUIT,WHITE_HEART_SUIT)); private static final ArrayList LOCATION_QUESTIONS = new ArrayList<>(Arrays.asList( - "where are you?", //en - "where r u?", //en - "whats your 20?", //en - "what is your 20?", //en - "what's your 20?", //en - "whats your twenty?", //en - "what is your twenty?", //en - "what's your twenty?", //en - "wo bist du?", //de - "wo sind sie?" //de + "where are you", //en + "where r u", //en + "whats your 20", //en + "what is your 20", //en + "what's your 20", //en + "whats your twenty", //en + "what is your twenty", //en + "what's your twenty", //en + "wo bist du", //de + "wo sind sie", //de + "wo seid ihr", //de + "dónde estás" //es )); private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE @@ -256,6 +258,7 @@ public class UIHelper { return false; } String body = message.getBody() == null ? null : message.getBody().trim().toLowerCase(Locale.getDefault()); + body = body.replace("?","").replace("¿",""); return LOCATION_QUESTIONS.contains(body); } } From 8d472157a4b706ef0c5fc422325f0c1ad47e96bd Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Thu, 14 May 2015 11:57:51 +0200 Subject: [PATCH 43/58] always log reason for failed file transfer --- .../xmpp/jingle/JingleInbandTransport.java | 8 ++++++-- .../xmpp/jingle/JingleSocks5Transport.java | 12 ++++++++++++ 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java index 4e039ad85..29efcf8f1 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleInbandTransport.java @@ -97,11 +97,13 @@ public class JingleInbandTransport extends JingleTransport { file.createNewFile(); this.fileOutputStream = file.createOutputStream(); if (this.fileOutputStream == null) { + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": could not create output stream"); callback.onFileTransferAborted(); return; } this.remainingSize = this.fileSize = file.getExpectedSize(); } catch (final NoSuchAlgorithmException | IOException e) { + Log.d(Config.LOGTAG,account.getJid().toBareJid()+" "+e.getMessage()); callback.onFileTransferAborted(); } } @@ -122,6 +124,7 @@ public class JingleInbandTransport extends JingleTransport { this.digest.reset(); fileInputStream = this.file.createInputStream(); if (fileInputStream == null) { + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": could no create input stream"); callback.onFileTransferAborted(); return; } @@ -130,6 +133,7 @@ public class JingleInbandTransport extends JingleTransport { } } catch (NoSuchAlgorithmException e) { callback.onFileTransferAborted(); + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": "+e.getMessage()); } } @@ -182,7 +186,7 @@ public class JingleInbandTransport extends JingleTransport { fileInputStream.close(); } } catch (IOException e) { - Log.d(Config.LOGTAG,e.getMessage()); + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": "+e.getMessage()); FileBackend.close(fileInputStream); this.onFileTransmissionStatusChanged.onFileTransferAborted(); } @@ -206,7 +210,7 @@ public class JingleInbandTransport extends JingleTransport { connection.updateProgress((int) ((((double) (this.fileSize - this.remainingSize)) / this.fileSize) * 100)); } } catch (IOException e) { - Log.d(Config.LOGTAG,e.getMessage()); + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": "+e.getMessage()); FileBackend.close(fileOutputStream); this.onFileTransmissionStatusChanged.onFileTransferAborted(); } diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java index 72015a058..35375a5dc 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java @@ -1,5 +1,7 @@ package eu.siacs.conversations.xmpp.jingle; +import android.util.Log; + import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; @@ -10,6 +12,7 @@ import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.util.Arrays; +import eu.siacs.conversations.Config; import eu.siacs.conversations.entities.DownloadableFile; import eu.siacs.conversations.persistance.FileBackend; import eu.siacs.conversations.utils.CryptoHelper; @@ -102,6 +105,7 @@ public class JingleSocks5Transport extends JingleTransport { digest.reset(); fileInputStream = file.createInputStream(); if (fileInputStream == null) { + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": could not create input stream"); callback.onFileTransferAborted(); return; } @@ -121,10 +125,13 @@ public class JingleSocks5Transport extends JingleTransport { callback.onFileTransmitted(file); } } catch (FileNotFoundException e) { + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": "+e.getMessage()); callback.onFileTransferAborted(); } catch (IOException e) { + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": "+e.getMessage()); callback.onFileTransferAborted(); } catch (NoSuchAlgorithmException e) { + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": "+e.getMessage()); callback.onFileTransferAborted(); } finally { FileBackend.close(fileInputStream); @@ -150,6 +157,7 @@ public class JingleSocks5Transport extends JingleTransport { fileOutputStream = file.createOutputStream(); if (fileOutputStream == null) { callback.onFileTransferAborted(); + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": could not create output stream"); return; } double size = file.getExpectedSize(); @@ -160,6 +168,7 @@ public class JingleSocks5Transport extends JingleTransport { count = inputStream.read(buffer); if (count == -1) { callback.onFileTransferAborted(); + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": file ended prematurely with "+remainingSize+" bytes remaining"); return; } else { fileOutputStream.write(buffer, 0, count); @@ -173,10 +182,13 @@ public class JingleSocks5Transport extends JingleTransport { file.setSha1Sum(CryptoHelper.bytesToHex(digest.digest())); callback.onFileTransmitted(file); } catch (FileNotFoundException e) { + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": "+e.getMessage()); callback.onFileTransferAborted(); } catch (IOException e) { + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": "+e.getMessage()); callback.onFileTransferAborted(); } catch (NoSuchAlgorithmException e) { + Log.d(Config.LOGTAG, connection.getAccount().getJid().toBareJid() + ": "+e.getMessage()); callback.onFileTransferAborted(); } finally { FileBackend.close(fileOutputStream); From 8dfa701043d6e442f24edeb4fec48e9d07377a90 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Thu, 14 May 2015 12:08:43 +0200 Subject: [PATCH 44/58] added a few location questions --- .../java/eu/siacs/conversations/utils/UIHelper.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/utils/UIHelper.java b/src/main/java/eu/siacs/conversations/utils/UIHelper.java index 51984c910..2f96a83a9 100644 --- a/src/main/java/eu/siacs/conversations/utils/UIHelper.java +++ b/src/main/java/eu/siacs/conversations/utils/UIHelper.java @@ -29,7 +29,8 @@ public class UIHelper { private static final ArrayList LOCATION_QUESTIONS = new ArrayList<>(Arrays.asList( "where are you", //en - "where r u", //en + "where are you now", //en + "where are you right now", //en "whats your 20", //en "what is your 20", //en "what's your 20", //en @@ -37,9 +38,13 @@ public class UIHelper { "what is your twenty", //en "what's your twenty", //en "wo bist du", //de - "wo sind sie", //de + "wo bist du jetzt", //de + "wo bist du gerade", //de "wo seid ihr", //de - "dónde estás" //es + "wo seid ihr jetzt", //de + "wo seid ihr gerade", //de + "dónde estás", //es + "donde estas" //es )); private static final int SHORT_DATE_FLAGS = DateUtils.FORMAT_SHOW_DATE From b69ee7125d49493bea86c6e3095f1236ad895980 Mon Sep 17 00:00:00 2001 From: Andreas Straub Date: Thu, 14 May 2015 15:25:52 +0200 Subject: [PATCH 45/58] Force Nameprepping of JID domain parts The IDN.toAscii()/IDN.toUnicode() family only namepreps the original domain passed to it if it contained non-ASCII characters. This means that for all-ASCII domains, no canonicalization is performed, which leads to issues like case-sensitivity. This workaround explicitly namepreps domain parts before calling IDN.toAscii() on them, in order to get a canonicalized representation (most notably, case invariance). A basic DB migration is also included. --- .../persistance/DatabaseBackend.java | 87 ++++++++++++++++++- .../eu/siacs/conversations/xmpp/jid/Jid.java | 13 ++- 2 files changed, 96 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java index 28e1c47e7..ed88e434e 100644 --- a/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java +++ b/src/main/java/eu/siacs/conversations/persistance/DatabaseBackend.java @@ -4,11 +4,13 @@ import java.util.ArrayList; import java.util.List; import java.util.concurrent.CopyOnWriteArrayList; +import eu.siacs.conversations.Config; import eu.siacs.conversations.entities.Account; import eu.siacs.conversations.entities.Contact; import eu.siacs.conversations.entities.Conversation; import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.entities.Roster; +import eu.siacs.conversations.xmpp.jid.InvalidJidException; import eu.siacs.conversations.xmpp.jid.Jid; import android.content.Context; @@ -16,13 +18,14 @@ import android.database.Cursor; import android.database.sqlite.SQLiteCantOpenDatabaseException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; +import android.util.Log; public class DatabaseBackend extends SQLiteOpenHelper { private static DatabaseBackend instance = null; private static final String DATABASE_NAME = "history"; - private static final int DATABASE_VERSION = 13; + private static final int DATABASE_VERSION = 14; private static String CREATE_CONTATCS_STATEMENT = "create table " + Contact.TABLENAME + "(" + Contact.ACCOUNT + " TEXT, " @@ -130,6 +133,88 @@ public class DatabaseBackend extends SQLiteOpenHelper { db.execSQL("delete from "+Contact.TABLENAME); db.execSQL("update "+Account.TABLENAME+" set "+Account.ROSTERVERSION+" = NULL"); } + if (oldVersion < 14 && newVersion >= 14) { + // migrate db to new, canonicalized JID domainpart representation + + // Conversation table + Cursor cursor = db.rawQuery("select * from " + Conversation.TABLENAME, new String[0]); + while(cursor.moveToNext()) { + String newJid; + try { + newJid = Jid.fromString( + cursor.getString(cursor.getColumnIndex(Conversation.CONTACTJID)) + ).toString(); + } catch (InvalidJidException ignored) { + Log.e(Config.LOGTAG, "Failed to migrate Conversation CONTACTJID " + +cursor.getString(cursor.getColumnIndex(Conversation.CONTACTJID)) + +": " + ignored +". Skipping..."); + continue; + } + + String updateArgs[] = { + newJid, + cursor.getString(cursor.getColumnIndex(Conversation.UUID)), + }; + db.execSQL("update " + Conversation.TABLENAME + + " set " + Conversation.CONTACTJID + " = ? " + + " where " + Conversation.UUID + " = ?", updateArgs); + } + cursor.close(); + + // Contact table + cursor = db.rawQuery("select * from " + Contact.TABLENAME, new String[0]); + while(cursor.moveToNext()) { + String newJid; + try { + newJid = Jid.fromString( + cursor.getString(cursor.getColumnIndex(Contact.JID)) + ).toString(); + } catch (InvalidJidException ignored) { + Log.e(Config.LOGTAG, "Failed to migrate Contact JID " + +cursor.getString(cursor.getColumnIndex(Contact.JID)) + +": " + ignored +". Skipping..."); + continue; + } + + String updateArgs[] = { + newJid, + cursor.getString(cursor.getColumnIndex(Contact.ACCOUNT)), + cursor.getString(cursor.getColumnIndex(Contact.JID)), + }; + db.execSQL("update " + Contact.TABLENAME + + " set " + Contact.JID + " = ? " + + " where " + Contact.ACCOUNT + " = ? " + + " AND " + Contact.JID + " = ?", updateArgs); + } + cursor.close(); + + // Account table + cursor = db.rawQuery("select * from " + Account.TABLENAME, new String[0]); + while(cursor.moveToNext()) { + String newServer; + try { + newServer = Jid.fromParts( + cursor.getString(cursor.getColumnIndex(Account.USERNAME)), + cursor.getString(cursor.getColumnIndex(Account.SERVER)), + "mobile" + ).getDomainpart(); + } catch (InvalidJidException ignored) { + Log.e(Config.LOGTAG, "Failed to migrate Account SERVER " + +cursor.getString(cursor.getColumnIndex(Account.SERVER)) + +": " + ignored +". Skipping..."); + continue; + } + + String updateArgs[] = { + newServer, + cursor.getString(cursor.getColumnIndex(Account.UUID)), + }; + db.execSQL("update " + Account.TABLENAME + + " set " + Account.SERVER + " = ? " + + " where " + Account.UUID + " = ?", updateArgs); + } + cursor.close(); + } } public static synchronized DatabaseBackend getInstance(Context context) { diff --git a/src/main/java/eu/siacs/conversations/xmpp/jid/Jid.java b/src/main/java/eu/siacs/conversations/xmpp/jid/Jid.java index 295e067a6..f989c0c25 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jid/Jid.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jid/Jid.java @@ -130,12 +130,19 @@ public final class Jid { if (resourcepart.isEmpty() || resourcepart.length() > 1023) { throw new InvalidJidException(InvalidJidException.INVALID_PART_LENGTH); } - dp = IDN.toUnicode(jid.substring(domainpartStart, slashLoc), IDN.USE_STD3_ASCII_RULES); + try { + dp = IDN.toUnicode(Stringprep.nameprep(jid.substring(domainpartStart, slashLoc)), IDN.USE_STD3_ASCII_RULES); + } catch (final StringprepException e) { + throw new InvalidJidException(InvalidJidException.STRINGPREP_FAIL, e); + } finaljid = finaljid + dp + "/" + rp; } else { resourcepart = ""; - dp = IDN.toUnicode(jid.substring(domainpartStart, jid.length()), - IDN.USE_STD3_ASCII_RULES); + try{ + dp = IDN.toUnicode(Stringprep.nameprep(jid.substring(domainpartStart, jid.length())), IDN.USE_STD3_ASCII_RULES); + } catch (final StringprepException e) { + throw new InvalidJidException(InvalidJidException.STRINGPREP_FAIL, e); + } finaljid = finaljid + dp; } From b6a7e56bf667cfc0845ca0d50d88a77c43d9a27d Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Fri, 15 May 2015 13:58:11 +0200 Subject: [PATCH 46/58] call StartConversationActivity in init mode only after adding the first account --- .../java/eu/siacs/conversations/ui/EditAccountActivity.java | 4 +++- .../siacs/conversations/ui/PublishProfilePictureActivity.java | 4 +++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java b/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java index 7aa7b1c2e..931a1a2fa 100644 --- a/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/EditAccountActivity.java @@ -223,7 +223,9 @@ public class EditAccountActivity extends XmppActivity implements OnAccountUpdate if (avatar != null) { intent = new Intent(getApplicationContext(), StartConversationActivity.class); - intent.putExtra("init",true); + if (xmppConnectionService != null && xmppConnectionService.getAccounts().size() == 1) { + intent.putExtra("init", true); + } } else { intent = new Intent(getApplicationContext(), PublishProfilePictureActivity.class); diff --git a/src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java b/src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java index e8ab8dae7..4333dbdb0 100644 --- a/src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/PublishProfilePictureActivity.java @@ -116,7 +116,9 @@ public class PublishProfilePictureActivity extends XmppActivity { if (mInitialAccountSetup) { Intent intent = new Intent(getApplicationContext(), StartConversationActivity.class); - intent.putExtra("init",true); + if (xmppConnectionService != null && xmppConnectionService.getAccounts().size() == 1) { + intent.putExtra("init", true); + } startActivity(intent); } finish(); From 4151b72a6e68faff45e3d166823459eaa07c63a3 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 16 May 2015 04:12:53 +0200 Subject: [PATCH 47/58] let jingle connection and manager handle message status --- .../siacs/conversations/services/XmppConnectionService.java | 4 ---- .../siacs/conversations/xmpp/jingle/JingleConnection.java | 4 ++++ .../conversations/xmpp/jingle/JingleConnectionManager.java | 6 ++++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java index 4f2697a37..63d9ba7a8 100644 --- a/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java +++ b/src/main/java/eu/siacs/conversations/services/XmppConnectionService.java @@ -349,7 +349,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa } message.setCounterpart(conversation.getNextCounterpart()); message.setType(Message.TYPE_FILE); - message.setStatus(Message.STATUS_OFFERED); String path = getFileBackend().getOriginalPath(uri); if (path!=null) { message.setRelativeFilePath(path); @@ -392,7 +391,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa } message.setCounterpart(conversation.getNextCounterpart()); message.setType(Message.TYPE_IMAGE); - message.setStatus(Message.STATUS_OFFERED); new Thread(new Runnable() { @Override @@ -813,7 +811,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa Presences presences = contact.getPresences(); if ((message.getCounterpart() != null) && (presences.has(message.getCounterpart().getResourcepart()))) { - markMessage(message, Message.STATUS_OFFERED); mJingleConnectionManager.createNewConnection(message); } else { if (presences.size() == 1) { @@ -823,7 +820,6 @@ public class XmppConnectionService extends Service implements OnPhoneContactsLoa } catch (InvalidJidException e) { return; } - markMessage(message, Message.STATUS_OFFERED); mJingleConnectionManager.createNewConnection(message); } } diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java index 4847d5f12..6c42d3d2c 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java @@ -271,6 +271,9 @@ public class JingleConnection implements Downloadable { this.mergeCandidates(JingleCandidate.parse(content.socks5transport() .getChildren())); this.fileOffer = packet.getJingleContent().getFileOffer(); + + mXmppConnectionService.sendIqPacket(account,packet.generateResponse(IqPacket.TYPE.RESULT),null); + if (fileOffer != null) { Element fileSize = fileOffer.findChild("size"); Element fileNameElement = fileOffer.findChild("name"); @@ -381,6 +384,7 @@ public class JingleConnection implements Downloadable { @Override public void onIqPacketReceived(Account account, IqPacket packet) { if (packet.getType() != IqPacket.TYPE.ERROR) { + Log.d(Config.LOGTAG,account.getJid().toBareJid()+": other party received offer"); mJingleStatus = JINGLE_STATUS_INITIATED; mXmppConnectionService.markMessage(message, Message.STATUS_OFFERED); } else { diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java index 5dfa3ff40..c19dd04c7 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnectionManager.java @@ -9,6 +9,7 @@ import android.annotation.SuppressLint; import android.util.Log; import eu.siacs.conversations.Config; import eu.siacs.conversations.entities.Account; +import eu.siacs.conversations.entities.Downloadable; import eu.siacs.conversations.entities.Message; import eu.siacs.conversations.services.AbstractConnectionManager; import eu.siacs.conversations.services.XmppConnectionService; @@ -58,7 +59,12 @@ public class JingleConnectionManager extends AbstractConnectionManager { } public JingleConnection createNewConnection(Message message) { + Downloadable old = message.getDownloadable(); + if (old != null) { + old.cancel(); + } JingleConnection connection = new JingleConnection(this); + mXmppConnectionService.markMessage(message,Message.STATUS_WAITING); connection.init(message); this.connections.add(connection); return connection; From b4a8984b18bed5673284d5fa4a5fcc256386d542 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 16 May 2015 10:19:05 +0200 Subject: [PATCH 48/58] pulled new translations from transifex --- src/main/res/values-ca/strings.xml | 34 ++- src/main/res/values-pl/strings.xml | 25 +++ src/main/res/values-zh-rCN/strings.xml | 295 ++++++++++++++++++++----- 3 files changed, 302 insertions(+), 52 deletions(-) diff --git a/src/main/res/values-ca/strings.xml b/src/main/res/values-ca/strings.xml index a0861b167..9583932bb 100644 --- a/src/main/res/values-ca/strings.xml +++ b/src/main/res/values-ca/strings.xml @@ -24,8 +24,8 @@ Escollir un contacte LLista bloqueix Ara - 1 min avans - %de minuts avans + 1 min abans + %de minuts abans Converses sense llegir o no llegides enviant… Desxifrant missatge. Espera si us plau… @@ -359,6 +359,7 @@ No s\'ha pogut canviar la contrasenya Començar a enviar un missatge de conversació xifrat Fer una pregunta + Si vosté i el seu contacte tenen un secret en comú que ningú més sap (com una broma o simplement el que vau dinar l\'última vegada que es van trobar) pot utilitzar aquest secret per comprovar les empremtes de cadascú.\n\nProporcionaràs una pista o una pregunta a la que el seu contacte donarà una resposta, que distingeix entre majúscules i minúscules. El seu contacte l\'hi agradaria verificar la seva empremta digital per un repte amb un secret compartit.El seu contacte proporciona el següent suggeriment o pregunta per aquest secret. El seu suggeriment no pot estar buit El teu secret compartit no pot estar buit @@ -416,4 +417,33 @@ Enviant %s Oferint %s Amaga el fora de línia + Deshabilita el compte + %s està escrivint... + %s ha deixat d\'escriure + Notificacions d\'escriptura + Permet el teu contacte saber quan estàs escrivint un missatge nou + Enviar localització + Mostrar localització + No s\'ha trobat cap aplicació per mostrar la localització + Localització + Localització rebuda + Conversa tancada + S\'ha sortit de la conferència + Opcions de certificats + No confiar en les CAs del sistema + Tots els certificats han de ser aprovats manualment + Eliminar certificats + Esborrar certificats aprovats manualment + No hi ha certificats aprovats manualment + Esborrar certificats + Esborrar selecció + Cancel·lar + + %d certificat esborrat + %d certificats esborrats + + + Seleccionar %d contacte + Seleccionar %d contactes + diff --git a/src/main/res/values-pl/strings.xml b/src/main/res/values-pl/strings.xml index e18493573..70c3a49df 100644 --- a/src/main/res/values-pl/strings.xml +++ b/src/main/res/values-pl/strings.xml @@ -202,6 +202,7 @@ Wiadomość zaszyfrowana. Zainstaluj OpenKeychain, żeby odszyfrować. Nieznany odcisk klucza OTR Znaleziono wiadomości zaszyfrowane przez OpenPGP + Odbiór nieudany Twój odcisk klucza Odcisk klucza OTR Weryfikuj @@ -236,7 +237,9 @@ Serwer odrzucił żądanie publikacji Wystąpił błąd podczas konwersji obrazu Nie udało się zapisać obrazu w pamięci urządzenia + (lub przytrzymaj długo, aby ustawić domyślny) Serwer nie udostępnia możliwości publikacji awatarów + szepcze do %s Wyślij prywatną wiadomość do %s Połącz @@ -252,10 +255,12 @@ Konferencja jest zabezpieczona hasłem Wprowadź hasło Kontakt nie udostępnia powiadomień o obecności + Poproś kontakt o udostępnienie powiadomień o obecności.\n\nPozwoli to na ustalenie klienta, z którego korzysta rozmówca. Zażądaj teraz Usuń odcisk klucza Czy na pewno chcesz usunąć odcisk klucza? Ignoruj + Uwaga: Wysyłanie bez obustronnych powiadomień o obecności może powodować nieoczekiwane problemy.\n\nSprawdź subskrypcję powiadomień w szczegółach kontaktu. Ustawienia szyfrowania Wymuszaj szyfrowanie typu end-to-end Szyfruj wszystkie wiadomości (poza konferencjami) @@ -283,6 +288,7 @@ Zbanowano cię w konferencji To jest zamknięty pokój Wyrzucono cię z konferencji + używając konta %s Sprawdzanie obrazka na hoście HTTP Obraz został usunięty Brak połączenia. Spróbuj ponownie później @@ -302,6 +308,7 @@ Szczegóły konta Weryfikuj OTR Zdalny odcisk klucza + skanuj (lub zetknij telefony) Protokół socialist millionaire Podpowiedź lub pytanie @@ -309,6 +316,7 @@ Potwierdź W toku Odpowiedz + Operacja nieudana Sekrety są niezgodne Spróbuj ponownie Zakończ @@ -382,6 +390,7 @@ Konferencja prywatna, dla zaakceptowanych uczestników Opcje konferencji Prywatna (tylko zaakceptowani) + Nieanonimowa Opcje konferencji zostały zmienione! Nie udało się zmienić opcji konferencji Nigdy @@ -420,7 +429,23 @@ Otrzymano lokalizację Zamknięto konwersację Opuszczono konferencję + Ustawienia certyfikatów Nie ufaj certyfikatom systemowym Wymagaj ręcznego potwierdzania certyfikatów + Usuń certyfikat + Wybierz zaufane certyfikaty do usunięcia + Brak ręcznie zaufanych certyfikatów + Usuń certyfikaty + Usuń zaznaczone Anuluj + + Usunięto %d certyfikat + Usunięto %d certyfikaty + Usunięto %d certyfikatów + + + %d kontakt wybrany + %d kontakty wybrane + %d kontaktów wybranych + diff --git a/src/main/res/values-zh-rCN/strings.xml b/src/main/res/values-zh-rCN/strings.xml index 49ca9b974..2f80e064a 100644 --- a/src/main/res/values-zh-rCN/strings.xml +++ b/src/main/res/values-zh-rCN/strings.xml @@ -11,6 +11,10 @@ 编辑姓名 添加到手机通讯录 从列表中删除 + 屏蔽联系人 + 解除联系人屏蔽 + 屏蔽域名 + 解除域名屏蔽 管理账户 设置 讨论组详情 @@ -18,6 +22,7 @@ 分享会话 开始会话 选择联系人 + 屏蔽列表 刚刚 1 分钟前 %d分钟前 @@ -30,56 +35,65 @@ 版主 参与者 访客 - 将 %s从列表中移除? 与该联系人的会话消息不会清除. - 从书签中移除 %s?相关会话消息不会被清除 . + 将 %s 从列表中移除? 与该联系人的会话消息不会清除. + 你想屏蔽 %s 将不能发送信息给你? + 你想解除对 %s 的屏蔽吗,他们将可以发送信息给你? + 屏蔽 %s 中的所有联系人? + 解除对 %s 中所有联系人的屏蔽? + 联系人已屏蔽 + 从书签中移除 %s ?相关会话消息不会被清除 . 在服务器上注册新账户 + 在服务器上改变密码 分享 开始会话 邀请联系人 联系人 取消 + 设置 添加 编辑 删除 + 屏蔽 + 解除屏蔽 保存 完成 - Conversations停止运行 - 发送堆栈跟踪到正在开发Conversations的人员\n警告: 该操作将用您的 XMPP账户发送堆栈跟踪到开发人员. + Conversations 崩溃 + 发送堆栈跟踪信息到 Conversations 的开发人员\n警告: 该操作将用您的 XMPP 账户发送堆栈跟踪给开发人员。 现在发送 不再询问 无法连接至账户 无法连接至多个账户 点击此处管理账户 - 附件 - 该联系人不在您的列表.需要加为联系人吗 ? + 附加文件 + 该联系人不在您的列表。需要加为联系人吗 ? 添加联系人 传递失败 拒绝 准备传输图像 清除历史记录 清除会话记录 - 删除该会话中所有信息?\n\n注: 该操作不会影响其他设备或服务器保存的信息. + 删除该会话中所有信息?\n\n注: 该操作不会影响其他设备或服务器保存的信息。 删除消息 之后结束该会话 添加在线用户至联系人 发送纯文本信息 发送 OTR 加密信息 发送 OpenPGP 加密信息 - 用户名修改成功 + 昵称修改成功 下载图片 不加密发送 - 解密失败,可能是私钥不正确. + 解密失败,可能是私钥不正确。 OpenKeychain - 会话运用了第三方app,名为 OpenKeychain 用来加密、解码信息以及管理您的公钥.\n\nOpenKeychain 遵循 GPLv3 并且在 F-Droid和Google Play上可操作.\n\n(之后请重启conversations.) + 会话运用了第三方app,名为 OpenKeychain 用来加密、解密信息以及管理您的密钥。\n\nOpenKeychain 遵循 GPLv3 并且可以在 F-Droid 和 Google Play 上获取。\n\n(之后请重启 conversations) 重启 安装 输入… 等待… - 未发现OpenPGP 密码 - 会话加密信息失败,因为联系人未告知他/她的公钥.\n\n请通知联系人设置 OpenPGP. - 未找到 OpenPGP 密码 + 未发现 OpenPGP 密钥 + 会话加密信息失败,因为联系人未提供他/她的公钥。\n\n请通知联系人设置 OpenPGP。 + 未找到 OpenPGP 密钥 因您的联系人未公布公钥,Conversations未能成功加密您的信息.\n\n请通知联系人设置OpenPGP. - 加密信息已接收.点击进行解密和查看. + 加密信息已接收。点击解密并查看。 常规 XMPP 资源 客户端标识名称 @@ -91,41 +105,41 @@ 震动 收到新消息时震动 声音 - 收到新消息时播放铃声 + 收到新消息时的铃声 讨论组通知 当有新的消息时总是通知而不是亮屏时才通知 通知限期 接收副本短时间内关闭通知 高级选项 - 总不发送故障报告 - 发送堆栈跟踪帮助Conversations开发人员 + 总不发送崩溃报告 + 发送堆栈跟踪帮助 Conversations 开发人员 确认消息 当你已收到消息并且已阅时通知好友 - UI选项 + UI 选项 OpenKeychain 报告了一个错误 - 解码文件时出现I/O错误 + 解密文件时出现 I/O 错误 接受 产生了一个错误 同意更新在线联系人 - 预先同意并请求您的联系人进行更新 + 预先同意并请求更新您的联系人 关注 你的账号 - Keys - 发送在线联系人更新列表 - 接收在线联系人更新列表 - 请求在线联系人更新列表 + 密钥 + 发送在线联系人列表更新 + 接收在线联系人列表更新 + 请求在线联系人列表更新 选择图片 照相 预先同意订阅请求 您选择的文件不是图像文件 转换图像出错 未找到文件 - 常规的I/O错误.可能是存储空间不足的原因? - 您用来选择图片的app没有给予足够权限支持我们读取文件.\n\n请使用另一文件管理器选择图片 + 常规的 I/O 错误。可能是存储空间不足? + 您用来选择图片的 app 没有给予足够权限支持我们读取文件。\n\n请使用另一文件管理器选择图片 未知 暂时不可用 在线 - Connecting\u2026 + 连接中\u2026 离线 未授权 未找到服务器 @@ -134,6 +148,8 @@ 用户名已存在 注册完成 服务器不支持注册 + 安全错误 + 服务器不兼容 纯文本内容 OTR OpenPGP @@ -141,11 +157,11 @@ 删除账号 暂时不可用 发布头像 - 发布 OpenPGP 公共秘钥 + 发布 OpenPGP 公钥 启用账户 确定? 如果删除用户,所有会话信息将会丢失 - Record voice 录音 + 录音 Jabber ID 密码 username@example.com @@ -153,23 +169,28 @@ 密码 确认密码 密码不一致 - 该Jabber ID 无效 - 空间不足,图片过大 + 该 Jabber ID 无效 + 空间不足。图片过大 您将添加 %s 至手机联系人列表? 在线 - 免费对话 + 自由畅聊 离开 长时间离开 请勿打扰 离线 讨论组 其他成员 + 服务器信息 + XEP-0313: MAM XEP-0280: 消息碳 + XEP-0352: 客户端状态指示 + XEP-0191: 屏蔽指令 + XEP-0237: 花名册版本 XEP-0198: 流管理 XEP-0163: PEP (头像) 有效 无效 - 缺少公共秘钥公告 + 缺少公钥通知 最近一次查看为刚刚 最近一次查看为一分钟前 最近一次查看为 %d 分钟前 @@ -178,9 +199,9 @@ 最近一次查看为一天前 最近一次查看为 %d天前 未曾查看 - 加密信息. 请安装OpenKeychain进行解码. - 未知 OTR指纹 - OpenPGP 发现加密信息 + 加密信息. 请安装 OpenKeychain 以解密。 + 未知 OTR 指纹 + 发现 OpenPGP 加密信息 接收失败 你的指纹 OTR 指纹 @@ -192,6 +213,8 @@ 加入讨论组 删除联系人 查看联系人详细信息 + 屏蔽联系人 + 解除联系人屏蔽 创建 联系人已存在 加入 @@ -200,26 +223,26 @@ 保存为书签 删除书签 该书签已存在 - 你的 + 编辑讨论组主题 讨论组未找到 离开 联系人已添加你到联系人列表 反向添加 - 目前读到%s 处 + 目前读到 %s 处 发布 - 点击头像可选择头像 - 请注意: 所有关注您最新动态的人将看到该图像. - 发布… + 点击头像可从相册中选择头像 + 请注意: 所有关注您最新动态的人将看到该图像。 + 正在发布… 服务器拒绝了您的发布请求 - 转换头像出错 - 不能将头像保存至disk + 转换头像图片出错 + 不能将头像保存至磁盘 (或长按按钮将返回默认头像) 您的服务器不支持发布头像 密谈 至 %s - 发送私密消息到%s - Connect + 发送私密消息到 %s + 连接 该账号已存在 下一步 当前会话已建立 @@ -232,21 +255,193 @@ 讨论组设有密码 输入密码 缺少在线联系人更新 - 请先发送更新在线联系人请求.\n\n这将用来判断您的联系人所用的客户端类型人. + 请先发送更新在线联系人的请求。\n\n以判断您的联系人所用的客户端类型。 现在发送请求 删除指纹 是否确定删除该指纹? 忽略 - 警告:在没有相互更新在线联系人的情况下发送将会出现未知问题.\n\n到联系人详情确认您订阅的在线联系人. + 警告:在没有相互更新在线联系人的情况下发送将会出现未知问题。\n\n前往联系人详情以验证您订阅的在线联系人。 加密设置 - 强制要求 end-to-end 加密 + 强制要求端对端加密 总是发送加密信息(讨论组信息除外) 不保存加密信息 警告:此操作将会导致信息丢失 - Expert 选项 + 导出选项 请谨慎使用 + 关于 Conversations + 构建及许可证信息 + 静默时间段 + 开始时间 + 结束时间 + 启用静默时间段 + 在静默时间段内通知将保持静音 放大字体 - 整个app界面使用更大号的字体 + 整个 app 界面使用较大的字体 发送按钮显示状态 + 请求消息回复 + 如果支持消息将会以绿色对勾标识 发送按钮采用其他颜色以示发送状态的区别 + 其他 + 讨论组名称 + 用讨论组的主题来标示讨论组而不是 JID + OTR 指纹已拷贝到剪贴板! + 你被此讨论组屏蔽 + 此讨论组只允许成员加入 + 你被从此讨论组踢出 + 用账户 %s + 正在 HTTP 托管中检查图片 + 此图片已经被删除 + 你没有连接。请稍后重试 + 检查图片文件尺寸 + 消息选项 + 拷贝文本 + 拷贝原始URL + 再次发送 + 图片 URL + 消息文本 + 已经拷贝 URL 到剪贴板 + 消息已经拷贝到剪贴板 + 图片传送失败 + 扫描二维码 + 显示二维码 + 显示屏蔽列表 + 账户详情 + 验证 OTR + 远程指纹 + 扫描 + (或轻触手机) + Socialist Millionaire Protocol + 提示或问题 + 共知的秘密 + 确认 + 处理中 + 回应 + 失败 + 秘密不符 + 再试一遍 + 完成 + 验证通过! + 联系人请求 SMP 验证 + 没有找到 OTR 会话 + Conversations + 保持前台服务 + 防止操作系统中断你的连接 + 关闭文件 + 接收中 %1$s (已完成 %2$d%%) + 下载 %s + 文件 + 打开 %s + 发送中 (已完成 %1$d%%) + 准备传送文件 + 可以下载 %s + 取消传送 + 文件传送失败 + 文件已经删除 + 没有可以打开此文件的应用 + 不能验证指纹 + 手工验证 + 你确认验证你的联系人的 OTR 指纹? + 现实动态标签 + 在联系人下方显示只读标签 + 启用通知 + 与…创建讨论组 + 无法找到讨论组服务器 + 讨论组创建失败! + 讨论组已创建! + 秘密被接受! + 重置 + 账户头像 + 拷贝 OTR 指纹到剪贴板 + 从服务器获取历史记录 + 服务器上没有更多历史记录 + 更新中… + 密码已修改! + 不能修改密码 + 要启动加密聊天先发送一条消息 + 提出问题 + 如果你和你的联系人有一个共知的秘密(比如一个内部笑话或者仅仅只是上次见面时吃的午餐) 你可以使用这个秘密来验证彼此的指纹。\n\n你的联系人将以大小写敏感的方式给出答案,你可以给出提示或问题。 + 你的联系人可以通过一个你们共知的秘密来验证指纹。你的联系人给出了如下的提示或问题。 + 你的提示不能为空 + 你共知的秘密不能为空 + 请仔细核对下面显示出来的你的联系人的指纹。\n你可以使用任何可信赖的联系方式,比如加密邮件或电话,来交换这些指纹信息。 + 修改密码 + 当前密码 + 新密码 + 密码不能为空 + 启用所有账户 + 禁用所有账户 + 做一个动作和 + 没有从属关系 + 没有角色 + 抛弃 + 成员 + 高级模式 + 已授予的成员 + 吊销的成员 + 授予管理员权限 + 吊销管理员权限 + 从讨论组移出 + 不能修改 %s 的从属关系 + 屏蔽出讨论组 + 你正尝试将 %s 移出一个公共的讨论组。唯一的方式是永远屏蔽这个用户 + 现在屏蔽 + 不能修改 %s 的角色 + 公开访问的讨论组 + 私密,只有成员可以加入的讨论组 + 讨论组选项 + 私密(只对成员开放) + 非匿名 + 讨论组选项已修改! + 不能修改讨论组选项 + 从不 + 30 分钟 + 1 个小时 + 2 个小时 + 8 个小时 + 直到新的通知 + 输入选项 + 回车是发送 + 用回车键来发送消息 + 显示回车键 + 改变表情键为回车键 + 音频 + 视频 + 图像 + PDF 文档 + Android App + 联系人 + 已经收到 %s + 禁用前端服务 + 轻触打开 Conversations + 头像已经发布! + 发送中 %s + 提供中 %s + 隐藏离线联系人 + 禁用账户 + %s 正在输入… + %s 已停止输入 + 键盘输入通知 + 让对方知道你正在输入新消息 + 发送位置 + 显示位置 + 无法找到显示位置的应用 + 位置 + 位置已收到 + Conversation 已关闭 + 离开讨论组 + 证书选项 + 不相信系统 CA + 所有证书必须人工通过 + 移除证书 + 删除人工通过的证书 + 没有人工通过的证书 + 移除证书 + 删除选项 + 取消 + + %d 个证书已被删除 + + + 选择 %d 个联系人 + From 7ccdc772edccb2cd71150441cf21dbcab7e6e7d9 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 16 May 2015 10:19:19 +0200 Subject: [PATCH 49/58] version bump to 1.4.0-beta --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index c47e6ee14..595ff0eee 100644 --- a/build.gradle +++ b/build.gradle @@ -44,8 +44,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - versionCode 64 - versionName "1.4.0-alpha3" + versionCode 65 + versionName "1.4.0-beta" } compileOptions { From fce30f22c9c75fb4bc12992e6d7e7161ce5148b1 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sat, 16 May 2015 12:49:04 +0200 Subject: [PATCH 50/58] made white space check in bodyContainsDownloadable less aggresive --- src/main/java/eu/siacs/conversations/entities/Message.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/entities/Message.java b/src/main/java/eu/siacs/conversations/entities/Message.java index a8bb9c557..38152edba 100644 --- a/src/main/java/eu/siacs/conversations/entities/Message.java +++ b/src/main/java/eu/siacs/conversations/entities/Message.java @@ -440,7 +440,7 @@ public class Message extends AbstractEntity { * "http://example.com/image.jpg text that will not be shown /abc.png" * or more than one image link in one message. */ - if (body.contains(" ")) { + if (body.trim().contains(" ")) { return false; } try { From d672d578c91f54e17b930c4a08d133095a863d52 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Sun, 17 May 2015 12:32:04 +0200 Subject: [PATCH 51/58] fixed crash on failed account registry --- src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index 6c67c0726..b0d8272de 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -683,7 +683,7 @@ public class XmppConnection implements Runnable { disconnect(true); Log.d(Config.LOGTAG, account.getJid().toBareJid() + ": could not register. instructions are" - + instructions != null ? instructions.getContent() : ""); + + (instructions != null ? instructions.getContent() : "")); } } }); From 34545aa96fc3148d7fb038109c99841ee4d16690 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 18 May 2015 08:36:37 +0200 Subject: [PATCH 52/58] added changelog for upcoming 1.4.0 release --- CHANGELOG.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae267086e..61980b618 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,12 @@ ###Changelog +####Version 1.4.0 +* send button turns into quick action button to offer faster access to take photo, send location or record audio +* visually seperate merged messages +* faster reconnects of failed accounts after network switches +* r/o vcard avatars for contacts +* various bug fixes + ####Version 1.3.0 * swipe conversations to end them * quickly enable / disable account via slider From fbc43a8d38e62fc2a3b60e7c363c8fe1e2668cc6 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 18 May 2015 03:17:14 +0200 Subject: [PATCH 53/58] don't offer initiator his own candidates --- .../siacs/conversations/xmpp/jingle/JingleConnection.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java index 6c42d3d2c..c9bb9c93b 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleConnection.java @@ -213,7 +213,7 @@ public class JingleConnection implements Downloadable { @Override public void onPrimaryCandidateFound(boolean success, - final JingleCandidate candidate) { + final JingleCandidate candidate) { if (success) { final JingleSocks5Transport socksConnection = new JingleSocks5Transport( JingleConnection.this, candidate); @@ -399,7 +399,9 @@ public class JingleConnection implements Downloadable { private List getCandidatesAsElements() { List elements = new ArrayList<>(); for (JingleCandidate c : this.candidates) { - elements.add(c.toElement()); + if (c.isOurs()) { + elements.add(c.toElement()); + } } return elements; } From 1446a59fa594be49277d1ec9d7fe023949bcfc55 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 18 May 2015 04:34:34 +0200 Subject: [PATCH 54/58] use a 20s timeout on socks5 connections --- src/main/java/eu/siacs/conversations/Config.java | 1 + .../conversations/xmpp/jingle/JingleSocks5Transport.java | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index 9f5d14fde..050116b5a 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -11,6 +11,7 @@ public final class Config { public static final int PING_MAX_INTERVAL = 300; public static final int PING_MIN_INTERVAL = 30; public static final int PING_TIMEOUT = 10; + public static final int SOCKET_TIMEOUT = 20; public static final int CONNECT_TIMEOUT = 90; public static final int CARBON_GRACE_PERIOD = 60; public static final int MINI_GRACE_PERIOD = 750; diff --git a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java index 35375a5dc..8d74f44e3 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java +++ b/src/main/java/eu/siacs/conversations/xmpp/jingle/JingleSocks5Transport.java @@ -6,7 +6,9 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.net.InetSocketAddress; import java.net.Socket; +import java.net.SocketAddress; import java.net.UnknownHostException; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; @@ -56,8 +58,9 @@ public class JingleSocks5Transport extends JingleTransport { @Override public void run() { try { - socket = new Socket(candidate.getHost(), - candidate.getPort()); + socket = new Socket(); + SocketAddress address = new InetSocketAddress(candidate.getHost(),candidate.getPort()); + socket.connect(address,Config.SOCKET_TIMEOUT * 1000); inputStream = socket.getInputStream(); outputStream = socket.getOutputStream(); byte[] login = { 0x05, 0x01, 0x00 }; From a0575c81abf9b8b56a3b47753b373218a655c608 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Mon, 18 May 2015 08:48:08 +0200 Subject: [PATCH 55/58] use same socket time out for jingle and xmpp connections --- src/main/java/eu/siacs/conversations/Config.java | 2 +- src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/Config.java b/src/main/java/eu/siacs/conversations/Config.java index 050116b5a..779cbbe86 100644 --- a/src/main/java/eu/siacs/conversations/Config.java +++ b/src/main/java/eu/siacs/conversations/Config.java @@ -11,7 +11,7 @@ public final class Config { public static final int PING_MAX_INTERVAL = 300; public static final int PING_MIN_INTERVAL = 30; public static final int PING_TIMEOUT = 10; - public static final int SOCKET_TIMEOUT = 20; + public static final int SOCKET_TIMEOUT = 15; public static final int CONNECT_TIMEOUT = 90; public static final int CARBON_GRACE_PERIOD = 60; public static final int MINI_GRACE_PERIOD = 750; diff --git a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java index b0d8272de..9bda3c096 100644 --- a/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java +++ b/src/main/java/eu/siacs/conversations/xmpp/XmppConnection.java @@ -187,7 +187,7 @@ public class XmppConnection implements Runnable { + srvRecordServer + ":" + srvRecordPort); } socket = new Socket(); - socket.connect(addr, 20000); + socket.connect(addr, Config.SOCKET_TIMEOUT * 1000); socketError = false; } catch (final UnknownHostException e) { Log.d(Config.LOGTAG, account.getJid().toBareJid().toString() + ": " + e.getMessage()); From bb603644880f0b32d8a7b54d5158f6fac678aa12 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Tue, 19 May 2015 08:31:56 +0200 Subject: [PATCH 56/58] hide block contact from context menu when server feature is not available fixed #1207 --- .../siacs/conversations/ui/StartConversationActivity.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java index a556b8b7f..7863ff945 100644 --- a/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/StartConversationActivity.java @@ -65,6 +65,7 @@ import eu.siacs.conversations.ui.adapter.KnownHostsAdapter; import eu.siacs.conversations.ui.adapter.ListItemAdapter; import eu.siacs.conversations.utils.XmppUri; import eu.siacs.conversations.xmpp.OnUpdateBlocklist; +import eu.siacs.conversations.xmpp.XmppConnection; import eu.siacs.conversations.xmpp.jid.InvalidJidException; import eu.siacs.conversations.xmpp.jid.Jid; @@ -757,14 +758,16 @@ public class StartConversationActivity extends XmppActivity implements OnRosterU } else { activity.contact_context_id = acmi.position; final Blockable contact = (Contact) activity.contacts.get(acmi.position); - final MenuItem blockUnblockItem = menu.findItem(R.id.context_contact_block_unblock); - if (blockUnblockItem != null) { + XmppConnection xmpp = contact.getAccount().getXmppConnection(); + if (xmpp != null && xmpp.getFeatures().blocking()) { if (contact.isBlocked()) { blockUnblockItem.setTitle(R.string.unblock_contact); } else { blockUnblockItem.setTitle(R.string.block_contact); } + } else { + blockUnblockItem.setVisible(false); } } } From 73a4ffefdf470be517eb32bc43bb93c3dff72b38 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 20 May 2015 03:27:52 +0200 Subject: [PATCH 57/58] added fall back package id for voice recorder plugin --- .../java/eu/siacs/conversations/ui/ConversationActivity.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java index a2a405c36..1b5e51781 100644 --- a/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java +++ b/src/main/java/eu/siacs/conversations/ui/ConversationActivity.java @@ -429,6 +429,7 @@ public class ConversationActivity extends XmppActivity break; case ATTACHMENT_CHOICE_RECORD_VOICE: intent.setAction(MediaStore.Audio.Media.RECORD_SOUND_ACTION); + fallbackPackageId = "eu.siacs.conversations.voicerecorder"; break; case ATTACHMENT_CHOICE_LOCATION: intent.setAction("eu.siacs.conversations.location.request"); From 7824c01748a89688c5f76307cc1f4221a9e2ffb5 Mon Sep 17 00:00:00 2001 From: Daniel Gultsch Date: Wed, 20 May 2015 03:36:10 +0200 Subject: [PATCH 58/58] version bump to 1.4.0 --- build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 595ff0eee..98b341d52 100644 --- a/build.gradle +++ b/build.gradle @@ -44,8 +44,8 @@ android { defaultConfig { minSdkVersion 14 targetSdkVersion 21 - versionCode 65 - versionName "1.4.0-beta" + versionCode 66 + versionName "1.4.0" } compileOptions {