From 54dbffaf300c8c29ce61e756ad7d2f9cbc2a776e Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Thu, 26 Apr 2018 17:03:54 -0700 Subject: [PATCH] Added ability to share contacts. The "contact" option in the attachments tray now brings you through an optimized contact sharing flow, allowing you to select specific fields to share. The contact is then presented as a special message type, allowing you to interact with the card to add the contact to your system contacts, invite them to signal, initiate a signal message, etc. --- AndroidManifest.xml | 8 + build.gradle | 18 +- res/drawable-hdpi/baseline_email_white_24.png | Bin 0 -> 268 bytes res/drawable-hdpi/message_24dp.png | Bin 0 -> 635 bytes res/drawable-hdpi/phone_24dp.png | Bin 0 -> 709 bytes res/drawable-hdpi/video_24dp.png | Bin 0 -> 411 bytes res/drawable-mdpi/baseline_email_white_24.png | Bin 0 -> 209 bytes res/drawable-mdpi/message_24dp.png | Bin 0 -> 427 bytes res/drawable-mdpi/phone_24dp.png | Bin 0 -> 476 bytes res/drawable-mdpi/video_24dp.png | Bin 0 -> 258 bytes .../baseline_email_white_24.png | Bin 0 -> 322 bytes res/drawable-xhdpi/message_24dp.png | Bin 0 -> 895 bytes res/drawable-xhdpi/phone_24dp.png | Bin 0 -> 955 bytes res/drawable-xhdpi/video_24dp.png | Bin 0 -> 551 bytes .../baseline_email_white_24.png | Bin 0 -> 419 bytes res/drawable-xxhdpi/message_24dp.png | Bin 0 -> 1443 bytes res/drawable-xxhdpi/phone_24dp.png | Bin 0 -> 1477 bytes res/drawable-xxhdpi/video_24dp.png | Bin 0 -> 801 bytes .../baseline_email_white_24.png | Bin 0 -> 532 bytes res/drawable-xxxhdpi/message_24dp.png | Bin 0 -> 2035 bytes res/drawable-xxxhdpi/phone_24dp.png | Bin 0 -> 2028 bytes res/drawable-xxxhdpi/video_24dp.png | Bin 0 -> 1208 bytes res/drawable/baseline_email_24.xml | 10 + .../shared_contact_view_background.xml | 6 + res/layout/activity_contact_share_edit.xml | 20 + res/layout/activity_contact_share_select.xml | 8 + .../activity_shared_contact_details.xml | 159 +++++ res/layout/conversation_item_received.xml | 7 + res/layout/conversation_item_sent.xml | 7 + .../conversation_item_shared_contact.xml | 6 + res/layout/item_editable_contact.xml | 43 ++ res/layout/item_selectable_contact_field.xml | 50 ++ res/layout/shared_contact_view.xml | 84 +++ res/values-sw320dp/dimens.xml | 2 +- res/values-sw480dp/dimens.xml | 5 + res/values/attrs.xml | 3 + res/values/colors.xml | 1 + res/values/dimens.xml | 3 + res/values/strings.xml | 28 + res/values/styles.xml | 15 + res/values/themes.xml | 6 + .../securesms/BindableConversationItem.java | 8 +- .../securesms/ConversationActivity.java | 114 +-- .../securesms/ConversationFragment.java | 64 +- .../securesms/ConversationItem.java | 88 ++- .../securesms/attachments/AttachmentId.java | 7 +- .../components/SharedContactView.java | 178 +++++ .../components/emoji/EmojiStrings.java | 5 + .../securesms/contacts/ContactsDatabase.java | 110 +++ .../contacts/avatars/ContactPhoto.java | 7 + .../avatars/GroupRecordContactPhoto.java | 12 + .../contacts/avatars/ProfileContactPhoto.java | 12 + .../contacts/avatars/SystemContactPhoto.java | 11 + .../securesms/contactshare/Contact.java | 655 ++++++++++++++++++ .../contactshare/ContactFieldAdapter.java | 193 ++++++ .../contactshare/ContactModelMapper.java | 170 +++++ .../contactshare/ContactRepository.java | 272 ++++++++ .../ContactShareEditActivity.java | 120 ++++ .../contactshare/ContactShareEditAdapter.java | 99 +++ .../ContactShareEditViewModel.java | 92 +++ .../securesms/contactshare/ContactUtil.java | 218 ++++++ .../securesms/contactshare/Selectable.java | 6 + .../SharedContactDetailsActivity.java | 259 +++++++ .../database/AttachmentDatabase.java | 14 +- .../securesms/database/MmsDatabase.java | 164 ++++- .../securesms/database/MmsSmsDatabase.java | 10 +- .../database/helpers/SQLCipherOpenHelper.java | 7 +- .../database/model/MediaMmsMessageRecord.java | 5 +- .../database/model/MmsMessageRecord.java | 15 +- .../model/NotificationMmsMessageRecord.java | 3 +- .../securesms/groups/GroupManager.java | 3 +- .../groups/GroupMessageProcessor.java | 3 +- .../securesms/jobs/PushDecryptJob.java | 81 ++- .../securesms/jobs/PushGroupSendJob.java | 3 + .../securesms/jobs/PushMediaSendJob.java | 10 +- .../securesms/jobs/PushSendJob.java | 62 +- .../securesms/mms/IncomingMediaMessage.java | 15 +- .../mms/OutgoingExpirationUpdateMessage.java | 3 +- .../mms/OutgoingGroupMediaMessage.java | 11 +- .../securesms/mms/OutgoingMediaMessage.java | 35 +- .../mms/OutgoingSecureMediaMessage.java | 7 +- src/org/thoughtcrime/securesms/mms/Slide.java | 1 - .../AndroidAutoReplyReceiver.java | 3 +- .../notifications/MessageNotifier.java | 13 + .../notifications/RemoteReplyReceiver.java | 3 +- .../securesms/recipients/Recipient.java | 7 +- .../securesms/util/CommunicationActions.java | 79 +++ .../securesms/util/JsonUtils.java | 3 + .../securesms/util/MediaUtil.java | 2 - .../securesms/util/SingleLiveEvent.java | 72 ++ 90 files changed, 3628 insertions(+), 195 deletions(-) create mode 100755 res/drawable-hdpi/baseline_email_white_24.png create mode 100644 res/drawable-hdpi/message_24dp.png create mode 100644 res/drawable-hdpi/phone_24dp.png create mode 100644 res/drawable-hdpi/video_24dp.png create mode 100755 res/drawable-mdpi/baseline_email_white_24.png create mode 100644 res/drawable-mdpi/message_24dp.png create mode 100644 res/drawable-mdpi/phone_24dp.png create mode 100644 res/drawable-mdpi/video_24dp.png create mode 100755 res/drawable-xhdpi/baseline_email_white_24.png create mode 100644 res/drawable-xhdpi/message_24dp.png create mode 100644 res/drawable-xhdpi/phone_24dp.png create mode 100644 res/drawable-xhdpi/video_24dp.png create mode 100755 res/drawable-xxhdpi/baseline_email_white_24.png create mode 100644 res/drawable-xxhdpi/message_24dp.png create mode 100644 res/drawable-xxhdpi/phone_24dp.png create mode 100644 res/drawable-xxhdpi/video_24dp.png create mode 100755 res/drawable-xxxhdpi/baseline_email_white_24.png create mode 100644 res/drawable-xxxhdpi/message_24dp.png create mode 100644 res/drawable-xxxhdpi/phone_24dp.png create mode 100644 res/drawable-xxxhdpi/video_24dp.png create mode 100755 res/drawable/baseline_email_24.xml create mode 100644 res/drawable/shared_contact_view_background.xml create mode 100644 res/layout/activity_contact_share_edit.xml create mode 100644 res/layout/activity_contact_share_select.xml create mode 100644 res/layout/activity_shared_contact_details.xml create mode 100644 res/layout/conversation_item_shared_contact.xml create mode 100644 res/layout/item_editable_contact.xml create mode 100644 res/layout/item_selectable_contact_field.xml create mode 100644 res/layout/shared_contact_view.xml create mode 100644 res/values-sw480dp/dimens.xml create mode 100644 src/org/thoughtcrime/securesms/components/SharedContactView.java create mode 100644 src/org/thoughtcrime/securesms/components/emoji/EmojiStrings.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/Contact.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/ContactFieldAdapter.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/ContactModelMapper.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/ContactRepository.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/ContactShareEditActivity.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/ContactShareEditAdapter.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/ContactShareEditViewModel.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/ContactUtil.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/Selectable.java create mode 100644 src/org/thoughtcrime/securesms/contactshare/SharedContactDetailsActivity.java create mode 100644 src/org/thoughtcrime/securesms/util/CommunicationActions.java create mode 100644 src/org/thoughtcrime/securesms/util/SingleLiveEvent.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index ca5532c282..1f91738484 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -403,6 +403,14 @@ + + + + diff --git a/build.gradle b/build.gradle index a27436c4fa..e799d98123 100644 --- a/build.gradle +++ b/build.gradle @@ -64,6 +64,7 @@ dependencies { compile 'com.android.support:gridlayout-v7:27.0.2' compile 'com.android.support:multidex:1.0.2' compile "com.android.support:exifinterface:27.0.2" + compile "android.arch.lifecycle:extensions:1.1.1" compile 'com.google.android.gms:play-services-gcm:9.6.1' compile 'com.google.android.gms:play-services-maps:9.6.1' @@ -75,7 +76,7 @@ dependencies { compile('org.whispersystems:libpastelog:1.1.2') { exclude group: 'com.squareup.okhttp3', module: 'okhttp' } - compile 'org.whispersystems:signal-service-android:2.7.5' + compile 'org.whispersystems:signal-service-android:2.7.6' compile 'org.whispersystems:webrtc-android:M64' compile "me.leolin:ShortcutBadger:1.1.16" @@ -158,13 +159,14 @@ dependencyVerification { 'com.android.support:gridlayout-v7:227b5fdffa20f53bd562503aab6d2293d52cf64b5a6ab1116d2150f87bff9e88', 'com.android.support:multidex:7cd48755c7cfdb6dd2d21cbb02236ec390f6ac91cde87eb62f475b259ab5301d', 'com.android.support:exifinterface:0e7cd526c4468895cd8549def46b3d33c8bcfb1ae4830569898d8c7326b15bb2', + 'android.arch.lifecycle:extensions:429426b2feec2245ffc5e75b3b5309bedb36159cf06dc71843ae43526ac289b6', 'com.google.android.gms:play-services-gcm:312e61253a236f2d9b750b9c04fc92fd190d23b0b2755c99de6ce4a28b259dae', 'com.google.android.gms:play-services-places:abf3a4a3b146ec7e6e753be62775e512868cf37d6f88ffe2d81167b33b57132b', 'com.google.android.gms:play-services-maps:45e8021e7ddac4a44a82a0e9698991389ded3023d35c58f38dbd86d54211ec0e', 'com.google.android.exoplayer:exoplayer:955085aa611a8f7cf6c61b88ae03d1a392f4ad94c9bfbc153f3dedb9ffb14718', 'org.whispersystems:jobmanager:506f679fc2fcf7bb6d10f00f41d6f6ea0abf75c70dc95b913398661ad538a181', 'org.whispersystems:libpastelog:fe56b4db9ec743c8b565e3e4caa9228fafe132dc0bf82000d6e359b97a81177c', - 'org.whispersystems:signal-service-android:e0a3d55b21c1db483818ed459c500eba96dfb839e70d95dca4d8d4c1a7cd816b', + 'org.whispersystems:signal-service-android:823eed29e64fb0aa30d2078cb5ec0245e2a0713a4028121329c5c28788ef27f8', 'org.whispersystems:webrtc-android:ed297e8b795dad9658cf306c2aa0f7d296c65f0997a2ac4353fd0157910acc12', 'me.leolin:ShortcutBadger:e3cb3e7625892129b0c92dd5e4bc649faffdd526d5af26d9c45ee31ff8851774', 'se.emilsjolander:stickylistheaders:a08ca948aa6b220f09d82f16bbbac395f6b78897e9eeac6a9f0b0ba755928eeb', @@ -200,17 +202,23 @@ dependencyVerification { 'com.android.support:support-media-compat:6dd9327ee9aa467cab479aad97df375072b2b6ba61eadffdaa5a88de3843c457', 'com.android.support:support-vector-drawable:bf4f4fcbf58b1380616581224e6487c230bfdb3434ec353d4adaa4b1f4865cfa', 'com.android.support:support-compat:ed4d25d91a0b13d8b9def1c0de69ed03d7fb89d50fb37eb0e9b63b0cf7a42357', + 'android.arch.lifecycle:livedata:50ab0490c1ff1a7cfb4e554032998b080888946d0dd424f39900efc4a1bcd750', + 'android.arch.lifecycle:livedata-core:d6fdd8b985d6178d7ea2f16986a24e83f1bee936b74d43167c69e08d3cc12c50', + 'android.arch.core:runtime:c3215aa5873311b3f88a6f4e4a3c25ad89971bc127de8c3e1291c57f93a05c39', + 'android.arch.lifecycle:runtime:c4e4be66c1b2f0abec593571454e1de14013f7e0f96bf2a9f212931a48cae550', + 'android.arch.core:common:3a616a32f433e9e23f556b38575c31b013613d3ae85206263b7625fe1f4c151a', + 'android.arch.lifecycle:common:8d378e88ebd5189e09eef623414812c868fd90aa519d6160e2311fb8b81cff56', + 'android.arch.lifecycle:viewmodel:7de29cfaba77d6b5d5be234c57f6812d0150d087e63941af22ba1d1f8e2bc96a', 'com.github.bumptech.glide:gifdecoder:59ccf3bb0cec11dab4b857382cbe0b171111b6fc62bf141adce4e1180889af15', 'com.android.support:support-annotations:af05330d997eb92a066534dbe0a3ea24347d26d7001221092113ae02a8f233da', 'org.whispersystems:signal-protocol-android:5b8acded7f2a40178eb90ab8e8cbfec89d170d91b3ff5e78487d1098df6185a1', - 'org.whispersystems:signal-service-java:7b4c34e3a346a236caebd5b81fb2985ed3c91a9974a8a8ddd36b6e1b8ae9350a', + 'org.whispersystems:signal-service-java:6169643c65dcba8c784744006fc3afd9b6f309041b310a33a624121e3577433a', 'com.github.bumptech.glide:disklrucache:c1b1b6f5bbd01e2fcdc9d7f60913c8d338bdb65ed4a93bfa02b56f19daaade4b', 'com.github.bumptech.glide:annotations:bede99ef9f71517a4274bac18fd3e483e9f2b6108d7d6fe8f4949be4aa4d9512', 'com.nineoldandroids:library:68025a14e3e7673d6ad2f95e4b46d78d7d068343aa99256b686fe59de1b3163a', 'javax.inject:javax.inject:91c77044a50c481636c32d916fd89c9118a72195390452c81065080f957de7ff', 'com.klinkerapps:logger:177e325259a8b111ad6745ec10db5861723c99f402222b80629f576f49408541', 'com.google.android:flexbox:a9989fd13ae2ee42765dfc515fe362edf4f326e74925d02a10369df8092a4935', - 'android.arch.lifecycle:runtime:d0b36278878c82b838acc4308595bec61a3b5f6e7f2acc34172d7e071b2cf26d', 'org.whispersystems:curve25519-android:82595394422b957d4a5b5f1b27b75ba25cf6dc4db4d312418ca38cd6fff279ca', 'org.whispersystems:signal-protocol-java:5152c2b01a25147967d6bf82e540f947901bdfa79260be3eb3e96b03f787d6b5', 'com.google.protobuf:protobuf-java:e0c1c64575c005601725e7c6a02cebf9e1285e888f756b2a1d73ffa8d725cc74', @@ -218,8 +226,6 @@ dependencyVerification { 'com.fasterxml.jackson.core:jackson-databind:835097bcdd11f5bc8a08378c70d4c8054dfa4b911691cc2752063c75534d198d', 'com.squareup.okhttp3:okhttp:7265adbd6f028aade307f58569d814835cd02bc9beffb70c25f72c9de50d61c4', 'com.madgag.spongycastle:prov:b8c3fec3a59aac1aa04ccf4dad7179351e54ef7672f53f508151b614c131398a', - 'android.arch.lifecycle:common:ff0215b54e7cbaaa898f8fd00e265ed6ea198859e10604bc1c5e78477df48b5c', - 'android.arch.core:common:5192934cd73df32e2c15722ed7fc488dde90baaec9ae030010dd1a80fb4e74e1', 'org.whispersystems:curve25519-java:7dd659d8822c06c3aea1a47f18fac9e5761e29cab8100030b877db445005f03e', 'com.fasterxml.jackson.core:jackson-annotations:0ca408c24202a7626ec8b861e99d85eca5e38b73311dd6dd12e3e9deecc3fe94', 'com.fasterxml.jackson.core:jackson-core:cbf4604784b4de226262845447a1ad3bb38a6728cebe86562e2c5afada8be2c0', diff --git a/res/drawable-hdpi/baseline_email_white_24.png b/res/drawable-hdpi/baseline_email_white_24.png new file mode 100755 index 0000000000000000000000000000000000000000..bf0403296e413cf0e25465dadf6e41b14eeba9ec GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8LpWltB!kP61P7Z}+N1;`x#SkJmd zc!@EKtWw7=&$$Y1Aq(7a+|0nYQrd;)bP5d_=|IGXCIoGtqW2Khr zqEusTr`+5Vg0Iq?^%>MeoBB9cDX2L0&$at)d-JlWCckEz$`2JD*Qsq57q17mTk?0^ ziM(*ly4LThVzr@~zFyTt-o4!RwOx;2pE~nzmwn2yKfUwqAM;1{ZPak!~WZhzll Q2=pFmdKI;Vst0E&TR(f|Me literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/message_24dp.png b/res/drawable-hdpi/message_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..3b823f14d630bc76d8a55635116260b057e54b1d GIT binary patch literal 635 zcmV->0)+jEP)Px%HAzH4R9Fe^n7c0oQ51)FPzxgQNQgq>RZvJI3W-Lk)=&znt+o(_N2Mh3N6>0e z5($Z7Be85ESt7`WMu^5^eZP$>H#->1?%XY$m`O=87U?AVW>aGbU#7P~wBEfm=&icRoI{0SS%GY2^K(%(mAW-O%k zl{|es9uAZ*3j~ZH1S2RHCKy4znre(Q;0i_sP;N1NR475eLjw*iL4~?Jma7|xxI+*- zb&r;8#2#_n9}!TGV+cEawn9zzh~s{fuAw_1DjkEE^mke^bL*Qym#rt5YnKE$xi18y zx4TlYEYNPL(7nV!Dwx|!p3_#KvGR?fnZCYJBwuSX7q8n+R zWty{-`}$PpD1-`Kl4H=9Ja+)6;UdF45`P)h=H~Vt<5Z5mtIiAO*U%}-*V0VTZ+d+t z2{dyJP2t)3h4(GvqpbIa&J$RE!>AAGb4&xOM|!5+Abpb2hP{I}QJlHDwSQ(LXhRPu z*Yx{)2~`J0!be+B_8}YO8+e{Td&ssV2Q#Q8aB>kG^q=Vot))9dDaxyj_TNke-T;QP V_~AJE#s~la002ovPDHLkV1lM_8F>Hz literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/phone_24dp.png b/res/drawable-hdpi/phone_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c392ccd3bc1869c94b6ae939aa4f3548e9ee3d7b GIT binary patch literal 709 zcmV;$0y_PPP)Px%e@R3^R9FeMn7?ZjK@`VtqezWh*g4ESg4I42!g5e zHyBVbMG6HA)5a51#7?l#O0W?P`JspjD(B~$yKu?w?ChIk--GYX?#%bS@AqzZW@j&J zL@=6sh9MfaW{qV?-KD) z_hWBEx?Ed`95o7U!yDvYS~K#KX?pkk#(1m(!bgRkGYWLK9^wP{sC31uIfpuVwrw}#U`~rdJ z1~>oU-1Bp>uQEb26^1q$zq~KS_YkoG@GD|!#@9ihI%b|l41HkCZ7~ekX*3WVi5Sw* zonWG8C!)&{Q<{m#JoO8;5xf*Jq@hKS6%su=5L}XSBxXJJ3$-ya1gbV|*9wWA9T<8T z`Gqtj!(*Nv4%9~M5O@t@vCZK11BrnXIQ>9RfX_G|yr}gYCz{Ec rnZw|82PbLu7tjDW0v5qEv$*viJN9hKK{&&R00000NkvXXu0mjf1K~(X literal 0 HcmV?d00001 diff --git a/res/drawable-hdpi/video_24dp.png b/res/drawable-hdpi/video_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..90805cbc17ebaccb3e8016fbdef7b3d5f966e538 GIT binary patch literal 411 zcmV;M0c8G(P)Px$RY^oaR9Fe^m!VDrK@f(!q&z?oK!U?ziX#M4gTaC1Wop2XpwS2n8VpTa#RC9u zP(uYlU_g@VHy19MknHV2w-dxn@^@!%?`FRHZE_1Cq4>7qB3JEUg!FF@nmB&y!12@vP+q5bk)l2272cluEWM6-1?Qccf;OzJM0 zca42i?$e)jXnV-9YqYA?-j~$GBn4y{UC`_vX&C9>Y0Ixw0J2H18?+PaY32|xCqO*a z!3d<;9s;P*UNv(_?!HMlP|78D$Q?>KkXrXW^q(AhPQl2!|IuY@Jc%- zzd|e3F+Ey3RQBb2?UrO4J!p{cyf6on#z4I=9H3M5g{pXzzd#eTsF+lpVk3=vXn=-j zOMv=lQPGcqM2|z#MrUZ6kxFVwP18^0=uP^9JKzo|2WAmnlnrdi0(bxb002ovPDHLk FV1j35vd;hj literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/baseline_email_white_24.png b/res/drawable-mdpi/baseline_email_white_24.png new file mode 100755 index 0000000000000000000000000000000000000000..ea25d6da8c7102ad18de6df0c3d0eca630c9d674 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_+i8J;eVAr*{wPHz-+aA0t`DC^`E z(BgH0b8bMFUy784tiU5K zF=tI&CW&8|Px$Wl2OqR7efgmAy+sQ5eQMIfMv8lhjfOjy42_dlEEcAoy1_IP^cXwYRlJkh_Dl zxC9OoI0Q|7ECw}{i_mcUJ<+{f^?JS5IYTe}JRk3Sp66bVo@16`!t=as()+Lr8;}FV z3p~O#w2U!5+T?+71v-#4R9l(rKv5dblB!13X>B^vh(rc%A{H$=C5_CO2@@%3FRBz% zFRfHy!k`gT{M%GR28PwEv=5L4oAH6z<}x33ur00!m1bQAHH{oaO$G%=;*u?B4@PuW z9GQ&t217^Ul6{wf&Jh~abQ&Z*2LrrY{y0Lz$mZ5z@o#eGy?;5 zm^ij%Fhpm^7uP2HG5^BwD`&UQr1rSsx??3c=Hc@XZ=kj3po4QdNL<2Xw3s-7{$wIF zzN3E%`DxXk8IlK~1?s-R5d=S5`Z*{;6%L^c>oY||3H=ZHjCGIRLsRe_>MZ{s@dZ8_ VOo|m)#gza6002ovPDHLkV1nVEvPx$mPtfGR7ef2mN82MK@f%SOi0q&2nzZOtSo{eYGJBWVrM0iUPOO~U}>X>rAi8G z?G!DwR1m>Je}DuPg!7wob0p`?9_%^r*t>Z%@9mto7vqRXlBC8m1Lhs(Sf4;Ej^j_( z@IZVQd;l#v;mWQP)t;v8a(Dk>@a!=VYO##T2+gkr0-FWAmllIJZ$%WXFvVm+jY*5a zi^={H6_)9O8k=T!ZF$h1IE0gpgayrY@U9qqliLbY&2=Gksu-;2%7SkDqj#0=wvr1= zvHL1`P^Kt#28MQn_^M*?NN#kfu*?l&H;TyxxoR2RtQVms_)<)cEfew;Ag}sVCgi)I zumiNXB>CrYkvnq5@>-vPC7*uEQMBip@{7C(nE=<@`2u%;&ng>jsAdo{_BpWP1Y!fo zu6=Q(8c32ZF|j7`i4Jl_AJWuFM%DiCgF@DIw||n&N%&1ZfLs8#W|2)?+mynvO*xF( ziMJ-0Rb>1rl;pFr2IK>&eT7Mm*qi6 STUYG>0000 literal 0 HcmV?d00001 diff --git a/res/drawable-mdpi/video_24dp.png b/res/drawable-mdpi/video_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..79d2d4363c56aa18d3d0f2bd6be05457c87525d2 GIT binary patch literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|_ISEDhIsHM zCrGfiI6e6P|G%EYAC3-BR{ln*7>=3eIYLUrS9o+zaFY4-T|!cF>cyuGX{Q*DPHLEExi9|f&GG6+XG7VSEMmsa41ul$6_ks7kHFuLFOxm8o4|zp=Qpz-6@}DH~!+; z@N(%i)*ENox_hG*i(C@dC5sd_4KSmN6+VgTgH<}sf&>1Lr$7`1 z^7f~Bz(?&3+F9b2FkVXaDcQ(J6$`q*&mzYvvEze)3sBz z&jJDhJ`mi1fB<#LjFtc`;S85FV2UpqlTMdT-2+Gzpe@!vN*=J{gPx&IY~r8RA>e5nayhxK^VrfRqF?65Dyjf5JROZL6L$`n&QPaQt%J(B6#)UQP7L1 zw<3ZdJ&EAOlVA}Fy$Dq=T3fA%D2gpoKWmG&B7Pw8_bl1C*=*vv-DGE>FFc)@cV^!A zd1iJuJ6kIiffb9zErcn6eW1+)nyC*S+^0QaS=JkM#$u4}2Is*O5Y{wTF}j;3f@B47 z2Sja(sarh;It;DS%0M!S@=bxA@9&<-9nnrWT*%H1AH1QYXM zp-%8-b%{g1mI%wQg9&@^kAk#ce+<4ay6qQj}hsg%kylo^lDq^7u?brUM@K+~}aqgD@`&yDGfz~Slxdak-DCZ;~>$DPBW+fnr*T1vYX$e@`p}`3i zPq|hCKE{(flB|mo@Gg>2@dTMqx`5{rP<6_QXE8%%os@u^p{ANKX-MxvdX;_)Hk-jI zFpDY91lbn;6q#}(@HBGRQ{4k8Dz7N6sGbnJEb`*& zJ`-=H{Q|5}hru=nw+;lTET71<3p2Ej%W1fsaLD`eR8$*(iY5r~icE1!1fh5IBSthwSrVtg z6sTvzbc&dH2C?fkn9t$Ycla*zSpQ|TlIjld73c{t4IYA9V3=+GNx5vxD^OPx&bxA})RA>dwnoUSlQ5c42%3O$P*}|knNl_VYf@l+!K~dTwigrQdI%yr%IeX9e7|vCUnXo~mzR*K!!cVUywpDnS)Sq)LY6xgF$!-BpM{(w z-nD&fv%9HO!4^coT!*IQq3Jr{5{IxTC zf!Lkalp3ml)TY!>1*k6$EObb6XDZ+om1i&vwLcI}hsf_810nTb#-f7n_#X6595Mic?id#E2EVqDxr4+) zRF`1^)iG?MRU^Izd@v|N!>2jQPpe&+g)+<{zY%fUKu7~V=MDUlcj3vlfS(4vFo(~! z0_5@(EZWsD2p_)-qSk>~U}C9#jjs44P;S}_Dm2w4WywMiwGw;+CiWF4 zt&OY85Ou;tecneex2CG9072Svd6E}sau~#^w%UqlMU;k!sXfMVm2DAl^j+)%xCc(E zZ5yMkKf#Uw8+(hh@n-^G?SMazB+%Rb64+2yn9U6WU5+I9UsJud*CYpicPj+b3-dnM z58U55kZZvJurW=sJ)mr2?wzv;IGT^=HoPD=fM{2nY%TdIPLhAspMmH1M%sknMNJA!%lEDMDhWz!@;6MgW^AJ3gabUfd?J)&mcLeu7HV zKF_ZQY*esz_=x{*Fkr)r!FSlH012T8ZOeCpD{7}?Lry~|DwZL2m}}R;is-$V+k1i( zAdwW&%HbB+sdfUUC2*tj5Q++9NWJ5lJ{R3!GI~FT_6u^(1S>!S377*nIo$-V0X?O- zY$&e4^KltgYk^jGCL0B~S=rI~L~)-WOS>Jtz+~UaviW0s1e30+w;E-!hId dS$yG``3r$6rEN1R918#d002ovPDHLkV1lK`ssjK3 literal 0 HcmV?d00001 diff --git a/res/drawable-xhdpi/video_24dp.png b/res/drawable-xhdpi/video_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..a76d5484def6bcbf552956ea9c49f0cc73d2c1bc GIT binary patch literal 551 zcmV+?0@(eDP)Px$;Ymb6RA>e5n7v8^Q4oc*Du{xOXb6hWAn6qm>}+g&48dmzK7v9TLHsLh6m7Mz z6dUc+iK1W?d)M#4MlR80_rl)fDl>3$e=?albLK8&Z>3^p3YY?>z|a*))3gc>!7~VL z%As7~FFGKK2w|gpJ%_~B= z&R)48zD@d9@W%We)O3VC*+|OeRXAG85t4{~4URhI2VlL+@j?ZpU7G`4Qb1qvptlO4 zWANKC|H!R=pw&3ZAU+BjY+d&tFYl=_ea2=GUx3poSjyuTT?Zh)0qKV#GQ{3e9Yija1FqUnH3%4co`_^1`a*E$eFRiBvF0UxzO_*w@-sOl5b zI^d&L2w&?!2vvPz#?*mJi0}E3mv1zGr#r;67n*(6h29CGD?o)%gkC96z_Ql;ET$v$ z&6A6YCla7;7q^nQaVXXy%db{vMJOV79ZbXW(yNuXDz9KVJt&KzH_`O*xdS pp5+dm&*GZ`rhqA63jAXQz5r1s19$22#Ge2F002ovPDHLkV1g!J^eO-V literal 0 HcmV?d00001 diff --git a/res/drawable-xxhdpi/baseline_email_white_24.png b/res/drawable-xxhdpi/baseline_email_white_24.png new file mode 100755 index 0000000000000000000000000000000000000000..928fdfb1b14086786c44d416c3bbc5b57bfaad7b GIT binary patch literal 419 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 f?0}r6od#C`Av^j$NzV7l$;;uuoF z_;&Wjex5{$WBKn^xD>InwzhS2aa`1BIkwY9kxQvCBjCah@ekq|B}$Gl4?{XMIvz<) zTp_9yHQi%}SJAQeH&Z5Wz4`UrxpQ~U*8JXcve?@A{hRN#@AK#7f1C6(E$dVwlUf1- z2{ziC7r$Wit96!`z2t;r+XSu#R?hQFzi51A+J%U8ZFa*22Yrsec%v!*obAc%nhe9! zn?9HF8!(@%f7WrmH z^Zh#ae4Ccltp>BOf(zdYe=Yr2TT?Ii_I>tq+u!P}FZiYBRtMha%)N1zaYK_D^80)YfxP7#W|l1jsFvU3}=`&y#+J2hJ?8 zzVd@@YLl{qrxl06?iFu2tyU==?|dS|GRK(VXUnlRHq6V#S_+5O-*!Q z^kp_$(BLp(TQiS_g20lu3d~#_ESc6P8km?IZ}Ab5^1JAmzVfGgK>5RxB7f76o%6d{ zug@1Xyl?STVpsQ;e=AE=UM`4}+VRrjca_=x&EG37z7=`z`2R}Z?0ZEI7__zqm{vM0 zVqGF?=cl}u|5q=U`={VF^I3x52^`;YD967(@4&w&YYbkC_0P83R4edupUBa0-;G}K z-`s7(=IEQ2DXd-8-Sbo^>hJj(a@k$JzpP&FWw4qq92_muU&H&HbC zwvkD__Lz!$#uKAi&P7kNzck#LCG(`*bb+DHvV~tJEt&RcyY825{%iF&ad>?Hzu~JcXJ>iOP2V^L{!8rz)&Z$6m30MYFC7ddq$&{>Q&z@^hW-&)@Xazv7*-&>~AP_e?;oL*W&rTWri+i^VQZ z zZaK@=u_AQKSN1Q0E?1g5w!LMLUD;uFkU?-OgzVe)uYobc3h1~dMx!iIAc+pU4mq{{jp4Cix{9WJT{5u0<5SaZ?f1T)yS*zTon1Hd( N;OXk;vd$@?2>`l3>p%bi literal 0 HcmV?d00001 diff --git a/res/drawable-xxxhdpi/message_24dp.png b/res/drawable-xxxhdpi/message_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..6e3c59628ca4b827267d418703ab7f3fa2e5d6b4 GIT binary patch literal 2035 zcmVPx+tw}^dRCodHoolESRTRhXwNiR`)q*m`d}d@O8kA-vlv!p%Dt+i_l0^nlpQ1jM zghGK(Nnc8|50|13fn;L&$jCH}9%@QPrr9;Mhml@;iI3awf0{X-bI+W|%VneI(a}t|E(asPa1X;s2Y~az1qCUGO@D&F3etld?*)52 zd{4T&xw*N6v`dKwnz}&vd30htxB*NA*Mq*mr5r)oX7DN41U|zdf0L#vsW|}BTNwFt za2J>g&IR?9e=zm|cn7S+8SV8no{B9^E#MBY0vrcjMbsDdNqtN0N12#Y7*q>*66^+D zUDQYQRT0{~g+cTN&x2#2yNUX&zW45SUZB%G!4u$D(A`C2&{%pV;RxsR9UZ-ej=l!8 zY-}Xavi4Cf*6Umjs)s9O5U=S*#IFU7M!sm$nAU2H8mlr~h?5AQLzC&uGH{uTPIUtv zZS?UWqT$21eT^LfkpDEDSOc;`zBt!d*LY*sd1Q$k0T|ca>r!xcWb2L5@NI@MH|kw= zBnLo#e~i8l#x@3ru}85D4Y%WjpTlYj?EuIhh>`VRWLRSjUjIABcQZ~n5N4dA902)) zQ2r6n4y8#c1KNGP2`B6?Eeg)5*#X`!{}a><4OV5j9s@s+-dJlS)Z_rj*9BMPU*j3E zq%s3vQ7k7^-R`cs4266-sTCOcl}Rrw6<4hucZK;S$5kCbi-llTNlVM9#(+3mP_0tM zDF_cvMuD~#D%PuJB*W!;1UiMOsO%kcSz;l-4~=&Kt$a+PGq9hgSL1}EK`JUuL9fuj z$PZ#IT%I@-mw^%(0sQ)Jqqd%xnz&is!wIJg zwFFH;_fx^hFJ#Hhu{agCMN$+2{Q7%Qsy&S?Z7mlOlJH3z`bQE4$9+4UBj7;_jC`LR z_o=v@U8uHm1ZeKJE#^Xo+#hcv0>=4j^AW)GGr`FBX-PC4>v5ekl6L@Sk0ol>lov9P z=Q=k9c^BW`si8NIO_FCoZ*pIxi?JU8lgKdglPBJ{Ag;xElkb3Oeu<@ZV<5-5IiPNQ zml(=9K(C8mLQ&|a`6cQsBMJlk6#=88w6r!(7#M91aKd9`CFX$0)VXPxbAY{I<%Y~C zT1ILL>Kmn{wQ<5gUpb(~i7HbPg@G11Ko8$d(qW*F?gLI>`|Nb=XWr^bMSvV&k`4p8 z&A4Of*fy&$(5?tD2c-8~I4TDOzOj{FpE6}R=YTz#8gkbf>_J62ufOLrW zt>zrC-9NLm?hNeIjhLd~Fz8oz^Vv42&#d+9;k_)nA=_M}GWvCJpSu&5b^Yn7Nqreu zC3F6JL3(F#pMOqjk~{;0h=89o|2J{aMzS$^n`Xgd;7gIO&1Bn2=o_Hn#$oPZvCCW5Olz~>Cd|AmyfKG@4U5vFi zWDjUWhLq6kn1Q81819?}OoOx!V`4|j~f z0f!1z7Da#xsGtuHy---mj-4>@QfKm|wIl+RNfhWq+TVa7z$88c`i9UL9H9N5A}NUg zl~Pe(7M}x71Cw|Rh{HKS@AavB1sAipwGk-nF_1&s6a zEDgoLPHJC^1O6@7s-gqb$h$ZAoWqODDY5)O27V)VJmhQsFDqrIAio6)+Blv8@_%0M zmswht0dY068u@Bn)d8x6qRk}pb!<`-1CPMjrdn#&Qdy8~m*i{kWg~!JzrG=%Z(WwHBLxjE`lZhYdX%W= zxz451GIRmfvP!=G|KV4`5{TEM#Ka_!V1E6#VsUi>R@b9b7qRJ}R|5LusMMY8TCfhs=7RO$6i7=>V|WXA3Jk43+W{8o$TPsDw4?0408_av z$_9W3z%sBGBrU&SU^&o#&^f4Fzv`7=GzHP2D>1wkxSAfmK-WElv*y&Aggy+W;v}FY z@D(10lZNfn3EKP!bQdrCdZ@H1Okb#%5qtGO-?S8# zV=e^xk2DLxX_MZw6!g}Ca0u*oVH-X55e7LQxR7^I(lzGO`cN0&3WQApCu6d|f%X&Q z_a2_8W?W88gfH7bU7z4(DG2n=S{{U?ebA^$U RSXKZ4002ovPDHLkV1ia#ywU&w literal 0 HcmV?d00001 diff --git a/res/drawable-xxxhdpi/phone_24dp.png b/res/drawable-xxxhdpi/phone_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..14c4b65fb516b824ae17a28c54016b6f610fef32 GIT binary patch literal 2028 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 + + diff --git a/res/drawable/shared_contact_view_background.xml b/res/drawable/shared_contact_view_background.xml new file mode 100644 index 0000000000..36348d9547 --- /dev/null +++ b/res/drawable/shared_contact_view_background.xml @@ -0,0 +1,6 @@ + + + + + + diff --git a/res/layout/activity_contact_share_edit.xml b/res/layout/activity_contact_share_edit.xml new file mode 100644 index 0000000000..a70f3b5613 --- /dev/null +++ b/res/layout/activity_contact_share_edit.xml @@ -0,0 +1,20 @@ + + + + + + + + \ No newline at end of file diff --git a/res/layout/activity_contact_share_select.xml b/res/layout/activity_contact_share_select.xml new file mode 100644 index 0000000000..d4212d13dc --- /dev/null +++ b/res/layout/activity_contact_share_select.xml @@ -0,0 +1,8 @@ + + + + \ No newline at end of file diff --git a/res/layout/activity_shared_contact_details.xml b/res/layout/activity_shared_contact_details.xml new file mode 100644 index 0000000000..45486fde48 --- /dev/null +++ b/res/layout/activity_shared_contact_details.xml @@ -0,0 +1,159 @@ + + + + + + + + + + + + + + + +