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 0000000000..bf0403296e
Binary files /dev/null and b/res/drawable-hdpi/baseline_email_white_24.png differ
diff --git a/res/drawable-hdpi/message_24dp.png b/res/drawable-hdpi/message_24dp.png
new file mode 100644
index 0000000000..3b823f14d6
Binary files /dev/null and b/res/drawable-hdpi/message_24dp.png differ
diff --git a/res/drawable-hdpi/phone_24dp.png b/res/drawable-hdpi/phone_24dp.png
new file mode 100644
index 0000000000..c392ccd3bc
Binary files /dev/null and b/res/drawable-hdpi/phone_24dp.png differ
diff --git a/res/drawable-hdpi/video_24dp.png b/res/drawable-hdpi/video_24dp.png
new file mode 100644
index 0000000000..90805cbc17
Binary files /dev/null and b/res/drawable-hdpi/video_24dp.png differ
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 0000000000..ea25d6da8c
Binary files /dev/null and b/res/drawable-mdpi/baseline_email_white_24.png differ
diff --git a/res/drawable-mdpi/message_24dp.png b/res/drawable-mdpi/message_24dp.png
new file mode 100644
index 0000000000..b6f26807b8
Binary files /dev/null and b/res/drawable-mdpi/message_24dp.png differ
diff --git a/res/drawable-mdpi/phone_24dp.png b/res/drawable-mdpi/phone_24dp.png
new file mode 100644
index 0000000000..d138c7fc6c
Binary files /dev/null and b/res/drawable-mdpi/phone_24dp.png differ
diff --git a/res/drawable-mdpi/video_24dp.png b/res/drawable-mdpi/video_24dp.png
new file mode 100644
index 0000000000..79d2d4363c
Binary files /dev/null and b/res/drawable-mdpi/video_24dp.png differ
diff --git a/res/drawable-xhdpi/baseline_email_white_24.png b/res/drawable-xhdpi/baseline_email_white_24.png
new file mode 100755
index 0000000000..9c97a103fa
Binary files /dev/null and b/res/drawable-xhdpi/baseline_email_white_24.png differ
diff --git a/res/drawable-xhdpi/message_24dp.png b/res/drawable-xhdpi/message_24dp.png
new file mode 100644
index 0000000000..b83910a8e0
Binary files /dev/null and b/res/drawable-xhdpi/message_24dp.png differ
diff --git a/res/drawable-xhdpi/phone_24dp.png b/res/drawable-xhdpi/phone_24dp.png
new file mode 100644
index 0000000000..cc98097fb1
Binary files /dev/null and b/res/drawable-xhdpi/phone_24dp.png differ
diff --git a/res/drawable-xhdpi/video_24dp.png b/res/drawable-xhdpi/video_24dp.png
new file mode 100644
index 0000000000..a76d5484de
Binary files /dev/null and b/res/drawable-xhdpi/video_24dp.png differ
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 0000000000..928fdfb1b1
Binary files /dev/null and b/res/drawable-xxhdpi/baseline_email_white_24.png differ
diff --git a/res/drawable-xxhdpi/message_24dp.png b/res/drawable-xxhdpi/message_24dp.png
new file mode 100644
index 0000000000..2a02739a90
Binary files /dev/null and b/res/drawable-xxhdpi/message_24dp.png differ
diff --git a/res/drawable-xxhdpi/phone_24dp.png b/res/drawable-xxhdpi/phone_24dp.png
new file mode 100644
index 0000000000..a70585c1a6
Binary files /dev/null and b/res/drawable-xxhdpi/phone_24dp.png differ
diff --git a/res/drawable-xxhdpi/video_24dp.png b/res/drawable-xxhdpi/video_24dp.png
new file mode 100644
index 0000000000..80cf463276
Binary files /dev/null and b/res/drawable-xxhdpi/video_24dp.png differ
diff --git a/res/drawable-xxxhdpi/baseline_email_white_24.png b/res/drawable-xxxhdpi/baseline_email_white_24.png
new file mode 100755
index 0000000000..298c951af9
Binary files /dev/null and b/res/drawable-xxxhdpi/baseline_email_white_24.png differ
diff --git a/res/drawable-xxxhdpi/message_24dp.png b/res/drawable-xxxhdpi/message_24dp.png
new file mode 100644
index 0000000000..6e3c59628c
Binary files /dev/null and b/res/drawable-xxxhdpi/message_24dp.png differ
diff --git a/res/drawable-xxxhdpi/phone_24dp.png b/res/drawable-xxxhdpi/phone_24dp.png
new file mode 100644
index 0000000000..14c4b65fb5
Binary files /dev/null and b/res/drawable-xxxhdpi/phone_24dp.png differ
diff --git a/res/drawable-xxxhdpi/video_24dp.png b/res/drawable-xxxhdpi/video_24dp.png
new file mode 100644
index 0000000000..9fd6cda2f6
Binary files /dev/null and b/res/drawable-xxxhdpi/video_24dp.png differ
diff --git a/res/drawable/baseline_email_24.xml b/res/drawable/baseline_email_24.xml
new file mode 100755
index 0000000000..ee249cce65
--- /dev/null
+++ b/res/drawable/baseline_email_24.xml
@@ -0,0 +1,10 @@
+
+
+
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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/conversation_item_received.xml b/res/layout/conversation_item_received.xml
index c560db58c7..6b49d68aa4 100644
--- a/res/layout/conversation_item_received.xml
+++ b/res/layout/conversation_item_received.xml
@@ -84,6 +84,13 @@
app:message_type="incoming"
tools:visibility="visible"/>
+
+
+
+
+
diff --git a/res/layout/item_editable_contact.xml b/res/layout/item_editable_contact.xml
new file mode 100644
index 0000000000..b274a0ff77
--- /dev/null
+++ b/res/layout/item_editable_contact.xml
@@ -0,0 +1,43 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/item_selectable_contact_field.xml b/res/layout/item_selectable_contact_field.xml
new file mode 100644
index 0000000000..81234cd193
--- /dev/null
+++ b/res/layout/item_selectable_contact_field.xml
@@ -0,0 +1,50 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/layout/shared_contact_view.xml b/res/layout/shared_contact_view.xml
new file mode 100644
index 0000000000..58bbf85f53
--- /dev/null
+++ b/res/layout/shared_contact_view.xml
@@ -0,0 +1,84 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/res/values-sw320dp/dimens.xml b/res/values-sw320dp/dimens.xml
index e10ac512b8..a496aac971 100644
--- a/res/values-sw320dp/dimens.xml
+++ b/res/values-sw320dp/dimens.xml
@@ -1,5 +1,5 @@
- 220dp
+ 250dp
300dp
\ No newline at end of file
diff --git a/res/values-sw480dp/dimens.xml b/res/values-sw480dp/dimens.xml
new file mode 100644
index 0000000000..80c9e9b466
--- /dev/null
+++ b/res/values-sw480dp/dimens.xml
@@ -0,0 +1,5 @@
+
+
+ 350dp
+ 300dp
+
\ No newline at end of file
diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index f6dc025bce..db247ed575 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -131,6 +131,9 @@
+
+
+
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 5e8d3974d1..891f5942ad 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -37,6 +37,7 @@
#60ffffff
#70ffffff
#aaffffff
+ #ddffffff
#32000000
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 06da6395fb..82a34404ef 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -59,4 +59,7 @@
20sp
3dp
+
+ 16dp
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c298f14543..0fc518ac01 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -97,6 +97,13 @@
Message %s
Signal Call %s
+
+ Home
+ Mobile
+ Work
+ Other
+ Selected contact was invalid
+
Not delivered
Received key exchange message, tap to process.
@@ -152,6 +159,8 @@
Signal needs the Camera permission to take photos or video, but it has been permanently denied. Please continue to app settings, select \"Permissions\", and enable \"Camera\".
Signal needs Camera permissions to take photos or video
+ %1$s %2$s
+
- %d unread message
@@ -568,6 +577,23 @@
Add ringtone
Unable to add custom ringtone
+
+ Add to Contacts
+ Invite to Signal
+ Let\'s switch to Signal: %1$s
+ Contact added.
+ Failed to retrieve the contact
+ Contact updated.
+ Error while editing contact
+ Error while reading contact
+ Add as a new contact
+ Add to an existing contact
+
+
+ Add to Contacts
+ Invite to Signal
+ Signal Message
+
Image
Audio
@@ -695,6 +721,8 @@
Reply
Pending Signal messages
You have pending Signal messages, tap to open and retrieve
+ %1$s %2$s
+ Contact
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 4896af331e..c9bc2e6d46 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -61,6 +61,12 @@
- @color/white
+
+
+
+
+
+
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 5e6da48406..8d186c5080 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -23,6 +23,9 @@
- @color/gray50
- @color/gray70
- @color/white
+
+ - @color/grey_100
+ - @color/grey_400