From 40af2a81dbe43ec89fcfea88d33b52814074d90f Mon Sep 17 00:00:00 2001 From: Moxie Marlinspike Date: Tue, 9 Jun 2015 07:37:20 -0700 Subject: [PATCH] Support for per-recipient muting, blocking, and ringtones. Fixes #757 Fixes #354 Fixes #222 Closes #1815 Closes #3378 // FREEBIE --- AndroidManifest.xml | 8 + res/drawable-hdpi/ic_block_grey600_18dp.png | Bin 0 -> 502 bytes res/drawable-hdpi/ic_block_white_18dp.png | Bin 0 -> 484 bytes .../ic_volume_off_grey600_18dp.png | Bin 0 -> 470 bytes .../ic_volume_off_white_18dp.png | Bin 0 -> 461 bytes res/drawable-mdpi/ic_block_grey600_18dp.png | Bin 0 -> 359 bytes res/drawable-mdpi/ic_block_white_18dp.png | Bin 0 -> 355 bytes .../ic_volume_off_grey600_18dp.png | Bin 0 -> 347 bytes .../ic_volume_off_white_18dp.png | Bin 0 -> 342 bytes res/drawable-xhdpi/ic_block_grey600_18dp.png | Bin 0 -> 622 bytes res/drawable-xhdpi/ic_block_white_18dp.png | Bin 0 -> 606 bytes .../ic_volume_off_grey600_18dp.png | Bin 0 -> 543 bytes .../ic_volume_off_white_18dp.png | Bin 0 -> 532 bytes res/drawable-xxhdpi/ic_block_grey600_18dp.png | Bin 0 -> 855 bytes res/drawable-xxhdpi/ic_block_white_18dp.png | Bin 0 -> 848 bytes .../ic_volume_off_grey600_18dp.png | Bin 0 -> 754 bytes .../ic_volume_off_white_18dp.png | Bin 0 -> 745 bytes .../ic_block_grey600_18dp.png | Bin 0 -> 1149 bytes res/drawable-xxxhdpi/ic_block_white_18dp.png | Bin 0 -> 1194 bytes .../ic_volume_off_grey600_18dp.png | Bin 0 -> 921 bytes .../ic_volume_off_white_18dp.png | Bin 0 -> 911 bytes res/layout/blocked_contact_list_item.xml | 32 ++ res/layout/blocked_contacts_fragment.xml | 23 ++ res/layout/conversation_activity.xml | 7 + res/layout/conversation_list_item_view.xml | 4 +- res/layout/conversation_title_view.xml | 29 ++ res/layout/recipient_preference_activity.xml | 58 +++ res/menu/conversation_muted.xml | 5 + res/menu/conversation_unmuted.xml | 7 + res/values/arrays.xml | 19 + res/values/attrs.xml | 2 + res/values/strings.xml | 49 +++ res/values/styles.xml | 13 +- res/values/themes.xml | 17 + res/xml/preferences.xml | 3 +- res/xml/preferences_app_protection.xml | 3 + res/xml/recipient_preferences.xml | 31 ++ .../securesms/BaseActionBarActivity.java | 8 +- .../securesms/BlockedContactsActivity.java | 136 +++++++ .../securesms/ConversationActivity.java | 187 +++++++--- .../securesms/ConversationFragment.java | 4 +- .../securesms/ConversationListFragment.java | 4 +- .../securesms/ConversationListItem.java | 12 +- .../securesms/ConversationTitleView.java | 94 +++++ .../securesms/GroupCreateActivity.java | 4 +- .../securesms/GroupMembersDialog.java | 3 +- .../securesms/MessageDetailsActivity.java | 3 +- .../thoughtcrime/securesms/MuteDialog.java | 43 +++ .../PassphraseRequiredActionBarActivity.java | 29 +- .../RecipientPreferenceActivity.java | 348 ++++++++++++++++++ .../thoughtcrime/securesms/ShareListItem.java | 5 +- .../securesms/components/FromTextView.java | 11 +- .../components/PushRecipientsPanel.java | 2 +- .../components/SingleRecipientPanel.java | 2 +- .../contacts/ContactPhotoFactory.java | 5 - .../securesms/database/DatabaseFactory.java | 43 ++- .../securesms/database/GroupDatabase.java | 4 +- .../database/MmsAddressDatabase.java | 2 +- .../securesms/database/MmsDatabase.java | 6 +- .../database/RecipientPreferenceDatabase.java | 172 +++++++++ .../securesms/database/SmsDatabase.java | 6 +- .../loaders/BlockedContactsLoader.java | 21 ++ .../securesms/jobs/AvatarDownloadJob.java | 11 +- .../securesms/jobs/MmsReceiveJob.java | 20 +- .../securesms/jobs/PushReceivedJob.java | 13 +- .../securesms/jobs/SmsReceiveJob.java | 16 +- .../notifications/MessageNotifier.java | 67 ++-- .../notifications/NotificationItem.java | 5 + .../notifications/NotificationState.java | 33 +- .../AppProtectionPreferenceFragment.java | 15 + .../preferences/BlockedContactListItem.java | 53 +++ .../securesms/recipients/Recipient.java | 10 - .../recipients/RecipientFactory.java | 112 +++--- .../recipients/RecipientProvider.java | 81 +++- .../securesms/recipients/Recipients.java | 229 +++++++++--- .../sms/OutgoingEncryptedMessage.java | 4 - .../sms/OutgoingKeyExchangeMessage.java | 6 +- .../securesms/sms/OutgoingTextMessage.java | 13 +- .../util/DynamicNoActionBarTheme.java | 16 + src/org/thoughtcrime/securesms/util/Util.java | 11 + 80 files changed, 1858 insertions(+), 321 deletions(-) create mode 100644 res/drawable-hdpi/ic_block_grey600_18dp.png create mode 100644 res/drawable-hdpi/ic_block_white_18dp.png create mode 100644 res/drawable-hdpi/ic_volume_off_grey600_18dp.png create mode 100644 res/drawable-hdpi/ic_volume_off_white_18dp.png create mode 100644 res/drawable-mdpi/ic_block_grey600_18dp.png create mode 100644 res/drawable-mdpi/ic_block_white_18dp.png create mode 100644 res/drawable-mdpi/ic_volume_off_grey600_18dp.png create mode 100644 res/drawable-mdpi/ic_volume_off_white_18dp.png create mode 100644 res/drawable-xhdpi/ic_block_grey600_18dp.png create mode 100644 res/drawable-xhdpi/ic_block_white_18dp.png create mode 100644 res/drawable-xhdpi/ic_volume_off_grey600_18dp.png create mode 100644 res/drawable-xhdpi/ic_volume_off_white_18dp.png create mode 100644 res/drawable-xxhdpi/ic_block_grey600_18dp.png create mode 100644 res/drawable-xxhdpi/ic_block_white_18dp.png create mode 100644 res/drawable-xxhdpi/ic_volume_off_grey600_18dp.png create mode 100644 res/drawable-xxhdpi/ic_volume_off_white_18dp.png create mode 100644 res/drawable-xxxhdpi/ic_block_grey600_18dp.png create mode 100644 res/drawable-xxxhdpi/ic_block_white_18dp.png create mode 100644 res/drawable-xxxhdpi/ic_volume_off_grey600_18dp.png create mode 100644 res/drawable-xxxhdpi/ic_volume_off_white_18dp.png create mode 100644 res/layout/blocked_contact_list_item.xml create mode 100644 res/layout/blocked_contacts_fragment.xml create mode 100644 res/layout/conversation_title_view.xml create mode 100644 res/layout/recipient_preference_activity.xml create mode 100644 res/menu/conversation_muted.xml create mode 100644 res/menu/conversation_unmuted.xml create mode 100644 res/xml/recipient_preferences.xml create mode 100644 src/org/thoughtcrime/securesms/BlockedContactsActivity.java create mode 100644 src/org/thoughtcrime/securesms/ConversationTitleView.java create mode 100644 src/org/thoughtcrime/securesms/MuteDialog.java create mode 100644 src/org/thoughtcrime/securesms/RecipientPreferenceActivity.java create mode 100644 src/org/thoughtcrime/securesms/database/RecipientPreferenceDatabase.java create mode 100644 src/org/thoughtcrime/securesms/database/loaders/BlockedContactsLoader.java create mode 100644 src/org/thoughtcrime/securesms/preferences/BlockedContactListItem.java create mode 100644 src/org/thoughtcrime/securesms/util/DynamicNoActionBarTheme.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 85e316e953..ddaf21228e 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -226,6 +226,14 @@ + + + + diff --git a/res/drawable-hdpi/ic_block_grey600_18dp.png b/res/drawable-hdpi/ic_block_grey600_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..02982bfbe7f50ead555177465ca3d3a4032bc671 GIT binary patch literal 502 zcmV004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00C}EL_t(I%eB-!OIu+S0N{5lYAjSshyH^u{S`tngP`bM z5ITzBGfQz3Qm^_)LY6}O7+m}<)%XEM<6t};qP@BH=BAXEGe7V7;5{cve-r87v6>Z` zmLn}YmQ9UkZ|%Dkh3MKfTg4V!2;oj!=BsbodP3-^k78du3LR@|g_74@3Vo|(Y{8>& z;$2C%^Frw78S|blgcGky&_|u8F3-&r*}l*z%``wi%()V>VODc1tW}^7k`1A2GG{Bo zU11Qvqhwl7Sjt%@w8x+%IS?8-Yvol}puzLaoE-_9V^Ojt92T=}k44E|G24#teJo0j zi@hxmO>#7P?Os^S*_5uZUWpRIjfvr3vMXGguR!lzKbM%Z*n5YF;UWw&HTru*WS+-N-a sRCT!~Eoo>v)YPyzSe5^FC;uRR0-x*y&q^|(SpWb407*qoM6N<$f|%#f-v9sr literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_block_white_18dp.png b/res/drawable-hdpi/ic_block_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..71b0a088b29a42f88fac884833b896ff78de4d4b GIT binary patch literal 484 zcmV004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00CS{L_t(I%eB3mA=s@w14!Gdh_O(b@Gk|6Yr|RuH~(!q2giMTwdd zHMN?JH{}LNH!HcvN)GxfSVPl5WQ%x6HR3Z0hO{sr zS%P{23W6h4BCEw)=b+B-tC5{xqYwpKI8LW+7ouQ4owkd^LKK{)Yg_2*WN$R=5p$6Z zYGO4P1?#xe-~CGVaBU_B{c-zt#mL6q-(5E9ca94qA19!!4W=@a&hcbAYu=W$abwL; zsuAmM@#J5x=`OnjEk_bt_MLhJ7cnVomyAj@KkSk_mA9JmHrIf86;;QoD&{()@@sqY a3+DxJU5wb)n=EAj0000004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00B-(L_t(I%f-~OO2beT#_?0EgS$2v1?!*>AUHIYj+Q=% z;-vgX;kt`)nRM%gN3$`Bu+LBuYCaEWqU&Jq~dOwUkyzhMcSMG*QZ z-Eww9m_nh#%g?(dNj^EuP;;P9gtDAh9OE#_z$RBkeKQWr!fJ6%jl%?=H|LIp?KYNG zXmOWGwPYz63_{bAUMAJTU6Qo>mX@v6N7D1MWi!u`(~kDE7v7)d3%JPx-x-B8zyJUM M07*qoM6N<$f-CE~UH||9 literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/ic_volume_off_white_18dp.png b/res/drawable-hdpi/ic_volume_off_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a22789739b37277a39851a3b657d253696e9b1af GIT binary patch literal 461 zcmV;;0W$uHP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00BiwL_t(I%f-|&OB_KM2H;OLMSAtN6rx4^0Ran7v5fdb zBB`_vjD3h!c7mAv0zpX11Z^RHd2P7f9aRR>QFn{#` zp6Li({gQ>S=>}iMC0RHh!e!gp$$Rj2+z+T=AxsHfdnSeO4L?WON59Mck0Bf+`AG;% z;B}oH8eIc8@5+sNA^gF+HpaO^Sk|{Cgk$WsvkG?0OpkEz5LUq#LO8)*JKNVA!Z6|Q z-MdvuUSuqp&0wLAg>l768H*ZR@wKUMDPwgw)m+n*u~4|o?%3GwRI&+cPHU;Q422{K zDI(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6uj^0;uxZFzV(tLS5tt%v5)MIm#o$ri+FO#seV+cKP9}S&5$wzOBvom1qh_LM*A%Yn3nUab2)K3#NKR3(5L;9r5N29+X|upl zhQymav!gpCw;P;Tnv|{h?D63$R(6x;`i~Z$oMqd)LrKPZ$pQoOHS^P^WCS_Mu(d47 z;97QDq9vm655z_vgzS_o4+f>AGAF=>2bzg7wA<6Pgg&ebxsLQ0HCUf A5&!@I literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_block_white_18dp.png b/res/drawable-mdpi/ic_block_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..04635612ea29e4203274120322f05bd15afe87a7 GIT binary patch literal 355 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|m6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6uj-};uxZFzV(uC)}a6qwhImm4{q#Sx6oCSar&YZ%~xDj6SnoaUTKsTuAio$=;Y6? zc;tx3ec8Ro8-MS(&&%>Z{I8Vv*|SR*m0j6h96axi+xpHny>((j3&T6}XKp@d`)apE z#pXoaBiz(-G-@=(>2OAS18P9^4__^L35IrkVIn80?R{ULL7$L7uQc06MB&l zwe@#~qU-L$Mx~wW#e!<~ME4~qZ?0Exo*8Poe4g<(-l7s6Bc1tden#HP3;QN6J#(?z x_`!{+I`I#yZngYc<)W6h?AWgJ-(PzEWh~t{xgjxpWi!y544$rjF6*2UngA{bhqM3y literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_volume_off_grey600_18dp.png b/res/drawable-mdpi/ic_volume_off_grey600_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..db6550370c8ec3c0bd4412cfb1457036cafb7e69 GIT binary patch literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|m6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6uj)|;uxZFK3OAGfk(0(ALpe-FRqC?O=V@w zYzx|U>B*(Gj+*sRxQ|+w7_V>&Up?-yeGGG!Q-}Gq>y1Xo1^L6evdJDSDaZHtM6sN$5w-rZ~)l>8Pfnjhf3(XD{lB&w{*H06;W o>$j!X60A0d^d4E_#K6Rm==fCqy;RA4p!XO&UHx3vIVCg!0NGuBSpWb4 literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/ic_volume_off_white_18dp.png b/res/drawable-mdpi/ic_volume_off_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..463011650021a1002a2ccad4a3ffdbf3b51e6de2 GIT binary patch literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^LLkh+0wn(&ce?|m6p}rHd>I(3)EF2VS{N990fib~ zFff!FFfhDIU|_JC!N4G1FlSew4N!t9$=lt9;eUJonf*W>XMsm#F#`j)FbFd;%$g$s z6g=nY;uxZFe(I%#e$0*nY!6OyddTuSXh{q4%wvgKrS(wMBO}YBfA#YMkBX*GY+E0A z$l9>);}BTEe{fRsH@#Nbt&{bwXa5mSsy%xDV&B8{W&ZV|yc3sSn_AGh^V_E#HXDUo zc$bUC?Th@H(a1eBbJzQ*8UJ0XckN2kNO8(jnDcOjQ~#=9j^}Z?H@`gFCTBQtrj^*d zJLU`Zx9QrLFE&(jI=y@L)BbpMk004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00HJnL_t(Y$JN$BOB+EH!0~Z6i6F=#^iahQBSjGuJ(M;y z`Z@kL5s|9(A_k-M)PtuW^kam4ineO0nAIsD?pv?DL2?;({r^zR_w0sW9I(thHDccL zfkXae*ILA7P|QzF{LLq#!gC`U+-Sy?P1%W~x4C3yViOYnY1a89sG$kpO4=OpW2{#t?ChAgtR^ z3qd&WW(1C;rk-cZyXJ@$7N{`IBC8x{Ul5_0e~jzp>st0naW`I@ z@=tccuI{URr0l$O%I_zl$~sLt^yt&4M~73^M%(Xg{~ra$Gk%+tOR{N>e*gdg07*qo IM6N<$f@OpV-2eap literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/ic_block_white_18dp.png b/res/drawable-xhdpi/ic_block_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..13f716d7fbe951ead7368ab7ea62179f48f2281c GIT binary patch literal 606 zcmV-k0-^nhP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00GuXL_t(Y$JN$BN*qBH#_>vzGlC$EkVO;^6M`Zrx(LaT z(W{7v#27ch!7*f&g)0$q4Dl36)DY1z7tlq1Sxh;xXL>r_kd0N#{`z0_-mCXj1>yh9 z@Q6SSD>_bf-MQ0sYTvSYHPDnTzvPV@o6@qNmad|4rTK4A&8PkkUu~N+t)b?b7vA~a z|JG3}0@Zwp!f#$lhSp8AoJYlR7L^s=@8;0N$RebEM%BS6P%8@F7nC{i`9Zdtd7!D7 z;=@vyA2IFeFla00W}*bN#s-^q6P!y+VJ2h$ zuMc;B>I(X{RfGwSz@^DNV{1OJtYXZEsCqfdYCC<~N(+KIimG;z`5#Bog|!?@sacJN z#!>eBu=JoG-kBZqW{ep(Yr$^+2BAH;Oy1_3G3}$q<-^<*U)iaRc&-LV*ZSW|m3u_g sEonP(?bfYpC-yAfAHT=_KB_qX0GDS^7@du<0RR9107*qoM6N<$g2#0Or~m)} literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/ic_volume_off_grey600_18dp.png b/res/drawable-xhdpi/ic_volume_off_grey600_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..3a074ee278228ca90c7a1a988878134456466468 GIT binary patch literal 543 zcmV+)0^t3LP)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00EatL_t(Y$L-d=N<%Re!0}vAQ1l7>0tdm-(dkk*!Nr%T z)>Zf`=n@t8x;QvUL2z|&s5mHHTy+p1Kzsrbp+)a;Xxf|HTudr%N`@vS{AkWOoKuDR zou&Q;l#qUVc`Ob}I3c6@&E*bFR!KroN`{nDd*)LRgnJf4Pg^t8nsa3zF}qJgeXt!0 zwoe@(eQ1JxUJX_cWo_M|hPk#Ng<_H$Lv4l9Uo+G?3dJbb4x||3+&pkGR7XCg3e>F$ zdlD+hjRMvEw#AIuP4R{xtd>C)w6z`)gp8WS3om`@5J6~`LD~e-T{a~MEwi5{L+CIb z3)xgRgG=W0;G7~LA!EbJ;E}n1iXbM6k&sJWIZ@gf46>~vmog&(URB6~F#*y}* zd7hoRik@rQf@Z1H_DVE*K004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00E3iL_t(Y$L-d=N<%Re!0}vAsOS^;1rCCvW2Z~q1ed-< zzg7nYU1G((E)EV-5L_J`Djk$At~!VhAU=VJ(4zP6aMRx8CYW4t(`0B;!jI;ha83o{ zcc%CoP(=Lg;n^@K;*^BiH-|^`s1o_0m;{{Ef%;6xJ!Rk3>WZoxN7|rPpNjfm*B5M? zI)n){Pn%bTb$nTC7}PX<4H5_zxKY%OFa1qLH4q49=o^q=iVJnYvhN+)l*m!HD(sQ( zLAG*K`t5*awOZs2fT|0sAhr1jKtfaF;blS{0nl?n64%fvfPq>skpLs+LLr?>Gq|C4 z55_J4f`pcq!DDs)3_wLO5HhK2BT9S4Af4Jap#7r1D5J)+3y`HE45~S(CjctNAYoCf z01UHY=YEh~3(8Yz2Cw`zTUwBd+6pQD(t`3-DYT173lh$-2ecz;L2Eo4?<%;jNex<| z!_a!7!3|PQpz#=SZeK8@i%J8!V_j<#@lRUzJC|%41^FZ^wnd;)ZXf$=_W%DQeSQJ+ WfKQ$DcJinI0000004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00PfRL_t(o!|m8jOB+EL!0~D0%Rz+_f}g;Gm7>OojijHT z1Y1D}21RX8CCTxB(7RGk1tACT7IG3i*n@(1MZsEc6~!v0(6d%hn;z6>XS1)_-Fhf8 zCo}Wx&z*VZZ58VNih98AA8VtZJSAqBp+ug3TK@%>VxAqYsn(Qhw)sF`R9GYL*ta0H zWsgZ3!eS#FdqQ{Rh~eN^JFC8-yRt$e2$tbT&4UgoGfFRUnt03;o|9vNgPK;S4AzSc z@mqVq6-%TY|E)BixYAmmldT6EG6jF8!!wPZv8F{_+H>|DXuQ=KQ@-a>(e!p{KUljq zRzFGlrW#o`jopbgRjfg)8uc_Vb(5JM*ofAF$xu|4DzDwJMr{gD1*9t4*d3Zz6?52I zEdzs6F%;|a_k=UHFY~G+1f}SbCHspLmXe^QP?SPZkzaf4v3Y5b4oN98^81`UwsTwk zEi|Q29NyM!*rLRXhx6~hrfKrUPrGBeS z>W>jnibc0ct=M*0u7XgHIJ#}W>9r8Q2uUekO2n)^)@QTD1f%pVrrT-r{3`w28HzGC z&t2!8dQu*|7J^c2NYuD9)*!=Lr5KocuiXw}Zb!Lc+ap;$)BqO}m-RZNu7sjG`6Y47 z-Y4P&ry<_TppLCum0idn=NeY5W2`Q;^Ynn3Oj967 h(%6L`zBm4#*k9;84{+004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00PKKL_t(o!|j+)OB+EHz^6^32P2da`~()P6g4U~Vn0C% zwt^50irSt^;s?;XQcs0K4&E)~BzUj~1@DT2wcZ*OtCT{|T0zra52kNtvwyR@^-!Fg zvh&{lcHY04HwtxkKXnhgdssVz6qsXy1?DI)Nb+C623TgF8jYjI9`ERn3YOpvM|h1x zW{8J{jdP0Mal%+|SO*(4JJv}DfsOFJ;YC%-OwdP)79R45r{wuSwL$8f;bvi@{L)@< z!zx+F&&u+V8%_F>Tr;pylkz7zJ;Ue;o0`V8J%yTevt8v zO0Z_~-I+C1tV$ai>TzJyZDe}D#x(LRr$Xj7^GMS11rAUcP(F$9T z$(9IEikL{vJHviQf>N})!3;AdBS0zAZe}zBq$>iHUXSu_p+6o0N-^mc`bkOZ_Yt5J zD{e`x*mEdXK~N7ksmt$p72;xTXg#f_H9$k^rD$&FlSm_jS3?!)uLj$ zN4T&@xwW}j&Kd&cm@)-=ND-rzGy_bsq9x1i_-1E7?*=|?6PaFP&Fuu^<%?Hx*z_J% zr(W9srAwS?4n08!OnIk>->~jwiCt4$|F>lCu&7t|=q}3I$dISVJo6OElQDMT`}@ZK a6ZQw?iZimFf-hnK0000004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00L@BL_t(o!|m9=PZU8E2k=F(B9cok5UmLbL4(F%Lqaqd zC?J#+YV_b*OZ_SkFr)q*HYA2XgY}UBC6JI9CH|$_l8|<=%oU7=f^e4%t1^xq{`CcOVU$H!#9?^vGtTk9!{;sqJ6E zeXMXif$$6cvgd5d!9C|L&G=i`Ft~2nLv82s_-w@jwBQ9!nfr-rvJ5hL|nv~m8<;%=8R5Tu+H35dDhptX=}PFpoKlt_w68T zEv3awt`lFw)&;GfrLgTNJw~XY7~^)eeqM28K0QV_Gq^nvPSK{lziV;*SzspDg*^~% z@ct-A4Q7MIxeM$e#|&kKMLF9r-p&H6Sh$OAmgBmzzzSY&H9U5h#ndO`;~~mjm86PM9!!6mN4ZDIN+#vOTwGrMS>WP= z2DlW(pz>h)$AgEH6m!ahwPDSg#8Q;G%7NX(t}|z*sHs(~uo%WC9>O}DyfRkal4;*} z?~)Ya%2^D4K)Y|MB&+*vW$rhO#AasMTzN>l+)%}~@z{8TtK1>(X1nMzi5ctCL=ojE k^)FX=a?ORZCiXvL=Uw#>dK_;-bpQYW07*qoM6N<$f-JOJT>t<8 literal 0 HcmV?d00001 diff --git a/res/drawable-xxhdpi/ic_volume_off_white_18dp.png b/res/drawable-xxhdpi/ic_volume_off_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..f3bd44fc49495232bf8c76896cf4ae7aa8416b5f GIT binary patch literal 745 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 literal 0 HcmV?d00001 diff --git a/res/drawable-xxxhdpi/ic_volume_off_white_18dp.png b/res/drawable-xxxhdpi/ic_volume_off_white_18dp.png new file mode 100644 index 0000000000000000000000000000000000000000..9f44de0527e2fddf7be8ff86dbd1932c169e4b56 GIT binary patch literal 911 zcmV;A191F_P)004R> z004l5008;`004mK004C`008P>0026e000+ooVrmw00002VoOIv0RM-N%)bBt010qN zS#tmY3ljhU3ljkVnw%H_00Rd}L_t(&-tE~tXjDNI2H7SXd~y+NhvlBLP7{ zP>X1G1Hm9@BS9?GLX=cvf+99*CqBSR34yeBrmzsi_&@{|AwHs_g&=~;?wa31H#_e+ zduL_|a%ZcZnS1%zojd2;ISg!eeOM04K{+S~%~DW1M$nV_wi{!E+A#*8l9>d2#8qs= zoH(Gr90ZW+?IjLlUN~q3jYcJLBM1QAVSgy7gi4d7Gk_HY0OME{wuV$v$;)wrfN$sv zd&=mfp?`D4zF#o4bCgAHA1a|rAPvvV5PLgu2oDXU8z_WqjDFIvFs@&}6B8QgX4p>c zCN0AUCy1edjL$cptDefyz+?uf9>LX2g zKnx2N(%sN#?)$Q?Mmwk=db5%0?UXk1NVxi1e2|S) zZ#8W#4G7nMHZA^8keSqIPm~DXDgEi2Q-DmQ_rj=}-i^DTv=|_rR1`>eEcp`vTu%i8 zs_3f4Z89auP8yJU7YkQ>O$)M-2Bp3ZDZfe#GLr_C0Mcl` z(}PT;J<|6@!rbqz0O=(8v%Xb}xL$KH(s&H17Za002ovPDHLkV1fcdhLQjP literal 0 HcmV?d00001 diff --git a/res/layout/blocked_contact_list_item.xml b/res/layout/blocked_contact_list_item.xml new file mode 100644 index 0000000000..69c10cc10b --- /dev/null +++ b/res/layout/blocked_contact_list_item.xml @@ -0,0 +1,32 @@ + + + + + + + + + diff --git a/res/layout/blocked_contacts_fragment.xml b/res/layout/blocked_contacts_fragment.xml new file mode 100644 index 0000000000..71859fcc46 --- /dev/null +++ b/res/layout/blocked_contacts_fragment.xml @@ -0,0 +1,23 @@ + + + + + + + + \ No newline at end of file diff --git a/res/layout/conversation_activity.xml b/res/layout/conversation_activity.xml index 2b60633d73..a5dcc2ae44 100644 --- a/res/layout/conversation_activity.xml +++ b/res/layout/conversation_activity.xml @@ -131,6 +131,13 @@ +