Merge tag 'android-16.0.0_r1' of https://android.googlesource.com/platform/packages/apps/Messaging into HEAD

Android 16.0.0 release 1

Change-Id: I38156e95bca1b18424f82fdf6eedc95eb8355df5
diff --git a/Android.bp b/Android.bp
index 05fd866..1e8f5ee 100644
--- a/Android.bp
+++ b/Android.bp
@@ -65,12 +65,11 @@
         "androidx.core_core",
         "androidx.fragment_fragment",
         "androidx.media_media",
-        "androidx.legacy_legacy-support-core-utils",
-        "androidx.legacy_legacy-support-core-ui",
         "androidx.palette_palette",
         "androidx.recyclerview_recyclerview",
         "androidx.viewpager_viewpager",
         "androidx.legacy_legacy-support-v13",
+        "androidx.preference_preference",
         "colorpicker",
         "libchips",
         "libphotoviewer",
@@ -80,6 +79,7 @@
         "com.android.vcard",
         "guava",
         "libphonenumber",
+        "OmniPreferenceTheme"
     ],
 
     aaptflags: [
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fffcdab..4682e58 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -15,10 +15,11 @@
     limitations under the License.
 -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          xmlns:tools="http://schemas.android.com/tools"
     package="com.android.messaging"
     android:installLocation="internalOnly">
 
-    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="24" />
+    <uses-sdk android:minSdkVersion="21" android:targetSdkVersion="29" />
 
     <!-- Application holds CPU wakelock while working in background -->
     <uses-permission android:name="android.permission.WAKE_LOCK" />
@@ -28,6 +29,7 @@
     <uses-permission android:name="android.permission.RECEIVE_SMS"/>
     <uses-permission android:name="android.permission.RECEIVE_MMS"/>
     <uses-permission android:name="android.permission.SEND_SMS"/>
+    <uses-permission android:name="android.permission.MANAGE_ROLE_HOLDERS" />
     <!-- Application needs access to MMS network -->
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
@@ -56,11 +58,19 @@
     <uses-feature android:name="android.hardware.microphone" android:required="false" />
     <uses-feature android:name="android.hardware.screen.portrait" android:required="false" />
 
+    <queries>
+        <intent>
+            <action android:name="android.intent.action.SENDTO"/>
+            <data android:scheme="smsto" android:host="*" />
+        </intent>
+    </queries>
+
     <application
         android:name="com.android.messaging.BugleApplication"
         android:allowBackup="false"
-        android:icon="@drawable/ic_launcher"
+        android:icon="@mipmap/ic_launcher_messaging"
         android:label="@string/app_name"
+        android:requestLegacyExternalStorage="true"
         android:theme="@style/BugleTheme"
         android:supportsRtl="true">
 
@@ -71,7 +81,7 @@
             android:screenOrientation="user"
             android:label="@string/app_name"
             android:exported="true"
-            android:theme="@style/BugleTheme.ConversationListActivity">
+            android:theme="@style/LaunchTheme">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -388,6 +398,7 @@
                   android:permission="android.permission.BROADCAST_SMS">
             <intent-filter>
                 <action android:name="android.provider.Telephony.SMS_DELIVER" />
+                <category android:name="android.intent.category.DEFAULT"/>
             </intent-filter>
         </receiver>
 
diff --git a/README b/README
deleted file mode 100644
index 15142ba..0000000
--- a/README
+++ /dev/null
@@ -1,2 +0,0 @@
-This app is not actively supported and the source is only available as a reference. This project will be removed from the source manifest sometime in the future.
-
diff --git a/proguard.flags b/proguard.flags
index 9c4c022..5fc7994 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -67,7 +67,7 @@
   void <init>();
 }
 # TODO(b/373579455): Evaluate if <init> needs to be kept.
--keep public class * extends android.preference.Preference {
+-keep public class * extends androidx.preference.Preference {
   void <init>();
 }
 # TODO(b/373579455): Evaluate if <init> needs to be kept.
diff --git a/res/drawable-hdpi/ic_notifications_off_dark.png b/res/drawable-hdpi/ic_notifications_off_dark.png
deleted file mode 100644
index 9bcdc62..0000000
--- a/res/drawable-hdpi/ic_notifications_off_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_notifications_off_light.png b/res/drawable-hdpi/ic_notifications_off_light.png
deleted file mode 100644
index 433b6a9..0000000
--- a/res/drawable-hdpi/ic_notifications_off_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_notifications_off_small_light.png b/res/drawable-hdpi/ic_notifications_off_small_light.png
deleted file mode 100644
index fbd0ad5..0000000
--- a/res/drawable-hdpi/ic_notifications_off_small_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_notifications_on_dark.png b/res/drawable-hdpi/ic_notifications_on_dark.png
deleted file mode 100644
index 21e48a5..0000000
--- a/res/drawable-hdpi/ic_notifications_on_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-hdpi/ic_notifications_on_light.png b/res/drawable-hdpi/ic_notifications_on_light.png
deleted file mode 100644
index 6b39fec..0000000
--- a/res/drawable-hdpi/ic_notifications_on_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_notifications_off_dark.png b/res/drawable-mdpi/ic_notifications_off_dark.png
deleted file mode 100644
index 4a5a7e9..0000000
--- a/res/drawable-mdpi/ic_notifications_off_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_notifications_off_light.png b/res/drawable-mdpi/ic_notifications_off_light.png
deleted file mode 100644
index 33e0b4a..0000000
--- a/res/drawable-mdpi/ic_notifications_off_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_notifications_off_small_light.png b/res/drawable-mdpi/ic_notifications_off_small_light.png
deleted file mode 100644
index 4bd9563..0000000
--- a/res/drawable-mdpi/ic_notifications_off_small_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_notifications_on_dark.png b/res/drawable-mdpi/ic_notifications_on_dark.png
deleted file mode 100644
index 77a2a7d..0000000
--- a/res/drawable-mdpi/ic_notifications_on_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/ic_notifications_on_light.png b/res/drawable-mdpi/ic_notifications_on_light.png
deleted file mode 100644
index eae03a5..0000000
--- a/res/drawable-mdpi/ic_notifications_on_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_notifications_off_dark.png b/res/drawable-xhdpi/ic_notifications_off_dark.png
deleted file mode 100644
index 4f3b924..0000000
--- a/res/drawable-xhdpi/ic_notifications_off_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_notifications_off_light.png b/res/drawable-xhdpi/ic_notifications_off_light.png
deleted file mode 100644
index 16ae132..0000000
--- a/res/drawable-xhdpi/ic_notifications_off_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_notifications_off_small_light.png b/res/drawable-xhdpi/ic_notifications_off_small_light.png
deleted file mode 100644
index e54fc52..0000000
--- a/res/drawable-xhdpi/ic_notifications_off_small_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_notifications_on_dark.png b/res/drawable-xhdpi/ic_notifications_on_dark.png
deleted file mode 100644
index 40f2909..0000000
--- a/res/drawable-xhdpi/ic_notifications_on_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/ic_notifications_on_light.png b/res/drawable-xhdpi/ic_notifications_on_light.png
deleted file mode 100644
index 3c44f93..0000000
--- a/res/drawable-xhdpi/ic_notifications_on_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_notifications_off_dark.png b/res/drawable-xxhdpi/ic_notifications_off_dark.png
deleted file mode 100644
index 27d3754..0000000
--- a/res/drawable-xxhdpi/ic_notifications_off_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_notifications_off_light.png b/res/drawable-xxhdpi/ic_notifications_off_light.png
deleted file mode 100644
index a2aedec..0000000
--- a/res/drawable-xxhdpi/ic_notifications_off_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_notifications_off_small_light.png b/res/drawable-xxhdpi/ic_notifications_off_small_light.png
deleted file mode 100644
index 2a90e07..0000000
--- a/res/drawable-xxhdpi/ic_notifications_off_small_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_notifications_on_dark.png b/res/drawable-xxhdpi/ic_notifications_on_dark.png
deleted file mode 100644
index e64da6b..0000000
--- a/res/drawable-xxhdpi/ic_notifications_on_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/ic_notifications_on_light.png b/res/drawable-xxhdpi/ic_notifications_on_light.png
deleted file mode 100644
index f8f7d15..0000000
--- a/res/drawable-xxhdpi/ic_notifications_on_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_notifications_off_dark.png b/res/drawable-xxxhdpi/ic_notifications_off_dark.png
deleted file mode 100644
index 10ac318..0000000
--- a/res/drawable-xxxhdpi/ic_notifications_off_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_notifications_off_light.png b/res/drawable-xxxhdpi/ic_notifications_off_light.png
deleted file mode 100644
index 8eb5782..0000000
--- a/res/drawable-xxxhdpi/ic_notifications_off_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_notifications_off_small_light.png b/res/drawable-xxxhdpi/ic_notifications_off_small_light.png
deleted file mode 100644
index 3756943..0000000
--- a/res/drawable-xxxhdpi/ic_notifications_off_small_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_notifications_on_dark.png b/res/drawable-xxxhdpi/ic_notifications_on_dark.png
deleted file mode 100644
index 3896212..0000000
--- a/res/drawable-xxxhdpi/ic_notifications_on_dark.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxxhdpi/ic_notifications_on_light.png b/res/drawable-xxxhdpi/ic_notifications_on_light.png
deleted file mode 100644
index 47794fd..0000000
--- a/res/drawable-xxxhdpi/ic_notifications_on_light.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable/attachment_audio_preview_background.xml b/res/drawable/attachment_audio_preview_background.xml
index 8b62415..a63c510 100644
--- a/res/drawable/attachment_audio_preview_background.xml
+++ b/res/drawable/attachment_audio_preview_background.xml
@@ -15,6 +15,6 @@
     limitations under the License.
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="@android:color/white" />
-    <corners android:radius="2dp" />
-</shape>
\ No newline at end of file
+    <solid android:color="@color/contextual_action_bar_background_color" />
+    <corners android:radius="16dp" />
+</shape>
diff --git a/res/drawable/attachment_image_placeholder_background.xml b/res/drawable/attachment_image_placeholder_background.xml
index b3315e8..5d4cc96 100644
--- a/res/drawable/attachment_image_placeholder_background.xml
+++ b/res/drawable/attachment_image_placeholder_background.xml
@@ -15,6 +15,6 @@
     limitations under the License.
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="@android:color/white" />
+    <solid android:color="@color/contextual_action_bar_background_color" />
     <corners android:radius="@dimen/attachment_rounded_corner_radius" />
-</shape>
\ No newline at end of file
+</shape>
diff --git a/res/drawable/attachment_vcard_preview_background.xml b/res/drawable/attachment_vcard_preview_background.xml
index 8b62415..a63c510 100644
--- a/res/drawable/attachment_vcard_preview_background.xml
+++ b/res/drawable/attachment_vcard_preview_background.xml
@@ -15,6 +15,6 @@
     limitations under the License.
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-    <solid android:color="@android:color/white" />
-    <corners android:radius="2dp" />
-</shape>
\ No newline at end of file
+    <solid android:color="@color/contextual_action_bar_background_color" />
+    <corners android:radius="16dp" />
+</shape>
diff --git a/res/drawable/audio_record_control_button_background.xml b/res/drawable/audio_record_control_button_background.xml
index 02f329e..a3f5fa8 100644
--- a/res/drawable/audio_record_control_button_background.xml
+++ b/res/drawable/audio_record_control_button_background.xml
@@ -22,5 +22,5 @@
         android:width="1dp"
         android:color="@color/audio_record_control_button_stroke"/>
     <solid
-        android:color="@android:color/white"/>
-</shape>
\ No newline at end of file
+        android:color="@color/contact_picker_background"/>
+</shape>
diff --git a/res/drawable/chips_dropdown_background.xml b/res/drawable/chips_dropdown_background.xml
index 48a727d..02a6b5c 100644
--- a/res/drawable/chips_dropdown_background.xml
+++ b/res/drawable/chips_dropdown_background.xml
@@ -18,5 +18,5 @@
     <item android:drawable="@color/chips_dropdown_background_activated"
           android:state_activated="true"/>
     <item android:drawable="@color/chips_dropdown_background_pressed" android:state_pressed="true"/>
-    <item android:drawable="@android:color/white"/>
-</selector>
\ No newline at end of file
+    <item android:drawable="@color/contextual_action_bar_background_color"/>
+</selector>
diff --git a/res/drawable/ic_archive.xml b/res/drawable/ic_archive.xml
new file mode 100644
index 0000000..36aa44f
--- /dev/null
+++ b/res/drawable/ic_archive.xml
@@ -0,0 +1,8 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff" android:pathData="M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z" />
+</vector>
diff --git a/res/drawable/ic_archive_small.xml b/res/drawable/ic_archive_small.xml
new file mode 100644
index 0000000..36aa44f
--- /dev/null
+++ b/res/drawable/ic_archive_small.xml
@@ -0,0 +1,8 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff" android:pathData="M5.12,5L5.93,4H17.93L18.87,5M12,17.5L6.5,12H10V10H14V12H17.5L12,17.5M20.54,5.23L19.15,3.55C18.88,3.21 18.47,3 18,3H6C5.53,3 5.12,3.21 4.84,3.55L3.46,5.23C3.17,5.57 3,6 3,6.5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V6.5C21,6 20.83,5.57 20.54,5.23Z" />
+</vector>
diff --git a/res/drawable/ic_archive_undo_small.xml b/res/drawable/ic_archive_undo_small.xml
new file mode 100644
index 0000000..7a34620
--- /dev/null
+++ b/res/drawable/ic_archive_undo_small.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+        android:pathData="M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z" />
+</vector>
diff --git a/res/drawable/ic_cancel_small.xml b/res/drawable/ic_cancel_small.xml
new file mode 100644
index 0000000..05dd498
--- /dev/null
+++ b/res/drawable/ic_cancel_small.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:tint="@color/settings_item_title_text_primary">
+    <path android:fillColor="#ffffff"
+
+        android:pathData="M12,2C17.53,2 22,6.47 22,12C22,17.53 17.53,22 12,22C6.47,22 2,17.53 2,12C2,6.47 6.47,2 12,2M15.59,7L12,10.59L8.41,7L7,8.41L10.59,12L7,15.59L8.41,17L12,13.41L15.59,17L17,15.59L13.41,12L17,8.41L15.59,7Z" />
+</vector>
diff --git a/res/drawable/ic_content_copy.xml b/res/drawable/ic_content_copy.xml
new file mode 100644
index 0000000..de01f50
--- /dev/null
+++ b/res/drawable/ic_content_copy.xml
@@ -0,0 +1,8 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff" android:pathData="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z" />
+</vector>
diff --git a/res/drawable/ic_delete_small.xml b/res/drawable/ic_delete_small.xml
new file mode 100644
index 0000000..f79cf47
--- /dev/null
+++ b/res/drawable/ic_delete_small.xml
@@ -0,0 +1,10 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+
+        android:pathData="M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z" />
+</vector>
diff --git a/res/drawable/ic_dnd_on.xml b/res/drawable/ic_dnd_on.xml
new file mode 100644
index 0000000..a7711f7
--- /dev/null
+++ b/res/drawable/ic_dnd_on.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+        android:pathData="M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M17,13H7V11H17V13Z" />
+</vector>
diff --git a/res/drawable/ic_file_download.xml b/res/drawable/ic_file_download.xml
new file mode 100644
index 0000000..8c6d167
--- /dev/null
+++ b/res/drawable/ic_file_download.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+        android:pathData="M5,20H19V18H5M19,9H15V3H9V9H5L12,16L19,9Z" />
+</vector>
diff --git a/res/drawable/ic_forward.xml b/res/drawable/ic_forward.xml
new file mode 100644
index 0000000..d0107f1
--- /dev/null
+++ b/res/drawable/ic_forward.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+        android:pathData="M12,8V4L20,12L12,20V16H4V8H12Z" />
+</vector>
diff --git a/res/drawable/ic_info.xml b/res/drawable/ic_info.xml
new file mode 100644
index 0000000..0705b37
--- /dev/null
+++ b/res/drawable/ic_info.xml
@@ -0,0 +1,8 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff" android:pathData="M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20,12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2M11,17H13V11H11V17Z" />
+</vector>
diff --git a/res/drawable/ic_notifications_off.xml b/res/drawable/ic_notifications_off.xml
new file mode 100644
index 0000000..df2f070
--- /dev/null
+++ b/res/drawable/ic_notifications_off.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+        android:pathData="M20.84,22.73L18.11,20H3V19L5,17V11C5,9.86 5.29,8.73 5.83,7.72L1.11,3L2.39,1.73L22.11,21.46L20.84,22.73M19,15.8V11C19,7.9 16.97,5.17 14,4.29C14,4.19 14,4.1 14,4A2,2 0 0,0 12,2A2,2 0 0,0 10,4C10,4.1 10,4.19 10,4.29C9.39,4.47 8.8,4.74 8.26,5.09L19,15.8M12,23A2,2 0 0,0 14,21H10A2,2 0 0,0 12,23Z" />
+</vector>
diff --git a/res/drawable/ic_notifications_on.xml b/res/drawable/ic_notifications_on.xml
new file mode 100644
index 0000000..3e35d36
--- /dev/null
+++ b/res/drawable/ic_notifications_on.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+        android:pathData="M21,19V20H3V19L5,17V11C5,7.9 7.03,5.17 10,4.29C10,4.19 10,4.1 10,4A2,2 0 0,1 12,2A2,2 0 0,1 14,4C14,4.1 14,4.19 14,4.29C16.97,5.17 19,7.9 19,11V17L21,19M14,21A2,2 0 0,1 12,23A2,2 0 0,1 10,21" />
+</vector>
diff --git a/res/drawable/ic_person_add.xml b/res/drawable/ic_person_add.xml
new file mode 100644
index 0000000..e4032e3
--- /dev/null
+++ b/res/drawable/ic_person_add.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+        android:pathData="M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z" />
+</vector>
diff --git a/res/drawable/ic_save.xml b/res/drawable/ic_save.xml
new file mode 100644
index 0000000..1f96688
--- /dev/null
+++ b/res/drawable/ic_save.xml
@@ -0,0 +1,8 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff" android:pathData="M15,9H5V5H15M12,19A3,3 0 0,1 9,16A3,3 0 0,1 12,13A3,3 0 0,1 15,16A3,3 0 0,1 12,19M17,3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V7L17,3Z" />
+</vector>
diff --git a/res/drawable/ic_send.xml b/res/drawable/ic_send.xml
new file mode 100644
index 0000000..1567a5f
--- /dev/null
+++ b/res/drawable/ic_send.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff"
+        android:pathData="M8,7.71L18,12L8,16.29V12.95L15.14,12L8,11.05V7.71M12,2A10,10 0 0,1 22,12A10,10 0 0,1 12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20A8,8 0 0,0 20,12A8,8 0 0,0 12,4Z" />
+</vector>
diff --git a/res/drawable/ic_share.xml b/res/drawable/ic_share.xml
new file mode 100644
index 0000000..3f5f0d0
--- /dev/null
+++ b/res/drawable/ic_share.xml
@@ -0,0 +1,8 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:tint="@color/settings_item_title_text_primary"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path android:fillColor="#ffffff" android:pathData="M18,16.08C17.24,16.08 16.56,16.38 16.04,16.85L8.91,12.7C8.96,12.47 9,12.24 9,12C9,11.76 8.96,11.53 8.91,11.3L15.96,7.19C16.5,7.69 17.21,8 18,8A3,3 0 0,0 21,5A3,3 0 0,0 18,2A3,3 0 0,0 15,5C15,5.24 15.04,5.47 15.09,5.7L8.04,9.81C7.5,9.31 6.79,9 6,9A3,3 0 0,0 3,12A3,3 0 0,0 6,15C6.79,15 7.5,14.69 8.04,14.19L15.16,18.34C15.11,18.55 15.08,18.77 15.08,19C15.08,20.61 16.39,21.91 18,21.91C19.61,21.91 20.92,20.61 20.92,19A2.92,2.92 0 0,0 18,16.08Z" />
+</vector>
diff --git a/res/drawable/ic_wear_read.xml b/res/drawable/ic_wear_read.xml
new file mode 100644
index 0000000..9d017e6
--- /dev/null
+++ b/res/drawable/ic_wear_read.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:height="24dp"
+    android:width="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+    <path
+        android:fillColor="#ffffff"
+        android:pathData="M0.41,13.41L6,19L7.41,17.58L1.83,12M22.24,5.58L11.66,16.17L7.5,12L6.07,13.41L11.66,19L23.66,7M18,7L16.59,5.58L10.24,11.93L11.66,13.34L18,7Z" />
+</vector>
diff --git a/res/drawable/msg_bubble_incoming_new.xml b/res/drawable/msg_bubble_incoming_new.xml
new file mode 100644
index 0000000..148231b
--- /dev/null
+++ b/res/drawable/msg_bubble_incoming_new.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The OmniROM Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/subject_editor_bubble" />
+    <corners android:topLeftRadius="5dp" android:radius="16dp" />
+</shape>
diff --git a/res/drawable/msg_bubble_input_new.xml b/res/drawable/msg_bubble_input_new.xml
new file mode 100644
index 0000000..36e8b89
--- /dev/null
+++ b/res/drawable/msg_bubble_input_new.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The OmniROM Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/subject_editor_bubble" />
+    <corners android:radius="16dp" />
+</shape>
diff --git a/res/drawable/msg_bubble_outgoing_new.xml b/res/drawable/msg_bubble_outgoing_new.xml
new file mode 100644
index 0000000..e4bee9d
--- /dev/null
+++ b/res/drawable/msg_bubble_outgoing_new.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The OmniROM Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/message_bubble_color_outgoing" />
+    <corners android:topRightRadius="5dp" android:radius="16dp" />
+</shape>
diff --git a/res/drawable/popup_background.xml b/res/drawable/popup_background.xml
new file mode 100644
index 0000000..3ef00eb
--- /dev/null
+++ b/res/drawable/popup_background.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Based on the Theme.Material's default selectableItemBackground -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/contextual_action_bar_background_color"/>
+    <corners android:radius="@*android:dimen/config_dialogCornerRadius"/>
+</shape>
diff --git a/res/drawable/swipe_shadow_drag_new.xml b/res/drawable/swipe_shadow_drag_new.xml
new file mode 100644
index 0000000..23b9a6b
--- /dev/null
+++ b/res/drawable/swipe_shadow_drag_new.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<!-- Based on the Theme.Material's default selectableItemBackground -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/google_gray"/>
+</shape>
diff --git a/res/drawable/swipe_shadow_new.xml b/res/drawable/swipe_shadow_new.xml
new file mode 100644
index 0000000..393e638
--- /dev/null
+++ b/res/drawable/swipe_shadow_new.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <solid android:color="@color/primary_color"/>
+</shape>
+
diff --git a/res/drawable/widget_msg_bubble_incoming_new.xml b/res/drawable/widget_msg_bubble_incoming_new.xml
new file mode 100644
index 0000000..08059d0
--- /dev/null
+++ b/res/drawable/widget_msg_bubble_incoming_new.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The OmniROM Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/google_gray" />
+    <corners android:topLeftRadius="5dp" android:radius="16dp" />
+</shape>
diff --git a/res/drawable/widget_msg_bubble_outgoing_new.xml b/res/drawable/widget_msg_bubble_outgoing_new.xml
new file mode 100644
index 0000000..e4bee9d
--- /dev/null
+++ b/res/drawable/widget_msg_bubble_outgoing_new.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The OmniROM Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="@color/message_bubble_color_outgoing" />
+    <corners android:topRightRadius="5dp" android:radius="16dp" />
+</shape>
diff --git a/res/layout/compose_message_view.xml b/res/layout/compose_message_view.xml
index 8bb8249..7338aa7 100644
--- a/res/layout/compose_message_view.xml
+++ b/res/layout/compose_message_view.xml
@@ -94,6 +94,7 @@
                 android:layout_width="0dp"
                 android:layout_weight="1"
                 android:layout_height="wrap_content"
+                android:paddingRight="16px"
                 android:orientation="vertical">
 
                 <!-- Contains media button and compose message bubble whose centers should be
@@ -121,8 +122,9 @@
                         android:layout_width="0dp"
                         android:layout_weight="1"
                         android:layout_gravity="center"
-                        android:background="@drawable/msg_bubble_input"
+                        android:background="@drawable/msg_bubble_input_new"
                         android:hint="@string/compose_message_view_hint_text"
+                        android:textColorHint="@color/conversation_list_item_read"
                         android:imeOptions="actionSend|flagNoEnterAction|flagNoExtractUi" />
 
                 </LinearLayout>
diff --git a/res/layout/contact_picker_fragment.xml b/res/layout/contact_picker_fragment.xml
index 78350d7..edfa7ff 100644
--- a/res/layout/contact_picker_fragment.xml
+++ b/res/layout/contact_picker_fragment.xml
@@ -42,7 +42,7 @@
                 android:layout_height="wrap_content"
                 android:layout_gravity="center_vertical"
                 android:minHeight="@dimen/compose_message_contacts_height"
-                android:popupBackground="@drawable/contact_popup_background"
+                android:popupBackground="@drawable/popup_background"
                 android:dropDownWidth="match_parent"
                 android:hint="@string/recipient_hint"
                 app:avatarPosition="start"
diff --git a/res/layout/conversation_list_fragment.xml b/res/layout/conversation_list_fragment.xml
index 7fa2a9a..03d99f3 100644
--- a/res/layout/conversation_list_fragment.xml
+++ b/res/layout/conversation_list_fragment.xml
@@ -27,7 +27,8 @@
         android:paddingTop="@dimen/conversation_list_first_item_extra_padding"
         android:clipToPadding="false"
         android:listSelector="?android:attr/listSelector"
-        android:dividerHeight="0px" />
+        android:dividerHeight="0px"
+        android:paddingBottom="@dimen/fab_list_bottom_padding" />
 
     <include
         layout="@layout/list_empty_view"
diff --git a/res/layout/conversation_list_item_view.xml b/res/layout/conversation_list_item_view.xml
index 636616b..202ba41 100644
--- a/res/layout/conversation_list_item_view.xml
+++ b/res/layout/conversation_list_item_view.xml
@@ -28,7 +28,7 @@
         android:layout_height="match_parent"
         android:gravity="center_vertical|start"
         android:baselineAligned="false"
-        android:background="@drawable/swipe_shadow"
+        android:background="@drawable/swipe_shadow_new"
         android:visibility="gone"
         android:padding="@dimen/conversation_list_item_view_padding">
         <ImageView
@@ -37,7 +37,6 @@
             android:layout_height="wrap_content"
             android:gravity="center_vertical|left"
             android:visibility="gone"
-            android:src="@drawable/ic_archive_small_dark"
             android:importantForAccessibility="no"
             android:contentDescription="@null"/>
         <FrameLayout
@@ -50,7 +49,6 @@
             android:layout_height="wrap_content"
             android:layout_gravity="center_vertical|right"
             android:visibility="gone"
-            android:src="@drawable/ic_archive_small_dark"
             android:importantForAccessibility="no"
             android:contentDescription="@null"/>
     </LinearLayout>
@@ -123,17 +121,6 @@
                             android:layout_height="wrap_content"
                             android:layout_weight="1"
                             android:background="@android:color/transparent">
-                        <ImageView
-                            android:id="@+id/conversation_notification_bell"
-                            style="@style/ConversationListNotificationBellPaddingStyle"
-                            android:layout_width="wrap_content"
-                            android:layout_height="wrap_content"
-                            android:src="@drawable/ic_notifications_off_small_light"
-                            android:visibility="gone"
-                            android:importantForAccessibility="no"
-                            android:contentDescription="@null"
-                            android:layout_gravity="center_vertical"
-                            android:background="@android:color/transparent" />
                         <TextView
                             android:id="@+id/conversation_name"
                             style="@style/ConversationListItemViewConversationNameStyle"
diff --git a/res/layout/conversation_message_view.xml b/res/layout/conversation_message_view.xml
index daad600..6fd19ad 100644
--- a/res/layout/conversation_message_view.xml
+++ b/res/layout/conversation_message_view.xml
@@ -28,6 +28,8 @@
         app:iconSize="normal"
         android:clickable="true"
         android:layout_gravity="center_vertical"
+        android:paddingRight="16px"
+        android:paddingLeft="16px"
         android:importantForAccessibility="no" />
 
     <com.android.messaging.ui.conversation.ConversationMessageBubbleView
diff --git a/res/layout/mediapicker_audio_chooser.xml b/res/layout/mediapicker_audio_chooser.xml
index 795d2f8..b702269 100644
--- a/res/layout/mediapicker_audio_chooser.xml
+++ b/res/layout/mediapicker_audio_chooser.xml
@@ -19,7 +19,7 @@
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:background="@android:color/white"
+    android:background="@color/contextual_action_bar_background_color"
     android:importantForAccessibility="no" >
 
     <FrameLayout
@@ -89,7 +89,7 @@
         android:layout_height="match_parent"
         android:text="@string/enable_permission_procedure"
         android:contentDescription="@string/enable_permission_procedure_description"
-        android:background="@android:color/white"
+        android:background="@color/contextual_action_bar_background_color"
         android:gravity="center"
         android:visibility="gone" />
 
diff --git a/res/layout/mediapicker_camera_chooser.xml b/res/layout/mediapicker_camera_chooser.xml
index 27d26bd..8d3d220 100644
--- a/res/layout/mediapicker_camera_chooser.xml
+++ b/res/layout/mediapicker_camera_chooser.xml
@@ -143,7 +143,7 @@
         android:layout_height="match_parent"
         android:text="@string/enable_permission_procedure"
         android:contentDescription="@string/enable_permission_procedure_description"
-        android:background="@android:color/white"
+        android:background="@color/contextual_action_bar_background_color"
         android:gravity="center"
         android:visibility="gone" />
 
diff --git a/res/layout/mediapicker_gallery_chooser.xml b/res/layout/mediapicker_gallery_chooser.xml
index b4f3c01..c550dab 100644
--- a/res/layout/mediapicker_gallery_chooser.xml
+++ b/res/layout/mediapicker_gallery_chooser.xml
@@ -30,7 +30,7 @@
         android:stretchMode="columnWidth"
         android:gravity="center"
         android:clipToPadding="false"
-        android:background="@android:color/white" />
+        android:background="@color/contextual_action_bar_background_color" />
     <!-- This view will hide all other views if the required permission is not granted -->
     <TextView
         android:id="@+id/missing_permission_view"
@@ -38,7 +38,7 @@
         android:layout_height="match_parent"
         android:text="@string/enable_permission_procedure"
         android:contentDescription="@string/enable_permission_procedure_description"
-        android:background="@android:color/white"
+        android:background="@color/contextual_action_bar_background_color"
         android:gravity="center"
         android:visibility="gone" />
-</FrameLayout>
\ No newline at end of file
+</FrameLayout>
diff --git a/res/layout/people_options_item_view.xml b/res/layout/people_options_item_view.xml
index 8821eec..8895037 100644
--- a/res/layout/people_options_item_view.xml
+++ b/res/layout/people_options_item_view.xml
@@ -40,25 +40,5 @@
             android:ellipsize="end"
             style="@style/ParticipantListItem"
             android:layout_gravity="center_vertical" />
-
-        <TextView
-            android:id="@+id/subtitle"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:singleLine="true"
-            android:maxLines="1"
-            android:ellipsize="end"
-            style="@style/ParticipantListItemDetail"
-            android:layout_gravity="center_vertical" />
-
     </LinearLayout>
-
-    <androidx.appcompat.widget.SwitchCompat
-        android:id="@+id/switch_button"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:focusable="false"
-        android:clickable="false"
-        android:visibility="gone" />
-
 </com.android.messaging.ui.conversationsettings.PeopleOptionsItemView>
diff --git a/res/layout/settings_item_view.xml b/res/layout/settings_item_view.xml
index a434c11..82b1981 100644
--- a/res/layout/settings_item_view.xml
+++ b/res/layout/settings_item_view.xml
@@ -18,10 +18,11 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:orientation="vertical"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/settings_list_item_height"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
     android:gravity="center_vertical"
-    android:paddingLeft="16dp"
-    android:paddingRight="16dp"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
     android:background="?android:attr/selectableItemBackground" >
 
     <TextView
@@ -31,7 +32,7 @@
         android:singleLine="true"
         android:maxLines="1"
         android:ellipsize="end"
-        style="@style/SettingsListItem" />
+        android:textAppearance="?android:attr/textAppearanceListItem" />
 
     <TextView
         android:id="@+id/subtitle"
@@ -39,6 +40,7 @@
         android:layout_height="wrap_content"
         android:maxLines="2"
         android:ellipsize="end"
-        style="@style/SettingsListItemDetail" />
+        android:textAppearance="?android:attr/textAppearanceListItemSecondary"
+        android:textColor="?android:attr/textColorSecondary" />
 
 </LinearLayout>
diff --git a/res/layout/vcard_detail_activity.xml b/res/layout/vcard_detail_activity.xml
index aa4c3b9..8eb27e5 100644
--- a/res/layout/vcard_detail_activity.xml
+++ b/res/layout/vcard_detail_activity.xml
@@ -18,6 +18,6 @@
     xmlns:android="http://schemas.android.com/apk/res/android"
     class="com.android.messaging.ui.VCardDetailFragment"
     android:id="@+id/vcard_detail_fragment"
-    android:theme="@style/Theme.AppCompat.Light.DarkActionBar"
+    android:theme="@android:style/Theme.Material.Light.DarkActionBar"
     android:layout_width="match_parent"
-    android:layout_height="match_parent" />
\ No newline at end of file
+    android:layout_height="match_parent" />
diff --git a/res/layout/widget_conversation_list_item.xml b/res/layout/widget_conversation_list_item.xml
index e0115a2..26c5821 100644
--- a/res/layout/widget_conversation_list_item.xml
+++ b/res/layout/widget_conversation_list_item.xml
@@ -67,17 +67,6 @@
                 android:layout_alignParentTop="true"
                 android:gravity="center_vertical"
                 android:background="@android:color/transparent">
-                <ImageView
-                    android:id="@+id/conversation_notification_bell"
-                    style="@style/ConversationListNotificationBellPaddingStyle"
-                    android:layout_width="wrap_content"
-                    android:layout_height="wrap_content"
-                    android:src="@drawable/ic_notifications_off_small_light"
-                    android:visibility="gone"
-                    android:importantForAccessibility="no"
-                    android:contentDescription="@null"
-                    android:layout_gravity="center_vertical"
-                    android:background="@android:color/transparent" />
 
                 <TextView android:id="@+id/from"
                     style="@style/WidgetConversationListItemFrom"
diff --git a/res/layout/widget_message_item_incoming.xml b/res/layout/widget_message_item_incoming.xml
index 786385b..e387606 100644
--- a/res/layout/widget_message_item_incoming.xml
+++ b/res/layout/widget_message_item_incoming.xml
@@ -63,7 +63,8 @@
         android:layout_gravity="top"
         android:orientation="vertical"
         style="@style/WidgetConversationItemBodyIncoming"
-        android:background="@drawable/widget_msg_bubble_incoming"
+        android:background="@drawable/widget_msg_bubble_incoming_new"
+        android:paddingLeft="8px"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
 
diff --git a/res/layout/widget_message_item_outgoing.xml b/res/layout/widget_message_item_outgoing.xml
index c3d734e..faba51d 100644
--- a/res/layout/widget_message_item_outgoing.xml
+++ b/res/layout/widget_message_item_outgoing.xml
@@ -63,7 +63,8 @@
         android:layout_gravity="top"
         android:orientation="vertical"
         style="@style/WidgetConversationItemBodyOutgoing"
-        android:background="@drawable/widget_msg_bubble_outgoing"
+        android:background="@drawable/widget_msg_bubble_outgoing_new"
+        android:paddingRight="8px"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content" >
 
diff --git a/res/menu/conversation_fragment_select_menu.xml b/res/menu/conversation_fragment_select_menu.xml
index 7ce0829..7f8106f 100644
--- a/res/menu/conversation_fragment_select_menu.xml
+++ b/res/menu/conversation_fragment_select_menu.xml
@@ -21,43 +21,43 @@
     <item
         android:id="@+id/share_message_menu"
         android:title="@string/action_share"
-        android:icon="@drawable/ic_share_dark"
+        android:icon="@drawable/ic_share"
         appcompat:showAsAction="collapseActionView|always" />
     <item
         android:id="@+id/forward_message_menu"
         android:title="@string/message_context_menu_forward_message"
-        android:icon="@drawable/ic_forward_dark"
+        android:icon="@drawable/ic_forward"
         appcompat:showAsAction="collapseActionView|always"/>
     <item
         android:id="@+id/save_attachment"
         android:title="@string/save"
-        android:icon="@drawable/ic_save_dark"
+        android:icon="@drawable/ic_save"
         appcompat:showAsAction="collapseActionView|always" />
     <item
         android:id="@+id/copy_text"
         android:title="@string/message_context_menu_copy_text"
-        android:icon="@drawable/ic_content_copy_dark"
+        android:icon="@drawable/ic_content_copy"
         appcompat:showAsAction="collapseActionView|always"/>
 
     <item
         android:id="@+id/details_menu"
         android:title="@string/message_context_menu_view_details"
-        android:icon="@drawable/ic_info_dark"
+        android:icon="@drawable/ic_info"
         appcompat:showAsAction="collapseActionView|always"/>
 
     <item
         android:id="@+id/action_send"
-        android:icon="@drawable/ic_send_dark"
+        android:icon="@drawable/ic_send"
         android:title="@string/action_send"
         appcompat:showAsAction="collapseActionView|always"/>
     <item
         android:id="@+id/action_download"
-        android:icon="@drawable/ic_file_download_dark"
+        android:icon="@drawable/ic_file_download"
         android:title="@string/action_download"
         appcompat:showAsAction="collapseActionView|always"/>
     <item
         android:id="@+id/action_delete_message"
-        android:icon="@drawable/ic_delete_small_dark"
+        android:icon="@drawable/ic_delete_small"
         android:title="@string/action_delete_message"
         appcompat:showAsAction="collapseActionView|always"/>
 </menu>
diff --git a/res/menu/conversation_list_fragment_select_menu.xml b/res/menu/conversation_list_fragment_select_menu.xml
index 8704691..0b98eb3 100644
--- a/res/menu/conversation_list_fragment_select_menu.xml
+++ b/res/menu/conversation_list_fragment_select_menu.xml
@@ -20,43 +20,31 @@
 
     <item
         android:id="@+id/action_archive"
-        android:icon="@drawable/ic_archive_small_dark"
+        android:icon="@drawable/ic_archive_small"
         android:orderInCategory="50"
         android:title="@string/action_archive"
         appcompat:showAsAction="collapseActionView|always"/>
     <item
         android:id="@+id/action_unarchive"
-        android:icon="@drawable/ic_archive_undo_small_dark"
+        android:icon="@drawable/ic_archive_undo_small"
         android:orderInCategory="50"
         android:title="@string/action_unarchive"
         appcompat:showAsAction="collapseActionView|always"/>
     <item
         android:id="@+id/action_delete"
-        android:icon="@drawable/ic_delete_small_dark"
+        android:icon="@drawable/ic_delete_small"
         android:orderInCategory="60"
         android:title="@string/action_delete"
         appcompat:showAsAction="collapseActionView|always"/>
     <item
-        android:id="@+id/action_notification_off"
-        android:icon="@drawable/ic_notifications_off_dark"
-        android:orderInCategory="70"
-        android:title="@string/action_notification_off"
-        appcompat:showAsAction="collapseActionView|always"/>
-    <item
-        android:id="@+id/action_notification_on"
-        android:icon="@drawable/ic_notifications_on_dark"
-        android:orderInCategory="80"
-        android:title="@string/action_notification_on"
-        appcompat:showAsAction="collapseActionView|always"/>
-    <item
         android:id="@+id/action_add_contact"
-        android:icon="@drawable/ic_person_add_dark"
+        android:icon="@drawable/ic_person_add"
         android:orderInCategory="90"
         android:title="@string/action_add_contact"
         appcompat:showAsAction="collapseActionView|always"/>
     <item
         android:id="@+id/action_block"
-        android:icon="@drawable/ic_dnd_on_dark"
+        android:icon="@drawable/ic_dnd_on"
         android:orderInCategory="100"
         android:title="@string/action_block"
         appcompat:showAsAction="collapseActionView|always"/>
diff --git a/res/mipmap-anydpi-v26/ic_launcher_messaging.xml b/res/mipmap-anydpi-v26/ic_launcher_messaging.xml
new file mode 100644
index 0000000..5c9e16c
--- /dev/null
+++ b/res/mipmap-anydpi-v26/ic_launcher_messaging.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2012 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@color/ic_launcher_background"/>
+    <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon>
diff --git a/res/mipmap-hdpi/ic_launcher_foreground.png b/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..a34fbe8
--- /dev/null
+++ b/res/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/res/mipmap-mdpi/ic_launcher_foreground.png b/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..2121e1a
--- /dev/null
+++ b/res/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/res/mipmap-xhdpi/ic_launcher_foreground.png b/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..5e1765a
--- /dev/null
+++ b/res/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/res/mipmap-xxhdpi/ic_launcher_foreground.png b/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..5627128
--- /dev/null
+++ b/res/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..02fa3fb
--- /dev/null
+++ b/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/res/values-af/custom_strings.xml b/res/values-af/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-af/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 901bd27..87f274e 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Gevorderd"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Ontfout"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Kennisgewings"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Kennisgewings"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Klank"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Stil"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibreer"</string>
diff --git a/res/values-am/custom_strings.xml b/res/values-am/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-am/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index bea9e6f..4a48dfc 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"ኤምኤምኤስ"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"የላቀ"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"አርም"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"ማሳወቂያዎች"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"ማሳወቂያዎች"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ድምፅ"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"ፀጥታ"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"ንዘር"</string>
diff --git a/res/values-ar/custom_strings.xml b/res/values-ar/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-ar/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 1a0f4b9..a6c5db3 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -330,7 +330,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"رسالة وسائط متعددة"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"إعدادات متقدمة"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"تصحيح الأخطاء"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"الإشعارات"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"الإشعارات"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"الصوت"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"صامت"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"اهتزاز"</string>
diff --git a/res/values-az-rAZ/custom_strings.xml b/res/values-az-rAZ/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-az-rAZ/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 56b4274..c52c91f 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Qabaqcıl"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Sazlama"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Bildirişlər"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Bildirişlər"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Səs"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Səssiz"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Titrət"</string>
diff --git a/res/values-bg/custom_strings.xml b/res/values-bg/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-bg/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index c1b8401..435c727 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Разширени"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Отстраняване на грешки"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Известия"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Известия"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Звук"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Тих режим"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Вибриране"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 96af70b..56c40f1 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"উন্নত"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ডিবাগ"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"বিজ্ঞপ্তিগুলি"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"বিজ্ঞপ্তিগুলি"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"আওয়াজ"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"নীরব"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"কম্পন"</string>
diff --git a/res/values-ca/custom_strings.xml b/res/values-ca/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-ca/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 9f09908..c8e25bc 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avançada"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Depuració"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notificacions"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notificacions"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"So"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silenci"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibració"</string>
diff --git a/res/values-cs/custom_strings.xml b/res/values-cs/custom_strings.xml
new file mode 100644
index 0000000..c536019
--- /dev/null
+++ b/res/values-cs/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Označit jako přečtené</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Přejeďte pro odstranění</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Přejeďte vpravo pro odstranění konverzace</string>
+</resources>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 7e58112..1145587 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -294,7 +294,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Rozšířená nastavení"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Ladit"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Oznámení"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Oznámení"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Zvuk"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Tichý režim"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrace"</string>
diff --git a/res/values-da/custom_strings.xml b/res/values-da/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-da/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 6d441da..2898ce8 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"Mms"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avanceret"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Fejlretning"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Underretninger"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Underretninger"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Lyd"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Lydløs"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrer"</string>
diff --git a/res/values-de/custom_strings.xml b/res/values-de/custom_strings.xml
new file mode 100644
index 0000000..918980f
--- /dev/null
+++ b/res/values-de/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Als gelesen markieren</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Zum Löschen wischen</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Nach rechts wischen, um eine Unterhaltung zu löschen</string>
+</resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 4537b8b..1664212 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Erweitert"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Fehlersuche"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Benachrichtigungen"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Benachrichtigungen"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Ton"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Lautlos"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrieren"</string>
diff --git a/res/values-el/custom_strings.xml b/res/values-el/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-el/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index d74a84b..2b569f1 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Σύνθετες ρυθμίσεις"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Εντοπισμός σφαλμάτων"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Ειδοποιήσεις"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Ειδοποιήσεις"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Ήχος"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Σίγαση"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Δόνηση"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 3a642fb..cc77792 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Advanced"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Debug"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notifications"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notifications"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Sound"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silent"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrate"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 3a642fb..cc77792 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Advanced"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Debug"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notifications"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notifications"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Sound"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silent"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrate"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 3a642fb..cc77792 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Advanced"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Debug"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notifications"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notifications"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Sound"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silent"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrate"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index f474514..1838b40 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avanzada"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Depurar"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notificaciones"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notificaciones"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Sonido"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silencio"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrar"</string>
diff --git a/res/values-es/custom_strings.xml b/res/values-es/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-es/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 98e0a1d..669f676 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Opciones avanzadas"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Depurar"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notificaciones"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notificaciones"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Sonido"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silencio"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrar"</string>
diff --git a/res/values-et/custom_strings.xml b/res/values-et/custom_strings.xml
new file mode 100644
index 0000000..bbb7c66
--- /dev/null
+++ b/res/values-et/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Märgi loetuks</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Kustutamiseks viipa</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Vestluse kustutamiseks viipa paremale</string>
+</resources>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index e222a3e..0ce7f57 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Täpsem"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Silumine"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Märguanded"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Märguanded"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Heli"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Hääletu"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibratsioon"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 1703681..469d1ad 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Ezarpen aurreratuak"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Araztu"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Jakinarazpenak"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Jakinarazpenak"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Soinua"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Isilik"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Egin dar-dar"</string>
diff --git a/res/values-fa/custom_strings.xml b/res/values-fa/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-fa/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index a1bf9d8..4347ff5 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"پیشرفته"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"اشکال‌زدایی"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"اعلان‌ها"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"اعلان‌ها"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"صدا"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"بی‌صدا"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"لرزش"</string>
diff --git a/res/values-fi/custom_strings.xml b/res/values-fi/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-fi/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index a07825b..9f0be0b 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"Multimediaviesti"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Lisäasetukset"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Vianetsintä"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Ilmoitukset"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Ilmoitukset"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Ääni"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Äänetön"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Värinä"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index a626832..40d233c 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"Message multimédia"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avancés"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Déboguer"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notifications"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notifications"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Son"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Mode silencieux"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibreur"</string>
diff --git a/res/values-fr/custom_strings.xml b/res/values-fr/custom_strings.xml
new file mode 100644
index 0000000..e95ada8
--- /dev/null
+++ b/res/values-fr/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Marquer comme lu</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Glisser pour supprimer</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Glissez vers la droite pour supprimer une conversation</string>
+</resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index b9f22af..3a90f0d 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Paramètres avancés"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Déboguer"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notifications"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notifications"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Son"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Mode silencieux"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibreur"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 8a626c2..7fceb68 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avanzado"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Depuración"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notificacións"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notificacións"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Son"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silencio"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrar"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 8d2adaf..52d8899 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"વિગતવાર"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ડીબગ"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"સૂચનાઓ"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"સૂચનાઓ"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ધ્વનિ"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"શાંત"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"વાઇબ્રેટ"</string>
diff --git a/res/values-hi/custom_strings.xml b/res/values-hi/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-hi/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 7e7a780..a69a3b9 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"अतिरिक्त सेटिंग"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"डीबग"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"नोटिफिकेशन"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"नोटिफिकेशन"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ध्वनि"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"मौन"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"वाइब्रेट"</string>
diff --git a/res/values-hr/custom_strings.xml b/res/values-hr/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-hr/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index b8bb490..638a395 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -276,7 +276,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Napredno"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Otklanjanje pogrešaka"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Obavijesti"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Obavijesti"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Zvuk"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Bešumno"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibriranje"</string>
diff --git a/res/values-hu/custom_strings.xml b/res/values-hu/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-hu/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 9203514..c368387 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Speciális"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Hibakeresés"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Értesítések"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Értesítések"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Hang"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Néma"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Rezgés"</string>
diff --git a/res/values-hy/custom_strings.xml b/res/values-hy/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-hy/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 4dd99b0..5aabb0b 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Հավելյալ"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Կարգաբերում"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Ծանուցումներ"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Ծանուցումներ"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Ձայն"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Լուռ"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Թրթռոց"</string>
diff --git a/res/values-in/custom_strings.xml b/res/values-in/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-in/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 3b65bb2..5578e4a 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Lanjutan"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Debug"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notifikasi"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notifikasi"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Suara"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Senyap"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Getar"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index f02a11c..64bff17 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Ítarlegt"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Villuleita"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Tilkynningar"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Tilkynningar"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Hljóð"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Hljóðlaust"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Titringur"</string>
diff --git a/res/values-it/custom_strings.xml b/res/values-it/custom_strings.xml
new file mode 100644
index 0000000..3d337f9
--- /dev/null
+++ b/res/values-it/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Segna come letto</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Scorri per eliminare</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Scorri a destra per eliminare una conversazione</string>
+</resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index f041793..2c9e65f 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avanzate"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Debug"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notifiche"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notifiche"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Suono"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silenzioso"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrazione"</string>
diff --git a/res/values-iw/custom_strings.xml b/res/values-iw/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-iw/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 3f80e3c..526188b 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -294,7 +294,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"מתקדם"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ניפוי באגים"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"הודעות"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"הודעות"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"צליל"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"מצב שקט"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"רטט"</string>
diff --git a/res/values-ja/custom_strings.xml b/res/values-ja/custom_strings.xml
new file mode 100644
index 0000000..a68b8ae
--- /dev/null
+++ b/res/values-ja/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">既読にする</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">スワイプで削除</string>
+    <string name="swipe_to_delete_conversation_pref_summary">右にスワイプで会話を削除する</string>
+</resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index a3a513e..ee8e994 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"詳細設定"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"デバッグ"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"通知"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"通知"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"通知音"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"マナーモード"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"バイブレーション"</string>
diff --git a/res/values-ka/custom_strings.xml b/res/values-ka/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-ka/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 8a2cd5e..f1e9898 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"გაფართოებული"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"გამართვა"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"შეტყობინებები"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"შეტყობინებები"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ხმა"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"დადუმებული"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"ვიბრაცია"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 386e8ef..d38fdfd 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Кеңейтілген"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Күйін келтіру"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Хабарландырулар"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Хабарландырулар"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Дыбыс"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Үнсіз"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Дірілдеу"</string>
diff --git a/res/values-km/custom_strings.xml b/res/values-km/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-km/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index fba58e2..c601e16 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"សារ MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"កម្រិត​ខ្ពស់"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"កែ​កំហុស"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"ការ​ជូនដំណឹង"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"ការ​ជូនដំណឹង"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"សំឡេង"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"ស្ងាត់"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"ញ័រ"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index b484009..36d37cb 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"ಸುಧಾರಿತ"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ಡೀಬಗ್ ಮಾಡು"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"ಅಧಿಸೂಚನೆಗಳು"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"ಅಧಿಸೂಚನೆಗಳು"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ಶಬ್ದ"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"ಶಾಂತ"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"ವೈಬ್ರೇಟ್‌‌"</string>
diff --git a/res/values-ko/custom_strings.xml b/res/values-ko/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-ko/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 1faec2a..7f1077a 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"고급"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"디버그"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"알림"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"알림"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"소리"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"무음"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"진동"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 96b6d86..c070835 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Өркүндөтүлгөн"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Мүчүлүштүктөрдү таап оңдоо"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Эскертмелер"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Эскертмелер"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Үн"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Үнсүз"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Дирилдөө"</string>
diff --git a/res/values-ldrtl/styles.xml b/res/values-ldrtl/styles.xml
index de4d9e8..0c4e862 100644
--- a/res/values-ldrtl/styles.xml
+++ b/res/values-ldrtl/styles.xml
@@ -74,10 +74,6 @@
         <item name="android:textColor">@color/conversation_list_name</item>
     </style>
 
-    <style name="ConversationListNotificationBellPaddingStyle">
-        <item name="android:paddingEnd">@dimen/conversation_list_notification_bell_padding</item>
-    </style>
-
     <style name="ComposeMessageViewFrameLayoutStyle">
         <item name="android:paddingEnd">@dimen/compose_message_send_button_padding_right</item>
     </style>
diff --git a/res/values-lo-rLA/custom_strings.xml b/res/values-lo-rLA/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-lo-rLA/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 4911499..9a0977e 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"​ຂັ້ນ​ສູງ"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ດີບັ໊ກ"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"ການແຈ້ງເຕືອນ"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"ການແຈ້ງເຕືອນ"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ສຽງ"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"ປິດສຽງ"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"ສັ່ນເຕືອນ"</string>
diff --git a/res/values-lt/custom_strings.xml b/res/values-lt/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-lt/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 0430221..bdf7ad0 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -294,7 +294,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Išplėstiniai"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Derinti"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Pranešimai"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Pranešimai"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Garsas"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Tylus"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibravimas"</string>
diff --git a/res/values-lv/custom_strings.xml b/res/values-lv/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-lv/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index f598c77..67ac68a 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -276,7 +276,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"Multiziņa"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Papildu"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Atkļūdot"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Paziņojumi"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Paziņojumi"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Signāls"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Klusums"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrozvans"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 16f60c9..989bf5d 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"ММС"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Напредни"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Отстрани грешка"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Известувања"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Известувања"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Звук"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"На тивко"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Вибрации"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index b292525..1c3e95a 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"വിപുലം"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ഡീബഗ്"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"അറിയിപ്പുകൾ"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"അറിയിപ്പുകൾ"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ശബ്‌ദം"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"നിശബ്‌ദം"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"വൈബ്രേറ്റുചെയ്യുക"</string>
diff --git a/res/values-mn/custom_strings.xml b/res/values-mn/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-mn/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index f3edd91..0f98534 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Дэлгэрэнгүй"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Дебаг"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Мэдэгдэл"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Мэдэгдэл"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Дуу"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Чимээгүй"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Чичиргээ"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index ff585ba..2500a9f 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"प्रगत"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"डीबग करणे"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"सूचना"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"सूचना"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ध्वनी"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"मूक"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"कंपन"</string>
diff --git a/res/values-ms/custom_strings.xml b/res/values-ms/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-ms/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 3094e1d..549f868 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Lanjutan"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Nyahpepijat"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Pemberitahuan"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Pemberitahuan"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Bunyi"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Senyap"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Bergetar"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 26df42e..57eb3b2 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"ရုပ်သံစာ"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"အဆင့်မြင့်"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ဒီဘာဂ်"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"အကြောင်းကြားချက်များ"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"အကြောင်းကြားချက်များ"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"အသံ"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"အသံတိတ်ရန်"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"တုန်ခါရန်"</string>
diff --git a/res/values-nb/custom_strings.xml b/res/values-nb/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-nb/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index ca04e94..4057044 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avansert"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Feilsøk"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Varsler"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Varsler"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Lyd"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Stille"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrer"</string>
diff --git a/res/values-ne/custom_strings.xml b/res/values-ne/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-ne/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index b269345..fe564a9 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"उन्नत"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"डिबग"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"सूचनाहरू"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"सूचनाहरू"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"आवाज"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"मौन"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"कम्पन गर्नुहोस्"</string>
diff --git a/res/values-night-v31/colors.xml b/res/values-night-v31/colors.xml
new file mode 100644
index 0000000..5290243
--- /dev/null
+++ b/res/values-night-v31/colors.xml
@@ -0,0 +1,19 @@
+<!--
+  ~ Copyright (C) 2014 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+    <color name="ic_launcher_background">@android:color/system_accent1_600</color>
+</resources>
\ No newline at end of file
diff --git a/res/values-night-v31/styles.xml b/res/values-night-v31/styles.xml
new file mode 100644
index 0000000..a83c8ff
--- /dev/null
+++ b/res/values-night-v31/styles.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<resources>
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by BugleBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="BugleBaseTheme" parent="Theme.AppCompat">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+
+    <!-- Application theme. -->
+    <style name="BugleTheme" parent="BugleBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+         <item name="android:dropDownListViewStyle">@style/DropDownListViewStyle</item>
+         <item name="colorPrimary">@color/action_bar_background_color</item>
+         <item name="colorPrimaryDark">@color/action_bar_background_color</item>
+         <item name="colorAccent">@color/action_bar_background_color</item>
+         <item name="android:textColorHighlight">@color/text_highlight_color</item>
+         <item name="actionBarStyle">@style/BugleActionBar</item>
+         <item name="apnPreferenceStyle">@style/ApnPreference</item>
+         <item name="android:listViewStyle">@style/ListViewStyle</item>
+         <item name="actionBarPopupTheme">@style/PopupMenuStyleAppCompat</item>
+         <item name="android:actionBarPopupTheme">@style/PopupMenuStyleAppCompat</item>
+         <item name="alertDialogTheme">@style/BugleThemeAlertDialog</item>
+         <item name="android:alertDialogTheme">@style/BugleThemeAlertDialog</item>
+        <item name="preferenceTheme">@style/Omni.PreferenceTheme</item>
+        <item name="android:switchStyle">@style/Omni.SwitchStyle</item>
+        <item name="android:textAppearanceListItem">@style/Omni.PreferenceTitle</item>
+        <item name="android:navigationBarColor">@android:color/transparent</item>
+    </style>
+
+    <style name="BugleTheme.SettingsActivity" parent="BugleTheme">
+    </style>
+
+</resources>
diff --git a/res/values-night/colors.xml b/res/values-night/colors.xml
new file mode 100644
index 0000000..353748c
--- /dev/null
+++ b/res/values-night/colors.xml
@@ -0,0 +1,204 @@
+<!--
+  ~ Copyright (C) 2014 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+
+    <color name="omni_color5">@*android:color/accent_device_default_light</color>
+    <color name="omni_color4">@*android:color/accent_device_default_dark</color>
+    <color name="omni_color3">#80eeeeee</color>
+<!--    <color name="omni_color1">@*android:color/primary_dark_device_default_light</color> -->
+    <color name="omni_color2">@*android:color/primary_dark_device_default_settings</color>
+    <color name="omni_color1">@*android:color/primary_device_default_settings</color>
+    <color name="omni_color7">@*android:color/background_floating_device_default_dark</color>
+    <color name="omni_text1">#ffffffff</color>
+    <color name="omni_text2">#ffeeeeee</color>
+    <color name="omni_text3">#eeeeeeee</color>
+    <color name="primary_color">@color/omni_color5</color>
+    <color name="permission_check_activity_background">@color/omni_color2</color>
+
+    <!--  Action bar -->
+    <color name="action_bar_title_text_color">#ffffff</color>
+    <color name="action_bar_background_color">@color/omni_color5</color>
+    <color name="action_bar_background_color_dark">@color/omni_color4</color>
+    <color name="contextual_action_bar_background_color">@color/omni_color2</color>
+    <color name="archived_conversation_action_bar_background_color">@color/omni_color5</color>
+    <color name="archived_conversation_action_bar_background_color_dark">@color/omni_color4</color>
+
+    <!-- Conversation list -->
+    <color name="conversation_list_item_read">@color/omni_text2</color>
+    <color name="conversation_list_item_unread">@color/omni_text1</color>
+    <color name="conversation_list_error">#fff45342</color>
+    <color name="conversation_list_name">@color/omni_text1</color>
+    <color name="conversation_list_details">@color/omni_text3</color>
+
+    <color name="conversation_compose_divider_start">#44999999</color>
+
+    <color name="message_text">@color/omni_text1</color>
+    <color name="timestamp_text_outgoing">@color/omni_text3</color>
+    <color name="timestamp_text_incoming">#99ffffff</color>
+    <color name="timestamp_text_failed">#99ff0000</color>
+    <color name="compose_send_text_color">@color/omni_text1</color>
+
+    <color name="message_title_text">@color/omni_text1</color>
+    <color name="message_download_failed_status_text">@color/omni_text2</color>
+    <color name="message_info_text">#99ffffff</color>
+    <color name="message_info_text_incoming_download_failed">#6a6a6a</color>
+    <color name="message_download_failed_timestamp_text">#007fce</color>
+    <color name="message_failed_timestamp_text">#99ff0000</color>
+    <color name="message_action_status_text">#ffffffff</color>
+    <color name="message_action_info_text">#99ffffff</color>
+    <color name="message_action_timestamp_text">#ffffffff</color>
+
+    <color name="background_item_transparent">@android:color/transparent</color>
+    <color name="background_item_activated">@color/omni_color4</color>
+    <color name="background_item_selected">@color/omni_color7</color>
+    <color name="background_item_pressed">@color/omni_color2</color>
+
+    <color name="subject_editor_bubble">@color/omni_color7</color>
+    <color name="message_text_color_incoming">@color/omni_text3</color> <!-- fix white text on white bg #ffffffff-->
+    <color name="message_text_color_incoming_download_failed">#6a6a6a</color>
+    <color name="message_text_color_outgoing">@color/omni_text2</color>
+    <color name="conversation_background">@color/omni_color2</color>
+    <color name="conversation_edge_effect">#9d9d9d</color>
+    <color name="compose_message_send_color">@color/omni_color5</color>
+    <color name="compose_message_send_color_pressed">@color/omni_color3</color>
+    <color name="message_bubble_color_outgoing">@color/omni_color1</color>
+    <color name="message_error_bubble_color_incoming">#fff45342</color>
+    <color name="message_audio_button_color_incoming">@color/omni_color4</color>
+    <color name="message_bubble_color_selected">@color/omni_color3</color>
+    <color name="message_image_selected_tint">#80689F38</color>
+    <color name="generic_video_icon">#ff8f8f8f</color>
+
+    <!-- Base color used for color filtering. -->
+    <color name="color_filter_base_color">@color/omni_color1</color>
+
+    <!-- Activity background color -->
+    <drawable name="class_zero_background">@color/omni_color1</drawable>
+
+    <color name="contact_avatar_default_background">@color/omni_color2</color>
+    <color name="contact_avatar_pressed_color">#40ffffff</color>
+    <color name="contact_list_text_primary">@color/omni_text1</color>
+    <color name="contact_list_text_secondary">@color/omni_text2</color>
+
+    <color name="compose_contact_text">@color/omni_text1</color>
+    <color name="compose_contact_faint_text">@color/omni_text2</color>
+    <color name="compose_contact_divider">#44999999</color>
+    <color name="contact_picker_tab_pressed">#ddffffff</color>
+    <color name="contact_picker_tab_underline">@color/omni_color3</color>
+    <color name="contact_list_alphabet_header">@color/omni_color5</color>
+    <color name="contact_picker_background">@color/omni_color2</color>
+    <color name="chips_dropdown_background_activated">@color/omni_color3</color>
+    <color name="chips_dropdown_background_pressed">@color/omni_color4</color>
+    <color name="chips_background_color">@color/omni_color4</color>
+    <color name="chips_text_color">@color/omni_text1</color>
+
+    <color name="camera_button_container_background">#80000000</color>
+
+    <color name="translucent_white">#80ffffff</color>
+
+    <color name="gallery_image_default_background">#eeeeee</color>
+    <color name="gallery_image_pressed">#6733b5e5</color>
+    <color name="attachment_preview_more_items_text_background">@color/omni_color7</color>
+
+    <color name="letter_tile_font_color">#ffffff</color>
+
+    <color name="audio_picker_level_primary_color">#29ffffff</color>
+    <color name="audio_record_control_button_stroke">#30ffffff</color>
+    <color name="audio_picker_hint_text_color">#40ffffff</color>
+    <color name="audio_picker_timer_text_color">#dedede</color>
+    <color name="audio_attachment_timer_text_color">#dedede</color>
+    <color name="audio_progress_bar_color">@color/omni_color5</color>
+
+    <color name="notification_sender_text">#9A9A9A</color>
+    <color name="notification_secondary_text">#FFFFFF</color>
+    <color name="notification_tertiary_text">#FFFFFF</color>
+    <color name="wearable_notification_participants_count">#a2a2a2</color>
+    <color name="notification_accent_color">@color/omni_color5</color>
+    <color name="notification_warning_color">#ffffff</color>
+    <color name="notification_subject_color">@color/omni_text1</color>
+
+    <color name="participant_list_text_primary">@color/omni_text1</color>
+    <color name="participant_list_text_secondary">@color/omni_text2</color>
+    <color name="people_and_options_header_text">@color/omni_text1</color>
+    <color name="people_and_options_list_divider">#222222</color>
+
+    <color name="fab_color">@color/omni_color5</color>
+    <color name="fab_pressed_color">@color/omni_color3</color>
+    <color name="fab_ripple">@color/omni_color5</color>
+
+    <color name="message_text_counter_color">@color/omni_text1</color>
+    <color name="mms_indicator_color">@color/omni_color3</color>
+    <color name="list_empty_text">@color/omni_color2</color>
+    <color name="low_storage_action_item_color">#ffeeeeee</color>
+    <color name="unblock_item_text_color">@color/omni_color5</color>
+    <color name="open_conversation_animation_background_shadow">@color/omni_color1</color>
+    <color name="compose_notification_bar_background">@color/omni_color5</color>
+
+    <color name="sim_selector_text_primary">@color/omni_text1</color>
+    <color name="sim_selector_text_secondary">@color/omni_text2</color>
+    <color name="sim_selector_background_end">@color/omni_color2</color>
+    <color name="sim_selector_background_start">@color/omni_color1</color>
+    <color name="sim_indicator_color_light">#ffffff</color>
+    <color name="sim_indicator_color_dark">#777777</color>
+
+    <color name="text_highlight_color">@color/omni_color4</color>
+    <color name="search_view_text_cursor">@color/omni_color3</color>
+
+    <color name="button_bar_action_button_text_color">@color/omni_color4</color>
+    <color name="button_bar_cancel_button_text_color">@color/omni_color4</color>
+
+    <color name="settings_list_text_primary">@color/omni_text1</color>
+    <color name="settings_list_text_secondary">@color/omni_text2</color>
+    <color name="group_mms_setting_text_color">@color/omni_text2</color>
+    <color name="settings_item_title_text_primary">@color/omni_text2</color>
+
+    <color name="contact_picker_button_text_color">@color/omni_text1</color>
+
+    <color name="widget_text_color">@color/omni_text1</color>
+    <color name="widget_incoming_text_color">@color/omni_text1</color>
+    <color name="widget_outgoing_text_color">@color/omni_text2</color>
+    <color name="widget_background_color">@color/omni_color1</color>
+    <color name="ripple_material_light">@color/omni_color3</color>
+    <color name="widget_conversation_title_color">#FFFFFF</color>
+
+    <color name="attachment_chooser_audio_background">@color/omni_color7</color>
+    <color name="attachment_chooser_vcard_background">@color/omni_color7</color>
+
+    <color name="fastscroll_track_color">#1e999999</color>
+    <color name="fastscroll_thumb_color">#42999999</color>
+    <color name="fastscroll_preview_text_color">#999999</color>
+
+    <color name="google_gray">@color/omni_color7</color>
+    <color name="ic_launcher_background">@color/omni_color5</color>
+
+    <array name="letter_tile_colors">
+        <item>#8c2b23</item>
+        <item>#af164a</item>
+        <item>#51d847</item>
+        <item>#4e2b8c</item>
+        <item>#2e3b84</item>
+        <item>#2d5dad</item>
+        <item>#0071a8</item>
+        <item>#0f5d66</item>
+        <item>#02665c</item>
+        <item>#0b7743</item>
+        <item>#507a2c</item>
+        <item>#af4f00</item>
+        <item>#cc451a</item>
+        <item>#595959</item>
+    </array>
+</resources>
+
diff --git a/res/values-night/styles.xml b/res/values-night/styles.xml
new file mode 100644
index 0000000..5c26758
--- /dev/null
+++ b/res/values-night/styles.xml
@@ -0,0 +1,646 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<resources>
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by BugleBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="BugleBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+
+    <!-- Application theme. -->
+    <style name="BugleTheme" parent="BugleBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+         <item name="android:dropDownListViewStyle">@style/DropDownListViewStyle</item>
+         <item name="colorPrimary">@color/action_bar_background_color</item>
+         <item name="colorPrimaryDark">@color/action_bar_background_color</item>
+         <item name="android:textColorPrimary">@color/omni_text1</item>
+         <item name="android:textColorSecondary">@color/omni_text2</item>
+         <item name="android:textColorTertiary">@color/omni_text3</item>
+         <item name="colorAccent">@color/action_bar_background_color</item>
+         <item name="android:textColorHighlight">@color/text_highlight_color</item>
+         <item name="actionBarStyle">@style/BugleActionBar</item>
+         <item name="apnPreferenceStyle">@style/ApnPreference</item>
+         <item name="android:listViewStyle">@style/ListViewStyle</item>
+         <item name="android:expandableListViewStyle">@style/ExpandableListViewStyle</item>
+         <item name="actionBarPopupTheme">@style/PopupMenuStyleAppCompat</item>
+         <item name="android:actionBarPopupTheme">@style/PopupMenuStyleAppCompat</item>
+         <item name="alertDialogTheme">@style/BugleThemeAlertDialog</item>
+         <item name="android:alertDialogTheme">@style/BugleThemeAlertDialog</item>
+        </style>
+
+    <style name="ListViewStyle" parent="@android:style/Widget.DeviceDefault.ListView">
+        <item name="android:overScrollMode">always</item>
+        <item name="android:textColor">@color/message_title_text</item>
+        <item name="android:textColorPrimary">@color/omni_text1</item>
+        <item name="android:textColorSecondary">@color/omni_text2</item>
+        <item name="android:textColorTertiary">@color/omni_text3</item>
+        <item name="android:background">@color/contextual_action_bar_background_color</item>
+    </style>
+
+    <style name="ExpandableListViewStyle" parent="@android:style/Widget.DeviceDefault.ExpandableListView">
+        <item name="android:overScrollMode">always</item>
+        <item name="android:textColor">@color/message_title_text</item>
+        <item name="android:textColorPrimary">@color/omni_text1</item>
+        <item name="android:textColorSecondary">@color/omni_text2</item>
+        <item name="android:textColorTertiary">@color/omni_text3</item>
+        <item name="android:background">@color/contextual_action_bar_background_color</item>
+    </style>
+
+    <style name="PopupMenuStyleAppCompat" parent="@android:style/Theme.DeviceDefault.Dialog">
+    </style>
+
+    <style name="BugleTheme.ConversationActivity"
+        parent="@style/BugleTheme.ConversationActivityBase">
+    </style>
+
+    <style name="BugleTheme.ConversationActivityBase" parent="BugleTheme">
+        <item name="android:windowBackground">@color/conversation_background</item>
+        <item name="windowActionBarOverlay">true</item>
+        <item name="android:fastScrollPreviewBackgroundLeft">@drawable/contacts_fastscroll_label_left</item>
+        <item name="android:fastScrollPreviewBackgroundRight">@drawable/contacts_fastscroll_label_right</item>
+    </style>
+
+    <style name="BugleTheme.DialogActivity" parent="@style/Theme.AppCompat.Dialog">
+        <item name="android:colorAccent">@color/primary_color</item>
+        <item name="android:colorPrimary">@color/archived_conversation_action_bar_background_color</item>
+        <item name="android:colorPrimaryDark">@color/archived_conversation_action_bar_background_color</item>
+        <item name="android:background">@color/contextual_action_bar_background_color</item>\
+    </style>
+
+    <style name="BugleThemeDialog" parent="BugleTheme.DialogActivity">
+    </style>
+
+    <style name="BugleThemeAlertDialog" parent="@style/Theme.AppCompat.Dialog.Alert">
+        <item name="android:colorAccent">@color/primary_color</item>
+        <item name="android:colorPrimary">@color/archived_conversation_action_bar_background_color</item>
+        <item name="android:colorPrimaryDark">@color/archived_conversation_action_bar_background_color</item>
+        <item name="android:background">@color/contextual_action_bar_background_color</item>
+    </style>
+
+    <style name="BugleTheme.ConversationListActivity" parent="BugleTheme">
+        <item name="android:windowBackground">@color/contextual_action_bar_background_color</item>
+    </style>
+
+    <style name="BugleTheme.ArchivedConversationListActivity" parent="BugleTheme.ConversationListActivity">
+        <item name="colorPrimary">@color/archived_conversation_action_bar_background_color</item>
+        <item name="colorPrimaryDark">@color/archived_conversation_action_bar_background_color</item>
+    </style>
+
+    <style name="Invisible" parent="BugleBaseTheme">
+        <item name="android:windowBackground">@null</item>
+        <item name="android:windowContentOverlay">@null</item>
+        <item name="android:windowIsTranslucent">true</item>
+        <item name="android:windowAnimationStyle">@null</item>
+        <item name="android:windowDisablePreview">true</item>
+        <item name="android:windowNoDisplay">true</item>
+    </style>
+
+    <style name="BugleActionBar" parent="@style/Widget.AppCompat.ActionBar.Solid">
+        <item name="height">@dimen/action_bar_height</item>
+        <item name="displayOptions">showTitle</item>
+        <item name="titleTextStyle">@style/BugleActionBarTitleTextStyle</item>
+    </style>
+
+    <style name="BugleActionBarTitleTextStyle" parent="@style/TextAppearance.AppCompat.Widget.ActionBar.Title">
+      <item name="android:textColor">@color/action_bar_title_text_color</item>
+      <item name="android:textSize">@dimen/action_bar_text_size</item>
+      <item name="android:lines">1</item>
+    </style>
+
+    <style name="ConversationActionBarTitleTextStyle" parent="BugleActionBarTitleTextStyle">
+      <item name="android:background">?android:attr/selectableItemBackground</item>
+    </style>
+
+    <style name="BuglePhotoViewTheme" parent="PhotoViewTheme.Translucent">
+        <item name="actionModeShareDrawable">@drawable/ic_share_light</item>
+    </style>
+
+    <style name="ConversationMessageText">
+        <item name="android:background">@null</item>
+    </style>
+
+    <style name="ConversationMessage" parent="ConversationMessageText">
+        <item name="android:textSize">@dimen/conversation_message_text_size</item>
+        <item name="android:textColor">@color/message_text</item>
+    </style>
+
+    <style name="ConversationMessageStatus" parent="ConversationMessageText">
+        <item name="android:textSize">@dimen/conversation_status_text_size</item>
+    </style>
+
+    <style name="ConversationMessageTitle" parent="ConversationMessageText">
+        <item name="android:textSize">@dimen/conversation_title_text_size</item>
+        <item name="android:background">@null</item>
+        <item name="android:textColor">@color/message_title_text</item>
+    </style>
+
+    <style name="ConversationMessageInfo" parent="ConversationMessageText">
+        <item name="android:textSize">@dimen/conversation_info_text_size</item>
+        <item name="android:textColor">@color/message_info_text</item>
+    </style>
+
+    <style name="ConversationComposeSendText">
+        <item name="android:textColor">@color/compose_send_text_color</item>
+        <item name="android:singleLine">false</item>
+        <item name="android:textSize">@dimen/conversation_compose_send_text_size</item>
+        <item name="android:gravity">center_vertical</item>
+        <item name="android:fontFamily">sans-serif</item>
+        <item name="android:paddingLeft">@dimen/compose_message_text_box_padding_side</item>
+        <item name="android:paddingRight">@dimen/compose_message_text_box_padding_side</item>
+        <item name="android:minHeight">@dimen/conversation_message_contact_icon_size</item>
+        <item name="android:maxLines">4</item>
+        <item name="android:background">@null</item>
+        <item name="android:scrollHorizontally">false</item>
+        <item name="android:textCursorDrawable">@null</item>
+        <item name="android:inputType">textShortMessage|textAutoCorrect|textCapSentences|textMultiLine</item>
+    </style>
+
+    <style name="ConversationComposeSubjectText" parent="ConversationComposeSendText">
+        <item name="android:paddingLeft">18dp</item>
+        <item name="android:layout_marginLeft">@dimen/compose_message_subject_cancel_left_margin</item>
+    </style>
+
+    <style name="ContactListItem">
+        <item name="android:textSize">@dimen/contact_list_text_size</item>
+        <item name="android:textColor">@color/contact_list_text_primary</item>
+        <item name="android:background">@null</item>
+    </style>
+
+    <style name="ContactListItemDetail">
+        <item name="android:textSize">@dimen/contact_list_detail_text_size</item>
+        <item name="android:textColor">@color/contact_list_text_secondary</item>
+        <item name="android:background">@null</item>
+    </style>
+
+    <style name="ContactListItemDetailType" parent="ContactListItemDetail">
+        <item name="android:paddingLeft">12dp</item>
+    </style>
+
+    <style name="ContactListItemDrawableIndicator">
+        <item name="android:background">?android:attr/selectableItemBackground</item>
+    </style>
+
+    <style name="RecipientEditTextView">
+        <item name="android:textSize">@dimen/recipient_edit_text_size</item>
+        <item name="android:textColor">@color/compose_contact_text</item>
+        <item name="android:textColorHint">@color/compose_contact_faint_text</item>
+        <item name="android:fontFamily">sans-serif</item>
+        <item name="android:paddingLeft">4dp</item>
+        <item name="android:paddingRight">4dp</item>
+    </style>
+
+    <style name="PagerTabHeader">
+        <item name="android:textColor">@color/tab_text_color</item>
+        <item name="android:textSize">@dimen/pager_tab_header_text_size</item>
+        <item name="android:background">@null</item>
+        <item name="android:textStyle">bold</item>
+    </style>
+
+    <style name="ContactListAlphabetHeader">
+        <item name="android:textSize">@dimen/contact_list_alphabet_header_text_size</item>
+        <item name="android:textColor">@color/contact_list_alphabet_header</item>
+    </style>
+
+    <style name="AttachmentPreviewMoreItemsText">
+        <item name="android:textSize">@dimen/attachment_preview_more_items_text_size</item>
+        <item name="android:textColor">@android:color/white</item>
+    </style>
+
+    <style name="AudioPickerHintText">
+        <item name="android:textSize">@dimen/audio_picker_text_size</item>
+        <item name="android:textColor">@color/audio_picker_hint_text_color</item>
+    </style>
+
+    <style name="AudioPickerTimerText">
+        <item name="android:textSize">@dimen/audio_picker_text_size</item>
+        <item name="android:textColor">@color/audio_picker_timer_text_color</item>
+    </style>
+
+    <style name="AudioAttachmentTimerText">
+        <item name="android:textSize">@dimen/audio_attachment_text_size</item>
+        <item name="android:textColor">@color/audio_attachment_timer_text_color</item>
+        <item name="android:layout_marginRight">16dp</item>
+    </style>
+
+    <style name="AudioAttachmentViewStyle">
+        <item name="android:paddingRight">16dp</item>
+        <item name="android:paddingLeft">16dp</item>
+    </style>
+
+    <style name="VcardAttachmentSingleStyle">
+        <item name="android:paddingRight">@dimen/message_text_left_right_padding</item>
+        <item name="android:paddingLeft">@dimen/message_text_left_right_padding</item>
+    </style>
+
+    <style name="MessageVcardAttachmentStyle">
+        <item name="android:paddingRight">@dimen/message_text_left_right_padding</item>
+        <item name="android:paddingLeft">@dimen/message_text_left_right_padding</item>
+    </style>
+
+    <style name="NotificationSenderText">
+        <item name="android:textColor">@color/notification_sender_text</item>
+    </style>
+
+    <style name="NotificationSecondaryText">
+        <item name="android:textColor">@color/notification_secondary_text</item>
+    </style>
+
+    <style name="NotificationTertiaryText">
+        <item name="android:textColor">@color/notification_tertiary_text</item>
+    </style>
+
+    <style name="NotificationSubjectText">
+        <item name="android:textColor">@color/notification_subject_color</item>
+    </style>
+
+    <!-- Styles to support RTL for pre API 17 -->
+    <style name="AttachmentPreviewCloseButtonStyle">
+        <item name="android:gravity">left</item>
+    </style>
+
+    <style name="CameraChooserFrameStyle">
+        <item name="android:paddingLeft">16dp</item>
+    </style>
+
+    <style name="ComposeMessageViewAttachMediaButtonStyle">
+        <item name="android:paddingLeft">@dimen/compose_message_attachment_padding_sides</item>
+        <item name="android:paddingRight">@dimen/compose_message_attachment_padding_sides</item>
+        <item name="android:background">?android:attr/selectableItemBackground</item>
+    </style>
+
+    <style name="ContactListItemViewStyle">
+        <item name="android:paddingLeft">16dp</item>
+    </style>
+
+    <style name="ContactListItemLinearLayoutStyle">
+        <item name="android:paddingLeft">12dp</item>
+        <item name="android:paddingRight">24dp</item>
+    </style>
+
+    <style name="ConversationListItemViewPaddingStyle">
+        <item name="android:paddingLeft">@dimen/conversation_list_item_view_padding</item>
+        <item name="android:paddingRight">@dimen/conversation_list_item_view_padding</item>
+    </style>
+
+    <style name="ConversationListItemViewTextStyle">
+        <item name="android:includeFontPadding">false</item>
+        <item name="android:textSize">14sp</item>
+        <item name="android:background">@null</item>
+        <item name="android:textColor">@color/conversation_list_details</item>
+    </style>
+
+    <style name="ConversationListItemViewConversationNameStyle" parent="ConversationListItemViewTextStyle">
+        <item name="android:textSize">16sp</item>
+        <item name="android:textColor">@color/conversation_list_name</item>
+    </style>
+
+    <style name="ComposeMessageViewFrameLayoutStyle">
+        <item name="android:paddingRight">@dimen/compose_message_send_button_padding_right</item>
+    </style>
+
+    <style name="ConversationListFragmentStartNewButtonStyle">
+        <item name="android:layout_marginRight">@dimen/fab_left_right_margin</item>
+    </style>
+
+    <style name="GalleryGridItemViewCheckBoxStyle">
+        <item name="android:paddingRight">22dp</item>
+    </style>
+
+    <style name="AttachmentPreviewAttachmentStyle">
+        <item name="android:layout_marginLeft">10dp</item>
+    </style>
+
+    <style name="AudioAttachmentViewPlayPauseButtonStyle">
+        <item name="android:layout_marginRight">16dp</item>
+    </style>
+
+    <style name="ComposeMessageViewDraftViewStyle">
+        <item name="android:layout_marginLeft">53dp</item>
+        <item name="android:layout_marginRight">63dp</item>
+    </style>
+
+    <style name="ConversationMessageViewStyle">
+        <item name="android:paddingLeft">12dp</item>
+        <item name="android:paddingRight">12dp</item>
+    </style>
+
+    <style name="SubjectViewStyle">
+        <item name="android:paddingLeft">@dimen/compose_message_subject_left_padding</item>
+        <item name="android:paddingRight">@dimen/compose_message_subject_right_padding</item>
+    </style>
+
+    <style name="ParticipantListItem">
+        <item name="android:textSize">@dimen/participant_list_text_size</item>
+        <item name="android:textColor">@color/participant_list_text_primary</item>
+        <item name="android:background">@null</item>
+        <item name="android:layout_gravity">left|center_vertical</item>
+    </style>
+
+    <style name="AddContactConfirmationTextStyle" parent="ParticipantListItem">
+        <item name="android:paddingLeft">12dp</item>
+        <item name="android:paddingRight">24dp</item>
+    </style>
+
+    <style name="CopyContactDialogTextStyle" parent="ParticipantListItem">
+        <item name="android:paddingLeft">@dimen/copy_contact_dialog_left_padding</item>
+        <item name="android:paddingRight">@dimen/copy_contact_dialog_right_padding</item>
+    </style>
+
+    <style name="PeopleListItemViewStyle">
+        <item name="android:paddingLeft">16dp</item>
+    </style>
+
+    <style name="PeopleAndOptionsItemStyle">
+        <item name="android:paddingRight">16dp</item>
+        <item name="android:paddingLeft">16dp</item>
+    </style>
+
+    <style name="PeopleAndOptionsSectionHeader">
+        <item name="android:textSize">@dimen/people_and_options_header_text_size</item>
+        <item name="android:textColor">@color/people_and_options_header_text</item>
+        <item name="android:background">@null</item>
+    </style>
+
+    <style name="DropDownListViewStyle">
+      <item name="android:dividerHeight">0dp</item>
+    </style>
+
+    <style name="MmsIndicatorStyle">
+        <item name="android:textColor">@color/mms_indicator_color</item>
+        <item name="android:textSize">@dimen/mms_indicator_size</item>
+        <item name="android:fontFamily">sans-serif</item>
+        <item name="android:background">@null</item>
+        <item name="android:paddingRight">@dimen/compose_message_send_button_padding_right</item>
+        <item name="android:paddingTop">@dimen/compose_message_mms_indicator_padding_top</item>
+        <item name="android:layout_gravity">center_horizontal</item>
+    </style>
+
+    <style name="ListEmptyText">
+        <item name="android:textSize">@dimen/list_empty_text_size</item>
+        <item name="android:textColor">@color/list_empty_text</item>
+    </style>
+
+    <style name="LowStorageActionItemStyle">
+        <item name="android:textColor">@color/low_storage_action_item_color</item>
+        <item name="android:textSize">@dimen/low_storage_action_item_text_size</item>
+        <item name="android:singleLine">false</item>
+    </style>
+
+    <style name="SnackBarMessageWrapper">
+        <item name="android:layout_marginLeft">@dimen/snack_bar_left_right_margin</item>
+        <item name="android:layout_marginRight">0dp</item>
+    </style>
+
+    <style name="SnackBarText">
+        <item name="android:textColor">@android:color/white</item>
+        <item name="android:textSize">14sp</item>
+        <item name="android:fontFamily">sans-serif</item>
+    </style>
+
+    <style name="SmsDeliverdBadge">
+        <item name="android:layout_marginLeft">4dp</item>
+    </style>
+
+    <style name="appTitleStyle">
+        <item name="android:textColor">@android:color/black</item>
+        <item name="android:textSize">20sp</item>
+        <item name="android:ellipsize">end</item>
+    </style>
+
+    <style name="appVersionStyle">
+        <item name="android:textColor">@android:color/black</item>
+        <item name="android:textSize">14sp</item>
+        <item name="android:ellipsize">end</item>
+    </style>
+
+    <style name="appCopyrightStyle">
+        <item name="android:textColor">@android:color/black</item>
+        <item name="android:textSize">12sp</item>
+        <item name="android:ellipsize">end</item>
+    </style>
+
+    <style name="ChipDeleteIconStyle">
+        <item name="android:paddingLeft">8dp</item>
+    </style>
+
+    <style name="ChipIconStyle">
+        <item name="android:layout_marginRight">12dp</item>
+    </style>
+
+    <style name="SimSelectorItem">
+        <item name="android:textSize">@dimen/sim_selector_text_size</item>
+        <item name="android:textColor">@color/sim_selector_text_primary</item>
+        <item name="android:background">@null</item>
+        <item name="android:layout_gravity">right</item>
+    </style>
+
+    <style name="SimSelectorItemDetail">
+        <item name="android:textSize">@dimen/sim_selector_detail_text_size</item>
+        <item name="android:textColor">@color/sim_selector_text_secondary</item>
+        <item name="android:background">@null</item>
+        <item name="android:layout_gravity">right</item>
+    </style>
+
+    <style name="SimSelectorItemLinearLayoutStyle">
+        <item name="android:paddingRight">12dp</item>
+    </style>
+
+    <style name="MessageSimIndicator">
+        <item name="android:textSize">@dimen/conversation_status_text_size</item>
+        <item name="android:layout_marginLeft">4dp</item>
+    </style>
+
+    <style name="ColorAccentBlueOverrideStyle">
+        <item name="colorAccent">@color/action_bar_background_color</item>
+    </style>
+
+    <style name="ColorAccentGrayOverrideStyle">
+        <item name="colorAccent">@color/search_view_text_cursor</item>
+    </style>
+
+    <style name="ApnPreference">
+        <item name="android:layout">@layout/apn_preference_layout</item>
+    </style>
+
+    <style name="ApnPreferenceLayoutStyle">
+        <item name="android:paddingLeft">?android:attr/listPreferredItemPaddingStart</item>
+        <item name="android:paddingRight">?android:attr/listPreferredItemPaddingEnd</item>
+    </style>
+
+    <style name="GroupMmsSettingItem">
+        <item name="android:textSize">@dimen/group_mms_setting_text_size</item>
+        <item name="android:textColor">@color/group_mms_setting_text_color</item>
+        <item name="android:layout_marginLeft">20dp</item>
+        <item name="android:layout_marginRight">20dp</item>
+        <item name="android:layout_marginTop">16dp</item>
+        <item name="android:paddingLeft">10dp</item>
+        <item name="android:paddingRight">10dp</item>
+        <item name="android:background">?android:attr/selectableItemBackground</item>
+    </style>
+
+    <style name="DebugMmsConfigItemStyle">
+        <item name="android:paddingLeft">16dp</item>
+        <item name="android:paddingRight">16dp</item>
+    </style>
+
+    <style name="WidgetTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
+        <item name="android:textColor">@color/action_bar_title_text_color</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:layout_marginEnd">8dp</item>
+    </style>
+
+    <style name="WidgetConversationTitle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title">
+        <item name="android:textColor">@color/widget_conversation_title_color</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:layout_marginRight">8dp</item>
+        <item name="android:textSize">@dimen/widget_conversation_title_size</item>
+        <item name="android:shadowColor">#000000</item>
+        <item name="android:shadowDx">0</item>
+        <item name="android:shadowDy">2</item>
+        <item name="android:shadowRadius">1</item>
+    </style>
+
+    <style name="WidgetHeaderImage">
+        <item name="android:paddingStart">4dip</item>
+    </style>
+
+    <style name="WidgetConversationListItemAvatar">
+        <item name="android:layout_marginEnd">12dp</item>
+        <item name="android:layout_marginStart">8dp</item>
+        <item name="android:layout_alignParentStart">true</item>
+    </style>
+
+    <style name="WidgetConversationItemAvatarIncoming">
+        <item name="android:layout_marginStart">8dp</item>
+        <item name="android:layout_alignParentStart">true</item>
+    </style>
+
+    <style name="WidgetConversationItemAvatarOutgoing">
+        <item name="android:layout_marginRight">8dp</item>
+        <item name="android:layout_alignParentRight">true</item>
+    </style>
+
+    <style name="WidgetConversationItemBodyIncoming">
+        <item name="android:layout_toRightOf">@id/avatarFrame</item>
+    </style>
+
+    <style name="WidgetConversationItemBodyOutgoing">
+        <item name="android:layout_toLeftOf">@id/avatarFrame</item>
+    </style>
+
+    <style name="WidgetConversationItemIncoming">
+        <item name="android:layout_marginRight">5dp</item>
+        <item name="android:layout_alignParentLeft">true</item>
+        <item name="android:layout_toLeftOf">@id/date</item>
+    </style>
+
+    <style name="WidgetConversationItemIncomingAvatarShadow">
+        <item name="android:layout_marginLeft">4dp</item>
+    </style>
+
+    <style name="WidgetConversationItemOutgoingAvatarShadow">
+        <item name="android:layout_marginLeft">-4dp</item>
+    </style>
+
+    <style name="WidgetConversationAppIcon" parent="WidgetHeaderImage">
+        <item name="android:layout_marginLeft">-20dp</item>
+    </style>
+
+    <style name="WidgetConversationItemDate">
+        <item name="android:layout_marginRight">8dp</item>
+        <item name="android:layout_marginLeft">5dp</item>
+        <item name="android:layout_alignParentLeft">true</item>
+    </style>
+
+    <style name="WidgetConversationItemFailed">
+        <item name="android:layout_gravity">bottom|right</item>
+    </style>
+
+    <style name="WidgetConversationItemAttachment">
+        <item name="android:layout_gravity">bottom|right</item>
+    </style>
+
+    <style name="WidgetConversationItemWidget">
+        <item name="android:layout_marginRight">8dp</item>
+        <item name="android:layout_marginLeft">5dp</item>
+        <item name="android:layout_alignParentLeft">true</item>
+    </style>
+
+    <style name="WidgetConversationListItemBody">
+        <item name="android:layout_toRightOf">@id/avatarFrame</item>
+    </style>
+
+    <style name="WidgetConversationListItemFrom">
+        <item name="android:layout_marginRight">5dp</item>
+        <item name="android:layout_alignParentLeft">true</item>
+    </style>
+
+    <style name="WidgetConversationListItemDate">
+        <item name="android:layout_marginRight">8dp</item>
+        <item name="android:layout_marginLeft">5dp</item>
+        <item name="android:layout_gravity">right</item>
+    </style>
+
+    <style name="WidgetLoading">
+        <item name="android:layout_marginLeft">16dp</item>
+    </style>
+
+    <style name="WidgetConversationListItemStyle">
+        <item name="android:layout_height">80dp</item>
+    </style>
+
+    <style name="AttachmentGridItemViewCheckBoxStyle">
+        <item name="android:paddingRight">4dp</item>
+    </style>
+
+    <style name="PromoScreenTextStyle">
+        <item name="android:paddingLeft">40dp</item>
+        <item name="android:paddingRight">40dp</item>
+        <item name="android:textSize">16sp</item>
+        <item name="android:textColor">@android:color/white</item>
+        <item name="android:fontFamily">roboto-regular</item>
+    </style>
+    <style name="PromoScreenTextStyle.CenterAligned">
+        <item name="android:textAlignment">center</item>
+    </style>
+    <style name="PromoScreenButtonStyle">
+        <item name="android:textSize">14sp</item>
+        <item name="android:fontFamily">roboto-medium</item>
+        <item name="android:textAllCaps">true</item>
+        <item name="android:textStyle">bold</item>
+        <item name="android:background">?android:attr/selectableItemBackground</item>
+        <item name="android:textColor">@android:color/white</item>
+        <item name="android:gravity">center</item>
+    </style>
+    <style name="DirectoryHeaderStyle">
+        <item name="android:paddingLeft">@dimen/directory_header_padding_start</item>
+        <item name="android:paddingStart">@dimen/directory_header_padding_start</item>
+        <item name="android:paddingRight">@dimen/directory_header_padding_end</item>
+        <item name="android:paddingEnd">@dimen/directory_header_padding_end</item>
+        <item name="android:paddingTop">@dimen/directory_header_padding_top</item>
+        <item name="android:paddingBottom">@dimen/directory_header_padding_bottom</item>
+        <item name="android:textSize">@dimen/directory_header_text_size</item>
+        <item name="android:textStyle">bold</item>
+    </style>
+</resources>
diff --git a/res/values-nl/custom_strings.xml b/res/values-nl/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-nl/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 8312dcc..53bf59f 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"Mms"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Geavanceerd"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Fouten opsporen"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Meldingen"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Meldingen"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Geluid"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Stil"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Trillen"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 3ccc046..065fbe7 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"ਉੱਨਤ"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ਡੀਬਗ ਕਰੋ"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"ਸੂਚਨਾਵਾਂ"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"ਸੂਚਨਾਵਾਂ"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ਅਵਾਜ਼"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"ਸਾਈਲੈਂਟ"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"ਵਾਈਬ੍ਰੇਟ"</string>
diff --git a/res/values-pl/custom_strings.xml b/res/values-pl/custom_strings.xml
new file mode 100644
index 0000000..792c588
--- /dev/null
+++ b/res/values-pl/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Oznacz jako przeczytane</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Przesuń, aby usunąć</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Przesuń w prawo, aby usunąć konwersację</string>
+</resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 1f21955..022e3bf 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -294,7 +294,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Zaawansowane"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Debugowanie"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Powiadomienia"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Powiadomienia"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Dźwięk"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Cichy"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Wibracje"</string>
diff --git a/res/values-pt-rBR/custom_strings.xml b/res/values-pt-rBR/custom_strings.xml
new file mode 100644
index 0000000..c9eb2c0
--- /dev/null
+++ b/res/values-pt-rBR/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Marcar como lido</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Deslize para excluir</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Deslize para a direita para apagar uma conversa</string>
+</resources>
diff --git a/res/values-pt-rPT/custom_strings.xml b/res/values-pt-rPT/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-pt-rPT/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 5c64052..0406b60 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avançadas"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Depurar"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notificações"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notificações"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Som"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silencioso"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrar"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index bd60502..0715cfc 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avançadas"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Depurar"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notificações"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notificações"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Som"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silencioso"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibração"</string>
diff --git a/res/values-rm/custom_strings.xml b/res/values-rm/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-rm/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-ro/custom_strings.xml b/res/values-ro/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-ro/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 2f9c5a7..21476ec 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -276,7 +276,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avansate"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Remedierea erorilor"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Notificări"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Notificări"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Sunet"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Silențios"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrații"</string>
diff --git a/res/values-ru/custom_strings.xml b/res/values-ru/custom_strings.xml
new file mode 100644
index 0000000..118f442
--- /dev/null
+++ b/res/values-ru/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Отметить как прочитанное</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Смахните для удаления</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Смахните вправо для удаления диалога</string>
+</resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 132f8c4..72cf3fc 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -294,7 +294,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Дополнительные настройки"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Выполнить отладку"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Уведомления"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Уведомления"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Звуковой сигнал"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Без звука"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Вибросигнал"</string>
diff --git a/res/values-si/custom_strings.xml b/res/values-si/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-si/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 80c7cd7..b9f5942 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"උසස්"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"නිදොස්කරණය"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"දැනුම්දීම්"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"දැනුම්දීම්"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ශබ්දය"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"නිහඬ"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"කම්පනය වන්න"</string>
diff --git a/res/values-sk/custom_strings.xml b/res/values-sk/custom_strings.xml
new file mode 100644
index 0000000..876bb9c
--- /dev/null
+++ b/res/values-sk/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Označiť ako prečítané</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Potiahnuť pre vymazanie</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Potiahnite vpravo pre vymazanie konverzácie</string>
+</resources>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 1056a95..b0e7c40 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -294,7 +294,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Rozšírené"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Ladiť"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Upozornenia"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Upozornenia"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Zvuk"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Tichý režim"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibrovanie"</string>
diff --git a/res/values-sl/custom_strings.xml b/res/values-sl/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-sl/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 6c85318..8cff530 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -294,7 +294,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Dodatno"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Odpravljanje napak"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Obvestila"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Obvestila"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Zvok"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Tiho"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibriranje"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index f7b858c..f25792d 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Të përparuara"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Korrigjo"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Njoftime"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Njoftime"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Zëri"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Hesht"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Dridh"</string>
diff --git a/res/values-sr/custom_strings.xml b/res/values-sr/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-sr/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index a1262a0..a15ee79 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -276,7 +276,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Напредно"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Отклањање грешака"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Обавештења"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Обавештења"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Звук"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Нечујно"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Вибрација"</string>
diff --git a/res/values-sv/custom_strings.xml b/res/values-sv/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-sv/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 01d5820..5526704 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"Mms"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Avancerat"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Felsökning"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Aviseringar"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Aviseringar"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Ljud"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Tyst"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Vibration"</string>
diff --git a/res/values-sw/custom_strings.xml b/res/values-sw/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-sw/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index 87b12ae..d73a706 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Mahiri"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Tatua"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Arifa"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Arifa"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Mlio"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Kimya"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Tetema"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 327e454..a218473 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"மேம்பட்டவை"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"பிழைத்திருத்து"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"அறிவிப்புகள்"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"அறிவிப்புகள்"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ஒலி"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"நிசப்தம்"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"அதிர்வு"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index f2dabb2..dee7719 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"అధునాతనం"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"డీబగ్"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"నోటిఫికేషన్‌లు"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"నోటిఫికేషన్‌లు"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"ధ్వని"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"నిశ్శబ్దం"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"వైబ్రేట్"</string>
diff --git a/res/values-th/custom_strings.xml b/res/values-th/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-th/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 3768ca8..5b84716 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"ขั้นสูง"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"แก้ไขข้อบกพร่อง"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"การแจ้งเตือน"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"การแจ้งเตือน"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"เสียง"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"เงียบ"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"สั่น"</string>
diff --git a/res/values-tl/custom_strings.xml b/res/values-tl/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-tl/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 091949f..bb68969 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Advanced"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"I-debug"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Mga Notification"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Mga Notification"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Tunog"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Naka-silent"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Mag-vibrate"</string>
diff --git a/res/values-tr/custom_strings.xml b/res/values-tr/custom_strings.xml
new file mode 100644
index 0000000..10c5138
--- /dev/null
+++ b/res/values-tr/custom_strings.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Okundu olarak işaretle</string>
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Silmek için kaydırma</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Bir sohbeti silmek için sağa kaydırın</string>
+</resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 7d7fefb..a09013c 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Gelişmiş"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Hata Ayıklama"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Bildirimler"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Bildirimler"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Ses"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Sessiz"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Titreşim"</string>
diff --git a/res/values-uk/custom_strings.xml b/res/values-uk/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-uk/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index 1fa8a2e..bb4fc3f 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -294,7 +294,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Додатково"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Налагодження"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Сповіщення"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Сповіщення"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Сигнал"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Без звуку"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Вібросигнал"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 68217ca..58d4da2 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"جدید ترین"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"ڈیبگ کریں"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"اطلاعات"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"اطلاعات"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"آواز"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"خاموش"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"وائبریٹ"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 4d84ca1..706f7de 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Qo‘shimcha"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Tuzatish"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Bildirishnomalar"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Bildirishnomalar"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Ovoz"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Ovozsiz"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Tebranish"</string>
diff --git a/res/values-v21/styles.xml b/res/values-v21/styles.xml
index aef5d1c..3fab996 100644
--- a/res/values-v21/styles.xml
+++ b/res/values-v21/styles.xml
@@ -20,11 +20,6 @@
         <item name="android:colorEdgeEffect">@color/conversation_edge_effect</item>
     </style>
 
-    <style name="BugleTheme.DialogActivity" parent="@style/Theme.AppCompat.Light.Dialog">
-        <item name="android:windowNoTitle">false</item>
-        <item name="android:background">@android:color/white</item>
-    </style>
-
     <style name="ContactListItemDrawableIndicator">
         <item name="android:background">?android:attr/selectableItemBackgroundBorderless</item>
     </style>
diff --git a/res/values-v31/colors.xml b/res/values-v31/colors.xml
new file mode 100644
index 0000000..5290243
--- /dev/null
+++ b/res/values-v31/colors.xml
@@ -0,0 +1,19 @@
+<!--
+  ~ Copyright (C) 2014 The Android Open Source Project
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+    <color name="ic_launcher_background">@android:color/system_accent1_600</color>
+</resources>
\ No newline at end of file
diff --git a/res/values-v31/styles.xml b/res/values-v31/styles.xml
new file mode 100644
index 0000000..bc7e3fd
--- /dev/null
+++ b/res/values-v31/styles.xml
@@ -0,0 +1,54 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<resources>
+    <!--
+        Base application theme, dependent on API level. This theme is replaced
+        by BugleBaseTheme from res/values-vXX/styles.xml on newer devices.
+    -->
+    <style name="BugleBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+        <!--
+            Theme customizations available in newer API levels can go in
+            res/values-vXX/styles.xml, while customizations related to
+            backward-compatibility can go here.
+        -->
+    </style>
+
+
+    <!-- Application theme. -->
+    <style name="BugleTheme" parent="BugleBaseTheme">
+        <!-- All customizations that are NOT specific to a particular API-level can go here. -->
+         <item name="android:dropDownListViewStyle">@style/DropDownListViewStyle</item>
+         <item name="colorPrimary">@color/action_bar_background_color</item>
+         <item name="colorPrimaryDark">@color/action_bar_background_color</item>
+         <item name="colorAccent">@color/action_bar_background_color</item>
+         <item name="android:textColorHighlight">@color/text_highlight_color</item>
+         <item name="actionBarStyle">@style/BugleActionBar</item>
+         <item name="apnPreferenceStyle">@style/ApnPreference</item>
+         <item name="android:listViewStyle">@style/ListViewStyle</item>
+         <item name="actionBarPopupTheme">@style/PopupMenuStyleAppCompat</item>
+         <item name="android:actionBarPopupTheme">@style/PopupMenuStyleAppCompat</item>
+         <item name="alertDialogTheme">@style/BugleThemeAlertDialog</item>
+         <item name="android:alertDialogTheme">@style/BugleThemeAlertDialog</item>
+        <item name="preferenceTheme">@style/Omni.PreferenceTheme</item>
+        <item name="android:switchStyle">@style/Omni.SwitchStyle</item>
+        <item name="android:textAppearanceListItem">@style/Omni.PreferenceTitle</item>
+        <item name="android:navigationBarColor">@android:color/transparent</item>
+    </style>
+
+    <style name="BugleTheme.SettingsActivity" parent="BugleTheme">
+    </style>
+</resources>
diff --git a/res/values-vi/custom_strings.xml b/res/values-vi/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-vi/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 4923847..49595c7 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Nâng cao"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Gỡ lỗi"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Thông báo"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Thông báo"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Âm thanh"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Im lặng"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Rung"</string>
diff --git a/res/values-zh-rCN/custom_strings.xml b/res/values-zh-rCN/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-zh-rCN/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 77dbfae..59be09d 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"彩信"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"高级"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"调试"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"通知"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"通知"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"提示音"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"静音"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"振动"</string>
diff --git a/res/values-zh-rHK/custom_strings.xml b/res/values-zh-rHK/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-zh-rHK/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index a5c690f..f96a4ef 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"進階"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"除錯"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"通知"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"通知"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"音效"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"靜音"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"震動"</string>
diff --git a/res/values-zh-rTW/custom_strings.xml b/res/values-zh-rTW/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-zh-rTW/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index c911ea7..9141894 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"多媒體訊息"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"進階"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"偵錯"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"通知"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"通知"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"音效"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"靜音"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"震動"</string>
diff --git a/res/values-zu/custom_strings.xml b/res/values-zu/custom_strings.xml
new file mode 100644
index 0000000..bd81d34
--- /dev/null
+++ b/res/values-zu/custom_strings.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Mark message as read -->
+    <!-- Swipe to delete conversation -->
+</resources>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 0221bcd..d37a626 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -258,7 +258,7 @@
     <string name="mms_messaging_category_pref_title" msgid="4816815152658525660">"I-MMS"</string>
     <string name="advanced_category_pref_title" msgid="6411454224069259687">"Okuthuthukisiwe"</string>
     <string name="debug_category_pref_title" msgid="8765138968242505061">"Lungisa iphutha"</string>
-    <string name="notifications_enabled_pref_title" msgid="4127288731844373795">"Izaziso"</string>
+    <string name="notifications_pref_title" msgid="4127288731844373795">"Izaziso"</string>
     <string name="notification_sound_pref_title" msgid="3685506528957337849">"Umsindo"</string>
     <string name="silent_ringtone" msgid="8073534180322059814">"Thulile"</string>
     <string name="notification_vibrate_pref_title" msgid="6668564570045187390">"Dlidlizela"</string>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 0ecd2c2..11735ab 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -36,20 +36,20 @@
     <color name="conversation_compose_divider_start">#44000000</color>
 
     <color name="message_text">#000000</color>
-    <color name="timestamp_text_outgoing">#99323232</color>
-    <color name="timestamp_text_incoming">#99ffffff</color>
+    <color name="timestamp_text_outgoing">#99000000</color>
+    <color name="timestamp_text_incoming">#99000000</color>
     <color name="timestamp_text_failed">#99ff0000</color>
     <color name="compose_send_text_color">#000000</color>
 
     <color name="message_title_text">#ff323232</color>
     <color name="message_download_failed_status_text">#000000</color>
-    <color name="message_info_text">#99ffffff</color>
+    <color name="message_info_text">#99000000</color>
     <color name="message_info_text_incoming_download_failed">#6a6a6a</color>
     <color name="message_download_failed_timestamp_text">#007fce</color>
     <color name="message_failed_timestamp_text">#99ff0000</color>
-    <color name="message_action_status_text">#ffffffff</color>
-    <color name="message_action_info_text">#99ffffff</color>
-    <color name="message_action_timestamp_text">#ffffffff</color>
+    <color name="message_action_status_text">#000000</color>
+    <color name="message_action_info_text">#99000000</color>
+    <color name="message_action_timestamp_text">#ff000000</color>
 
     <color name="background_item_transparent">@android:color/transparent</color>
     <color name="background_item_activated">#670099cc</color>
@@ -57,14 +57,14 @@
     <color name="background_item_pressed">#6733b5e5</color>
 
     <color name="subject_editor_bubble">#ffffffff</color>
-    <color name="message_text_color_incoming">#ffffffff</color>
+    <color name="message_text_color_incoming">#ff000000</color>
     <color name="message_text_color_incoming_download_failed">#6a6a6a</color>
     <color name="message_text_color_outgoing">#ff323232</color>
-    <color name="conversation_background">#eeeeee</color>
+    <color name="conversation_background">#ffffff</color>
     <color name="conversation_edge_effect">#9d9d9d</color>
     <color name="compose_message_send_color">@color/primary_color</color>
     <color name="compose_message_send_color_pressed">#999999</color>
-    <color name="message_bubble_color_outgoing">#ffffffff</color>
+    <color name="message_bubble_color_outgoing">#ffeeeeee</color>
     <color name="message_error_bubble_color_incoming">#e2e2e2</color>
     <color name="message_audio_button_color_incoming">#ffffffff</color>
     <color name="message_bubble_color_selected">#8BC34A</color>
@@ -122,7 +122,6 @@
     <color name="notification_subject_color">#99aaaaaa</color>
 
     <color name="participant_list_text_primary">#4d4d4d</color>
-    <color name="participant_list_text_secondary">#6d6d6d</color>
     <color name="people_and_options_header_text">#6d6d6d</color>
     <color name="people_and_options_list_divider">#cccccc</color>
 
@@ -173,4 +172,22 @@
     <color name="fastscroll_preview_text_color">#ffffff</color>
 
     <color name="google_gray">#F1F1F1</color>
+    <color name="ic_launcher_background">@color/primary_color</color>
+
+    <array name="letter_tile_colors">
+        <item>#DB4437</item>
+        <item>#E91E63</item>
+        <item>#9C27B0</item>
+        <item>#673AB7</item>
+        <item>#3F51B5</item>
+        <item>#4285F4</item>
+        <item>#039BE5</item>
+        <item>#0097A7</item>
+        <item>#009688</item>
+        <item>#0F9D58</item>
+        <item>#689F38</item>
+        <item>#EF6C00</item>
+        <item>#FF5722</item>
+        <item>#757575</item>
+    </array>
 </resources>
diff --git a/res/values/constants.xml b/res/values/constants.xml
index e494e95..7da36a1 100644
--- a/res/values/constants.xml
+++ b/res/values/constants.xml
@@ -21,8 +21,7 @@
     <string name="notifications_category_pref_key" translatable="false">notifications_category</string>
     <string name="mms_messaging_category_pref_key" translatable="false">mms_messaging_category</string>
     <string name="advanced_category_pref_key" translatable="false">advanced_category</string>
-    <string name="notifications_enabled_pref_key" translatable="false">notifications_enabled</string>
-    <bool name="notifications_enabled_pref_default" translatable="false">true</bool>
+    <string name="notifications_pref_key" translatable="false">notifications_enabled</string>
     <string name="notification_sound_pref_key" translatable="false">notification_sound</string>
     <string name="notification_vibration_pref_key" translatable="false">notification_vibration</string>
     <bool name="notification_vibration_pref_default" translatable="false">true</bool>
diff --git a/res/values/custom_constants.xml b/res/values/custom_constants.xml
new file mode 100644
index 0000000..2870fc4
--- /dev/null
+++ b/res/values/custom_constants.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources>
+
+    <!-- Preference keys for user-visible settings -->
+    <!-- Application-wide settings -->
+    <string name="swipe_right_deletes_conversation_key" translatable="false">swipe_right_deletes_conversation</string>
+
+    <!-- This should really go into a config xml, but whoever wrote this app is an idiot, so follow their pattern -->
+    <bool name="swipe_right_deletes_conversation_default" translatable="false">false</bool>
+
+</resources>
diff --git a/res/values/custom_dimens.xml b/res/values/custom_dimens.xml
new file mode 100644
index 0000000..55d248c
--- /dev/null
+++ b/res/values/custom_dimens.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (C) 2015 The Android Open Source Project
+
+    Licensed under the Apache License, Version 2.0 (the "License");
+    you may not use this file except in compliance with the License.
+    You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+-->
+<resources>
+
+    <dimen name="fab_list_bottom_padding">88dp</dimen>
+
+</resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
new file mode 100644
index 0000000..3eaaee2
--- /dev/null
+++ b/res/values/custom_strings.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 Omnirom
+  ~
+  ~ Licensed under the Apache License, Version 2.0 (the "License");
+  ~ you may not use this file except in compliance with the License.
+  ~ You may obtain a copy of the License at
+  ~
+  ~      http://www.apache.org/licenses/LICENSE-2.0
+  ~
+  ~ Unless required by applicable law or agreed to in writing, software
+  ~ distributed under the License is distributed on an "AS IS" BASIS,
+  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  ~ See the License for the specific language governing permissions and
+  ~ limitations under the License
+  -->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <!-- Mark message as read -->
+    <string name="notification_mark_as_read">Mark as read</string>
+
+    <!-- Swipe to delete conversation -->
+    <string name="swipe_to_delete_conversation_pref_title">Swipe to delete</string>
+    <string name="swipe_to_delete_conversation_pref_summary">Swipe to the right to delete a conversation</string>
+
+    <string name="value_yes">Yes</string>
+    <string name="value_no">No</string>
+
+    <!-- Notification channel -->
+    <string name="notification_channel_messages_title">Messages</string>
+</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 0795ebc..8a72315 100644
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -29,12 +29,11 @@
     <dimen name="contact_icon_view_small_size">12dp</dimen>
     <dimen name="conversation_list_item_view_padding">16dp</dimen>
     <dimen name="conversation_list_first_item_extra_padding">8dp</dimen>
-    <dimen name="conversation_list_image_preview_corner_radius">3dp</dimen>
+    <dimen name="conversation_list_image_preview_corner_radius">16dp</dimen>
     <dimen name="conversation_list_image_preview_size">56dp</dimen>
-    <dimen name="conversation_list_contact_icon_size">56dp</dimen>
+    <dimen name="conversation_list_contact_icon_size">42dp</dimen>
     <dimen name="conversation_message_contact_icon_size">42dp</dimen>
     <dimen name="conversation_message_photo_min_size">96dp</dimen>
-    <dimen name="conversation_list_notification_bell_padding">4dp</dimen>
     <dimen name="conversation_list_empty_text_bottom_margin">30dp</dimen>
     <dimen name="blocked_participant_list_item_view_padding">16dp</dimen>
 
@@ -105,11 +104,10 @@
 
     <!-- Videos in the message list view should at least be this big in the smallest dimension -->
     <dimen name="video_message_min_size">320dp</dimen>
-    <dimen name="attachment_rounded_corner_radius">3dp</dimen>
+    <dimen name="attachment_rounded_corner_radius">16dp</dimen>
     <dimen name="progress_indicator_default_stroke_width">2dp</dimen>
     <dimen name="progress_indicator_default_radius">12dp</dimen>
     <dimen name="participant_list_text_size">18sp</dimen>
-    <dimen name="participant_list_detail_text_size">14sp</dimen>
     <dimen name="people_and_options_header_text_size">16sp</dimen>
     <dimen name="image_attachment_fallback_width">240dp</dimen>
     <dimen name="image_attachment_fallback_height">240dp</dimen>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index e5c442d..86db324 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -257,10 +257,6 @@
     <string name="action_archive">Archive</string>
     <!-- Action menu title for unarchiving selected conversations in conversation list -->
     <string name="action_unarchive">Unarchive</string>
-    <!-- Action menu title for turning off notification for the selected conversations in conversation list -->
-    <string name="action_notification_off">Turn off notifications</string>
-    <!-- Action menu title for turning on notification for the selected conversations in conversation list -->
-    <string name="action_notification_on">Turn on notifications</string>
     <!-- Action menu title for adding the contacts for the selected conversations in conversation list -->
     <string name="action_add_contact">Add contact</string>
     <!-- Action menu title for downloading failed message selected in conversation -->
@@ -440,13 +436,9 @@
     <!-- Preference category: Debug -->
     <string name="debug_category_pref_title">Debug</string>
     <!-- Title for the preference for whether or to notify the user of new messages -->
-    <string name="notifications_enabled_pref_title">Notifications</string>
+    <string name="notifications_pref_title">Notifications</string>
     <!-- Title for the notification sound preference -->
-    <string name="notification_sound_pref_title">Sound</string>
-    <!-- What to display in the settings screen for Ringtone when the user chooses "silent" [CHAR LIMIT=100]-->
     <string name="silent_ringtone">Silent</string>
-    <!-- Title for the preference for whether or not to vibrate with notifications -->
-    <string name="notification_vibrate_pref_title">Vibrate</string>
     <string name="blocked_pref_title">Blocked</string>
     <!-- Title for the preference for whether or not to request/show delivery reports for SMS -->
     <string name="delivery_reports_pref_title">SMS delivery reports</string>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 6f9be47..b24a3aa 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -33,11 +33,30 @@
         <!-- All customizations that are NOT specific to a particular API-level can go here. -->
          <item name="android:dropDownListViewStyle">@style/DropDownListViewStyle</item>
          <item name="colorPrimary">@color/action_bar_background_color</item>
-         <item name="colorPrimaryDark">@color/action_bar_background_color_dark</item>
+         <item name="colorPrimaryDark">@color/action_bar_background_color</item>
          <item name="colorAccent">@color/action_bar_background_color</item>
          <item name="android:textColorHighlight">@color/text_highlight_color</item>
          <item name="actionBarStyle">@style/BugleActionBar</item>
          <item name="apnPreferenceStyle">@style/ApnPreference</item>
+         <item name="android:listViewStyle">@style/ListViewStyle</item>
+         <item name="actionBarPopupTheme">@style/PopupMenuStyleAppCompat</item>
+         <item name="android:actionBarPopupTheme">@style/PopupMenuStyleAppCompat</item>
+         <item name="alertDialogTheme">@style/BugleThemeAlertDialog</item>
+         <item name="android:alertDialogTheme">@style/BugleThemeAlertDialog</item>
+    </style>
+
+    <style name="ListViewStyle" parent="@android:style/Widget.Material.Light.ListView">
+        <item name="android:overScrollMode">always</item>
+        <item name="android:textColor">@color/message_title_text</item>
+        <item name="android:background">@color/contextual_action_bar_background_color</item>
+    </style>
+
+    <style name="PopupMenuStyleAppCompat" parent="@android:style/Theme.DeviceDefault.Light.Dialog">
+    </style>
+
+    <style name="LaunchTheme" parent="Theme.AppCompat.DayNight.DarkActionBar">
+         <item name="colorPrimary">@color/action_bar_background_color</item>
+         <item name="colorPrimaryDark">@color/action_bar_background_color_dark</item>
     </style>
 
     <style name="BugleTheme.ConversationActivity"
@@ -52,19 +71,32 @@
     </style>
 
     <style name="BugleTheme.DialogActivity" parent="@style/Theme.AppCompat.Light.Dialog">
+        <item name="android:colorAccent">@color/primary_color</item>
+        <item name="android:colorPrimary">@color/archived_conversation_action_bar_background_color</item>
+        <item name="android:colorPrimaryDark">@color/archived_conversation_action_bar_background_color</item>
+        <item name="android:background">@color/contextual_action_bar_background_color</item>
+    </style>
+
+    <style name="BugleThemeDialog" parent="BugleTheme.DialogActivity">
+    </style>
+
+    <style name="BugleThemeAlertDialog" parent="@style/Theme.AppCompat.Light.Dialog.Alert">
+        <item name="android:colorAccent">@color/primary_color</item>
+        <item name="android:colorPrimary">@color/archived_conversation_action_bar_background_color</item>
+        <item name="android:colorPrimaryDark">@color/archived_conversation_action_bar_background_color</item>
+        <item name="android:background">@color/contextual_action_bar_background_color</item>
     </style>
 
     <style name="BugleTheme.ConversationListActivity" parent="BugleTheme">
-        <item name="android:windowBackground">@android:color/background_light</item>
+        <item name="android:windowBackground">@color/contextual_action_bar_background_color</item>
     </style>
 
     <style name="BugleTheme.ArchivedConversationListActivity" parent="BugleTheme.ConversationListActivity">
         <item name="colorPrimary">@color/archived_conversation_action_bar_background_color</item>
-        <item name="colorPrimaryDark">@color/archived_conversation_action_bar_background_color_dark</item>
+        <item name="colorPrimaryDark">@color/archived_conversation_action_bar_background_color</item>
     </style>
 
     <style name="BugleTheme.SettingsActivity" parent="BugleTheme">
-        <item name="android:textSize">@dimen/settings_list_text_size</item>
     </style>
 
     <style name="Invisible" parent="BugleBaseTheme">
@@ -289,10 +321,6 @@
         <item name="android:textColor">@color/conversation_list_name</item>
     </style>
 
-    <style name="ConversationListNotificationBellPaddingStyle">
-        <item name="android:paddingRight">@dimen/conversation_list_notification_bell_padding</item>
-    </style>
-
     <style name="ComposeMessageViewFrameLayoutStyle">
         <item name="android:paddingRight">@dimen/compose_message_send_button_padding_right</item>
     </style>
@@ -345,12 +373,6 @@
         <item name="android:paddingRight">@dimen/copy_contact_dialog_right_padding</item>
     </style>
 
-    <style name="ParticipantListItemDetail">
-        <item name="android:textSize">@dimen/participant_list_detail_text_size</item>
-        <item name="android:textColor">@color/participant_list_text_secondary</item>
-        <item name="android:background">@null</item>
-    </style>
-
     <style name="PeopleListItemViewStyle">
         <item name="android:paddingLeft">16dp</item>
     </style>
@@ -480,18 +502,6 @@
         <item name="android:paddingRight">?android:attr/listPreferredItemPaddingEnd</item>
     </style>
 
-    <style name="SettingsListItem">
-        <item name="android:textSize">@dimen/settings_list_text_size</item>
-        <item name="android:textColor">@color/settings_list_text_primary</item>
-        <item name="android:background">@null</item>
-    </style>
-
-    <style name="SettingsListItemDetail">
-        <item name="android:textSize">@dimen/settings_list_detail_text_size</item>
-        <item name="android:textColor">@color/settings_list_text_secondary</item>
-        <item name="android:background">@null</item>
-    </style>
-
     <style name="GroupMmsSettingItem">
         <item name="android:textSize">@dimen/group_mms_setting_text_size</item>
         <item name="android:textColor">@color/group_mms_setting_text_color</item>
diff --git a/res/xml-v21/preferences_application.xml b/res/xml-v21/preferences_application.xml
index 5d8ee4c..3d2c3b6 100644
--- a/res/xml-v21/preferences_application.xml
+++ b/res/xml-v21/preferences_application.xml
@@ -17,24 +17,10 @@
 <!-- Preference screen definition for Bugle's application-wide settings -->
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <!--  KLP+ only -->
-    <PreferenceScreen
-        android:key="@string/sms_disabled_pref_key"
-        android:title="@string/sms_disabled_pref_title"
-        android:persistent="false">
-        <intent
-            android:action="android.provider.Telephony.ACTION_CHANGE_DEFAULT">
-            <extra android:name="package" android:value="com.android.messaging" />
-        </intent>
-    </PreferenceScreen>
-    <PreferenceScreen
+    <Preference
         android:key="@string/sms_enabled_pref_key"
         android:title="@string/sms_enabled_pref_title"
-        android:persistent="false">
-        <intent
-            android:action="android.settings.WIRELESS_SETTINGS">
-        </intent>
-    </PreferenceScreen>
+        android:persistent="false"/>
 
     <SwitchPreference
         android:key="@string/send_sound_pref_key"
@@ -42,29 +28,17 @@
         android:defaultValue="@bool/send_sound_pref_default"
         android:persistent="true" />
 
-    <SwitchPreference
-        android:key="@string/notifications_enabled_pref_key"
-        android:title="@string/notifications_enabled_pref_title"
-        android:defaultValue="@bool/notifications_enabled_pref_default"
-        android:persistent="true"
-        android:disableDependentsState="false" />
-
-    <RingtonePreference
-        android:key="@string/notification_sound_pref_key"
-        android:title="@string/notification_sound_pref_title"
-        android:ringtoneType="notification"
-        android:showSilent="true"
-        android:showDefault="true"
-        android:persistent="true"
-        android:defaultValue=""
-        android:dependency="@string/notifications_enabled_pref_key" />
+    <Preference
+        android:key="@string/notifications_pref_key"
+        android:title="@string/notifications_pref_title"
+        android:persistent="true" />
 
     <SwitchPreference
-        android:key="@string/notification_vibration_pref_key"
-        android:title="@string/notification_vibrate_pref_title"
-        android:defaultValue="@bool/notification_vibration_pref_default"
-        android:persistent="true"
-        android:dependency="@string/notifications_enabled_pref_key" />
+        android:key="@string/swipe_right_deletes_conversation_key"
+        android:title="@string/swipe_to_delete_conversation_pref_title"
+        android:summary="@string/swipe_to_delete_conversation_pref_summary"
+        android:defaultValue="false"
+        android:persistent="true" />
 
     <PreferenceScreen
             android:key="@string/advanced_pref_key"
diff --git a/res/xml-v23/preferences_application.xml b/res/xml-v23/preferences_application.xml
index 8fbadc4..8335456 100644
--- a/res/xml-v23/preferences_application.xml
+++ b/res/xml-v23/preferences_application.xml
@@ -17,55 +17,26 @@
 <!-- Preference screen definition for Bugle's application-wide settings -->
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <!--  KLP+ only -->
-    <PreferenceScreen
-        android:key="@string/sms_disabled_pref_key"
-        android:title="@string/sms_disabled_pref_title"
-        android:persistent="false">
-        <intent
-            android:action="android.provider.Telephony.ACTION_CHANGE_DEFAULT">
-            <extra android:name="package" android:value="com.android.messaging" />
-        </intent>
-    </PreferenceScreen>
-    <!--  MNC+ only -->
-    <PreferenceScreen
+    <Preference
         android:key="@string/sms_enabled_pref_key"
         android:title="@string/sms_enabled_pref_title"
-        android:persistent="false">
-        <intent
-            android:action="android.provider.Telephony.ACTION_CHANGE_DEFAULT">
-        </intent>
-    </PreferenceScreen>
+        android:persistent="false"/>
 
     <SwitchPreference
         android:key="@string/send_sound_pref_key"
         android:title="@string/send_sound_pref_title"
-        android:defaultValue="@bool/send_sound_pref_default"
-        android:persistent="true" />
+        android:defaultValue="@bool/send_sound_pref_default" />
+
+    <Preference
+        android:key="@string/notifications_pref_key"
+        android:title="@string/notifications_pref_title"
+        android:persistent="false" />
 
     <SwitchPreference
-        android:key="@string/notifications_enabled_pref_key"
-        android:title="@string/notifications_enabled_pref_title"
-        android:defaultValue="@bool/notifications_enabled_pref_default"
-        android:persistent="true"
-        android:disableDependentsState="false" />
-
-    <RingtonePreference
-        android:key="@string/notification_sound_pref_key"
-        android:title="@string/notification_sound_pref_title"
-        android:ringtoneType="notification"
-        android:showSilent="true"
-        android:showDefault="true"
-        android:persistent="true"
-        android:defaultValue=""
-        android:dependency="@string/notifications_enabled_pref_key" />
-
-    <SwitchPreference
-        android:key="@string/notification_vibration_pref_key"
-        android:title="@string/notification_vibrate_pref_title"
-        android:defaultValue="@bool/notification_vibration_pref_default"
-        android:persistent="true"
-        android:dependency="@string/notifications_enabled_pref_key" />
+        android:key="@string/swipe_right_deletes_conversation_key"
+        android:title="@string/swipe_to_delete_conversation_pref_title"
+        android:summary="@string/swipe_to_delete_conversation_pref_summary"
+        android:defaultValue="false" />
 
     <PreferenceScreen
             android:key="@string/advanced_pref_key"
diff --git a/res/xml/preferences_application.xml b/res/xml/preferences_application.xml
index 7a18d09..f47469c 100644
--- a/res/xml/preferences_application.xml
+++ b/res/xml/preferences_application.xml
@@ -17,24 +17,10 @@
 <!-- Preference screen definition for Bugle's application-wide settings -->
 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
 
-    <!--  KLP+ only -->
-    <PreferenceScreen
-        android:key="@string/sms_disabled_pref_key"
-        android:title="@string/sms_disabled_pref_title"
-        android:persistent="false">
-        <intent
-            android:action="android.provider.Telephony.ACTION_CHANGE_DEFAULT">
-            <extra android:name="package" android:value="com.android.messaging" />
-        </intent>
-    </PreferenceScreen>
-    <PreferenceScreen
+    <Preference
         android:key="@string/sms_enabled_pref_key"
         android:title="@string/sms_enabled_pref_title"
-        android:persistent="false">
-        <intent
-            android:action="android.settings.WIRELESS_SETTINGS">
-        </intent>
-    </PreferenceScreen>
+        android:persistent="false"/>
 
     <CheckBoxPreference
         android:key="@string/send_sound_pref_key"
@@ -42,29 +28,17 @@
         android:defaultValue="@bool/send_sound_pref_default"
         android:persistent="true" />
 
-    <CheckBoxPreference
-        android:key="@string/notifications_enabled_pref_key"
-        android:title="@string/notifications_enabled_pref_title"
-        android:defaultValue="@bool/notifications_enabled_pref_default"
-        android:persistent="true"
-        android:disableDependentsState="false" />
+    <Preference
+        android:key="@string/notifications_pref_key"
+        android:title="@string/notifications_pref_title"
+        android:persistent="true" />
 
-    <RingtonePreference
-        android:key="@string/notification_sound_pref_key"
-        android:title="@string/notification_sound_pref_title"
-        android:ringtoneType="notification"
-        android:showSilent="true"
-        android:showDefault="true"
-        android:persistent="true"
-        android:defaultValue=""
-        android:dependency="@string/notifications_enabled_pref_key" />
-
-    <CheckBoxPreference
-        android:key="@string/notification_vibration_pref_key"
-        android:title="@string/notification_vibrate_pref_title"
-        android:defaultValue="@bool/notification_vibration_pref_default"
-        android:persistent="true"
-        android:dependency="@string/notifications_enabled_pref_key" />
+    <SwitchPreference
+        android:key="@string/swipe_right_deletes_conversation_key"
+        android:title="@string/swipe_to_delete_conversation_pref_title"
+        android:summary="@string/swipe_to_delete_conversation_pref_summary"
+        android:defaultValue="false"
+        android:persistent="true" />
 
     <PreferenceScreen
             android:key="@string/advanced_pref_key"
diff --git a/src/com/android/messaging/datamodel/BugleDatabaseOperations.java b/src/com/android/messaging/datamodel/BugleDatabaseOperations.java
index c4e5fb8..4471b34 100644
--- a/src/com/android/messaging/datamodel/BugleDatabaseOperations.java
+++ b/src/com/android/messaging/datamodel/BugleDatabaseOperations.java
@@ -171,8 +171,7 @@
         final ArrayList<ParticipantData> participants =
                 getConversationParticipantsFromRecipients(recipients, refSubId);
 
-        return getOrCreateConversation(db, threadId, senderBlocked, participants, false, false,
-                null);
+        return getOrCreateConversation(db, threadId, senderBlocked, participants);
     }
 
     /**
@@ -190,7 +189,7 @@
         Assert.isNotMainThread();
         final ArrayList<ParticipantData> recipients = new ArrayList<>(1);
         recipients.add(recipient);
-        return getOrCreateConversation(db, threadId, senderBlocked, recipients, false, false, null);
+        return getOrCreateConversation(db, threadId, senderBlocked, recipients);
     }
 
     /**
@@ -200,15 +199,11 @@
      * @param threadId The message's thread
      * @param archived Flag whether the conversation should be created archived
      * @param participants list of conversation participants
-     * @param noNotification If notification should be disabled
-     * @param noVibrate If vibrate on notification should be disabled
-     * @param soundUri If there is custom sound URI
      * @return a conversation id
      */
     @DoesNotRunOnMainThread
     public static String getOrCreateConversation(final DatabaseWrapper db, final long threadId,
-            final boolean archived, final ArrayList<ParticipantData> participants,
-            boolean noNotification, boolean noVibrate, String soundUri) {
+            final boolean archived, final ArrayList<ParticipantData> participants) {
         Assert.isNotMainThread();
 
         // Check to see if this conversation is already in out local db cache
@@ -231,8 +226,7 @@
                         BugleDatabaseOperations.getOrCreateParticipantInTransaction(db, self);
                 // Create a new conversation
                 conversationId = BugleDatabaseOperations.createConversationInTransaction(
-                        db, threadId, conversationName, selfId, participants, archived,
-                        noNotification, noVibrate, soundUri);
+                        db, threadId, conversationName, selfId, participants, archived);
                 db.setTransactionSuccessful();
             } finally {
                 db.endTransaction();
@@ -357,15 +351,11 @@
      * @param threadId      The message's thread
      * @param selfId        The selfId to make default for this conversation
      * @param archived      Flag whether the conversation should be created archived
-     * @param noNotification If notification should be disabled
-     * @param noVibrate     If vibrate on notification should be disabled
-     * @param soundUri      The customized sound
      * @return The existing conversation id or new conversation id
      */
     static String createConversationInTransaction(final DatabaseWrapper dbWrapper,
             final long threadId, final String conversationName, final String selfId,
-            final List<ParticipantData> participants, final boolean archived,
-            boolean noNotification, boolean noVibrate, String soundUri) {
+            final List<ParticipantData> participants, final boolean archived) {
         // We want conversation and participant creation to be atomic
         Assert.isTrue(dbWrapper.getDatabase().inTransaction());
         boolean hasEmailAddress = false;
@@ -389,15 +379,6 @@
         if (archived) {
             values.put(ConversationColumns.ARCHIVE_STATUS, 1);
         }
-        if (noNotification) {
-            values.put(ConversationColumns.NOTIFICATION_ENABLED, 0);
-        }
-        if (noVibrate) {
-            values.put(ConversationColumns.NOTIFICATION_VIBRATION, 0);
-        }
-        if (!TextUtils.isEmpty(soundUri)) {
-            values.put(ConversationColumns.NOTIFICATION_SOUND_URI, soundUri);
-        }
 
         fillParticipantData(values, participants);
 
diff --git a/src/com/android/messaging/datamodel/BugleNotifications.java b/src/com/android/messaging/datamodel/BugleNotifications.java
index 3faee85..5e3f154 100644
--- a/src/com/android/messaging/datamodel/BugleNotifications.java
+++ b/src/com/android/messaging/datamodel/BugleNotifications.java
@@ -17,6 +17,8 @@
 package com.android.messaging.datamodel;
 
 import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.content.Context;
 import android.content.Intent;
@@ -74,10 +76,10 @@
 import com.android.messaging.util.ImageUtils;
 import com.android.messaging.util.LogUtil;
 import com.android.messaging.util.NotificationPlayer;
+import com.android.messaging.util.NotificationsUtil;
 import com.android.messaging.util.OsUtil;
 import com.android.messaging.util.PendingIntentConstants;
 import com.android.messaging.util.PhoneUtils;
-import com.android.messaging.util.RingtoneUtil;
 import com.android.messaging.util.ThreadUtil;
 import com.android.messaging.util.UriUtil;
 
@@ -173,18 +175,10 @@
         }
     Assert.isNotMainThread();
         checkInitialized();
-
-        if (!shouldNotify()) {
-            if (LogUtil.isLoggable(TAG, LogUtil.VERBOSE)) {
-                LogUtil.v(TAG, "Notifications disabled");
-            }
-            cancel(PendingIntentConstants.SMS_NOTIFICATION_ID);
-            return;
-        } else {
-            if ((coverage & UPDATE_MESSAGES) != 0) {
-                createMessageNotification(silent, conversationId);
-            }
+        if ((coverage & UPDATE_MESSAGES) != 0) {
+            createMessageNotification(silent, conversationId);
         }
+
         if ((coverage & UPDATE_ERRORS) != 0) {
             MessageNotificationState.checkFailedMessages();
         }
@@ -289,56 +283,6 @@
     }
 
     /**
-     * Returns {@code true} if incoming notifications should display a
-     * notification, {@code false} otherwise.
-     *
-     * @return true if the notification should occur
-     */
-    private static boolean shouldNotify() {
-        // If we're not the default sms app, don't put up any notifications.
-        if (!PhoneUtils.getDefault().isDefaultSmsApp()) {
-            return false;
-        }
-
-        // Now check prefs (i.e. settings) to see if the user turned off notifications.
-        final BuglePrefs prefs = BuglePrefs.getApplicationPrefs();
-        final Context context = Factory.get().getApplicationContext();
-        final String prefKey = context.getString(R.string.notifications_enabled_pref_key);
-        final boolean defaultValue = context.getResources().getBoolean(
-                R.bool.notifications_enabled_pref_default);
-        return prefs.getBoolean(prefKey, defaultValue);
-    }
-
-    /**
-     * Returns {@code true} if incoming notifications for the given {@link NotificationState}
-     * should vibrate the device, {@code false} otherwise.
-     *
-     * @return true if vibration should be used
-     */
-    public static boolean shouldVibrate(final NotificationState state) {
-        // The notification should vibrate if the global setting is turned on AND
-        // the per-conversation setting is turned on (default).
-        if (!state.getNotificationVibrate()) {
-            return false;
-        } else {
-            final BuglePrefs prefs = BuglePrefs.getApplicationPrefs();
-            final Context context = Factory.get().getApplicationContext();
-            final String prefKey = context.getString(R.string.notification_vibration_pref_key);
-            final boolean defaultValue = context.getResources().getBoolean(
-                    R.bool.notification_vibration_pref_default);
-            return prefs.getBoolean(prefKey, defaultValue);
-        }
-    }
-
-    private static Uri getNotificationRingtoneUriForConversationId(final String conversationId) {
-        final DatabaseWrapper db = DataModel.get().getDatabase();
-        final ConversationListItemData convData =
-                ConversationListItemData.getExistingConversation(db, conversationId);
-        return RingtoneUtil.getNotificationRingtoneUri(
-                convData != null ? convData.getNotificationSoundUri() : null);
-    }
-
-    /**
      * Returns a unique tag to identify a notification.
      *
      * @param name The tag name (in practice, the type)
@@ -411,13 +355,15 @@
     private static void processAndSend(final NotificationState state, final boolean silent,
             final boolean softSound) {
         final Context context = Factory.get().getApplicationContext();
-        final NotificationCompat.Builder notifBuilder = new NotificationCompat.Builder(context);
-        notifBuilder.setCategory(Notification.CATEGORY_MESSAGE);
         // TODO: Need to fix this for multi conversation notifications to rate limit dings.
         final String conversationId = state.mConversationIds.first();
+        String id = NotificationsUtil.DEFAULT_CHANNEL_ID;
+        if (NotificationsUtil.getNotificationChannel(context, conversationId) != null) {
+            id = conversationId;
+        }
+        final NotificationCompat.Builder notifBuilder = new NotificationCompat.Builder(context, id);
+        notifBuilder.setCategory(Notification.CATEGORY_MESSAGE);
 
-
-        final Uri ringtoneUri = RingtoneUtil.getNotificationRingtoneUri(state.getRingtoneUri());
         // If the notification's conversation is currently observable (focused or in the
         // conversation list),  then play a notification beep at a low volume and don't display an
         // actual notification.
@@ -427,7 +373,7 @@
                         "sCurrentlyDisplayedConversationId so NOT showing notification," +
                         " but playing soft sound. conversationId: " + conversationId);
             }
-            playObservableConversationNotificationSound(ringtoneUri);
+            playObservableConversationNotificationSound(conversationId);
             return;
         }
         state.mBaseRequestCode = state.mType;
@@ -440,7 +386,7 @@
             notifBuilder.setDeleteIntent(clearIntent);
         }
 
-        updateBuilderAudioVibrate(state, notifBuilder, silent, ringtoneUri, conversationId);
+        updateBuilderAudioVibrate(state, notifBuilder, silent, conversationId);
 
         // Set the content intent
         PendingIntent destinationIntent;
@@ -598,8 +544,7 @@
         if (state == null) {
             cancel(PendingIntentConstants.SMS_NOTIFICATION_ID);
             if (softSound && !TextUtils.isEmpty(conversationId)) {
-                final Uri ringtoneUri = getNotificationRingtoneUriForConversationId(conversationId);
-                playObservableConversationNotificationSound(ringtoneUri);
+                playObservableConversationNotificationSound(conversationId);
             }
             return;
         }
@@ -637,8 +582,8 @@
 
     private static void updateBuilderAudioVibrate(final NotificationState state,
             final NotificationCompat.Builder notifBuilder, final boolean silent,
-            final Uri ringtoneUri, final String conversationId) {
-        int defaults = Notification.DEFAULT_LIGHTS;
+            final String conversationId) {
+        int defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE;
         if (!silent) {
             final BuglePrefs prefs = Factory.get().getApplicationPrefs();
             final long latestNotificationTimestamp = prefs.getLong(
@@ -660,10 +605,6 @@
                     if (lastTime == null
                             || SystemClock.elapsedRealtime() - lastTime > sTimeBetweenDingsMs) {
                         sLastMessageDingTime.put(conversationId, SystemClock.elapsedRealtime());
-                        notifBuilder.setSound(ringtoneUri);
-                        if (shouldVibrate(state)) {
-                            defaults |= Notification.DEFAULT_VIBRATE;
-                        }
                     }
                 }
             }
@@ -817,8 +758,14 @@
                 notificationState.mNotificationBuilder.setLargeIcon(smallBitmap);
 
                 // Add a wearable page with no visible card so you can more easily see the photo.
+                String conversationId = notificationState.mConversationIds.first();
+                String id = NotificationsUtil.DEFAULT_CHANNEL_ID;
+                if (NotificationsUtil.getNotificationChannel(context, conversationId) != null) {
+                    id = conversationId;
+                }
                 final NotificationCompat.Builder photoPageNotifBuilder =
-                        new NotificationCompat.Builder(Factory.get().getApplicationContext());
+                        new NotificationCompat.Builder(Factory.get().getApplicationContext(),
+                        NotificationsUtil.DEFAULT_CHANNEL_ID);
                 final WearableExtender photoPageWearableExtender = new WearableExtender();
                 photoPageWearableExtender.setHintShowBackgroundOnly(true);
                 if (attachmentBitmap != null) {
@@ -833,7 +780,7 @@
             maybeAddWearableConversationLog(wearableExtender,
                     (MultiMessageNotificationState) notificationState);
             addDownloadMmsAction(notifBuilder, wearableExtender, notificationState);
-            addWearableVoiceReplyAction(wearableExtender, notificationState);
+            addWearableVoiceReplyAction(notifBuilder, wearableExtender, notificationState);
         }
 
         // Apply the wearable options and build & post the notification
@@ -875,7 +822,7 @@
         }
     }
 
-    private static void addWearableVoiceReplyAction(
+    private static void addWearableVoiceReplyAction(final NotificationCompat.Builder notifBuilder,
             final WearableExtender wearableExtender, final NotificationState notificationState) {
         if (!(notificationState instanceof MultiMessageNotificationState)) {
             return;
@@ -905,14 +852,20 @@
         final NotificationCompat.Action.Builder actionBuilder =
                 new NotificationCompat.Action.Builder(R.drawable.ic_wear_reply,
                         context.getString(replyLabelRes), replyPendingIntent);
+        final RemoteInput.Builder remoteInputBuilder = new RemoteInput.Builder(Intent.EXTRA_TEXT);
+        remoteInputBuilder.setLabel(context.getString(R.string.notification_reply_prompt));
+        actionBuilder.addRemoteInput(remoteInputBuilder.build());
+        notifBuilder.addAction(actionBuilder.build());
+
+        // Support the action on a wearable device
+        final NotificationCompat.Action.Builder wearActionBuilder =
+                new NotificationCompat.Action.Builder(R.drawable.ic_wear_reply,
+                        context.getString(replyLabelRes), replyPendingIntent);
         final String[] choices = context.getResources().getStringArray(
                 R.array.notification_reply_choices);
-        final RemoteInput remoteInput = new RemoteInput.Builder(Intent.EXTRA_TEXT).setLabel(
-                context.getString(R.string.notification_reply_prompt)).
-                setChoices(choices)
-                .build();
-        actionBuilder.addRemoteInput(remoteInput);
-        wearableExtender.addAction(actionBuilder.build());
+        remoteInputBuilder.setChoices(choices);
+        wearActionBuilder.addRemoteInput(remoteInputBuilder.build());
+        wearableExtender.addAction(wearActionBuilder.build());
     }
 
     private static void addDownloadMmsAction(final NotificationCompat.Builder notifBuilder,
@@ -973,6 +926,16 @@
         notification.flags |= Notification.FLAG_AUTO_CANCEL;
         notification.defaults |= Notification.DEFAULT_LIGHTS;
 
+        Context context = Factory.get().getApplicationContext();
+
+        NotificationsUtil.createNotificationChannelGroup(context,
+                NotificationsUtil.CONVERSATION_GROUP_NAME,
+                R.string.notification_channel_messages_title);
+        NotificationsUtil.createNotificationChannel(context,
+                NotificationsUtil.DEFAULT_CHANNEL_ID,
+                R.string.notification_channel_messages_title,
+                NotificationManager.IMPORTANCE_DEFAULT,
+                NotificationsUtil.CONVERSATION_GROUP_NAME);
         notificationManager.notify(notificationTag, type, notification);
 
         LogUtil.i(TAG, "Notifying for conversation " + conversationId + "; "
@@ -1096,7 +1059,7 @@
      * Play the observable conversation notification sound (it's the regular notification sound, but
      * played at half-volume)
      */
-    private static void playObservableConversationNotificationSound(final Uri ringtoneUri) {
+    private static void playObservableConversationNotificationSound(final String conversationId) {
         final Context context = Factory.get().getApplicationContext();
         final AudioManager audioManager = (AudioManager) context
                 .getSystemService(Context.AUDIO_SERVICE);
@@ -1107,7 +1070,11 @@
         }
 
         final NotificationPlayer player = new NotificationPlayer(LogUtil.BUGLE_TAG);
-        player.play(ringtoneUri, false,
+        NotificationChannel channel = NotificationsUtil.getNotificationChannel(context, conversationId);
+        if (channel == null) {
+            channel = NotificationsUtil.getNotificationChannel(context, NotificationsUtil.DEFAULT_CHANNEL_ID);
+        }
+        player.play(channel != null ? channel.getSound() : null, false,
                 AudioManager.STREAM_NOTIFICATION,
                 OBSERVABLE_CONVERSATION_NOTIFICATION_VOLUME);
 
@@ -1202,7 +1169,8 @@
         final PendingIntent destinationIntent = UIIntents.get()
                 .getPendingIntentForConversationActivity(context, conversationId, null /* draft */);
 
-        final NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+        final NotificationCompat.Builder builder =
+                new NotificationCompat.Builder(context, NotificationsUtil.DEFAULT_CHANNEL_ID);
         builder.setTicker(line1)
                 .setContentTitle(line1)
                 .setContentText(line2)
@@ -1212,10 +1180,18 @@
                 .setSound(UriUtil.getUriForResourceId(context, R.raw.message_failure));
 
         final String tag = context.getPackageName() + ":emergency_sms_error";
+
+        NotificationsUtil.createNotificationChannelGroup(context,
+                NotificationsUtil.CONVERSATION_GROUP_NAME,
+                R.string.notification_channel_messages_title);
+        NotificationsUtil.createNotificationChannel(context,
+                NotificationsUtil.DEFAULT_CHANNEL_ID,
+                R.string.notification_channel_messages_title,
+                NotificationManager.IMPORTANCE_HIGH,
+                null);
         NotificationManagerCompat.from(context).notify(
                 tag,
                 PendingIntentConstants.MSG_SEND_ERROR,
                 builder.build());
     }
 }
-
diff --git a/src/com/android/messaging/datamodel/DatabaseHelper.java b/src/com/android/messaging/datamodel/DatabaseHelper.java
index 486973e..87bf08d 100644
--- a/src/com/android/messaging/datamodel/DatabaseHelper.java
+++ b/src/com/android/messaging/datamodel/DatabaseHelper.java
@@ -136,15 +136,6 @@
         /* Participant count not including self (so will be 1 for 1:1 or bigger for group) */
         public static final String PARTICIPANT_COUNT = "participant_count";
 
-        /* Should notifications be enabled for this conversation? */
-        public static final String NOTIFICATION_ENABLED = "notification_enabled";
-
-        /* Notification sound used for the conversation */
-        public static final String NOTIFICATION_SOUND_URI = "notification_sound_uri";
-
-        /* Should vibrations be enabled for the conversation's notification? */
-        public static final String NOTIFICATION_VIBRATION = "notification_vibration";
-
         /* Conversation recipients include email address */
         public static final String INCLUDE_EMAIL_ADDRESS = "include_email_addr";
 
@@ -184,9 +175,6 @@
                     + ConversationColumns.OTHER_PARTICIPANT_NORMALIZED_DESTINATION + " TEXT, "
                     + ConversationColumns.CURRENT_SELF_ID + " TEXT, "
                     + ConversationColumns.PARTICIPANT_COUNT + " INT DEFAULT(0), "
-                    + ConversationColumns.NOTIFICATION_ENABLED + " INT DEFAULT(1), "
-                    + ConversationColumns.NOTIFICATION_SOUND_URI + " TEXT, "
-                    + ConversationColumns.NOTIFICATION_VIBRATION + " INT DEFAULT(1), "
                     + ConversationColumns.INCLUDE_EMAIL_ADDRESS + " INT DEFAULT(0), "
                     + ConversationColumns.SMS_SERVICE_CENTER + " TEXT ,"
                     + ConversationColumns.IS_ENTERPRISE + " INT DEFAULT(0)"
diff --git a/src/com/android/messaging/datamodel/FrequentContactsCursorBuilder.java b/src/com/android/messaging/datamodel/FrequentContactsCursorBuilder.java
index 8f65156..fad4040 100644
--- a/src/com/android/messaging/datamodel/FrequentContactsCursorBuilder.java
+++ b/src/com/android/messaging/datamodel/FrequentContactsCursorBuilder.java
@@ -74,7 +74,7 @@
      * are both ready to be consumed.
      * @return the frequent contact cursor if built successfully, or null if it can't be built yet.
      */
-    public Cursor build() {
+    public Cursor build(boolean getAllContacts) {
         if (mFrequentContactsCursor != null && mAllContactsCursor != null) {
             Assert.isTrue(!mFrequentContactsCursor.isClosed());
             Assert.isTrue(!mAllContactsCursor.isClosed());
@@ -108,7 +108,7 @@
             mAllContactsCursor.moveToPosition(-1);
             while (mAllContactsCursor.moveToNext()) {
                 final String lookupKey = mAllContactsCursor.getString(ContactUtil.INDEX_LOOKUP_KEY);
-                if (lookupKeyToRankMap.containsKey(lookupKey)) {
+                if (lookupKeyToRankMap.containsKey(lookupKey) || getAllContacts) {
                     final Object[] row = new Object[ContactUtil.PhoneQuery.PROJECTION.length];
                     row[ContactUtil.INDEX_DATA_ID] =
                             mAllContactsCursor.getLong(ContactUtil.INDEX_DATA_ID);
@@ -121,16 +121,38 @@
                     row[ContactUtil.INDEX_PHOTO_URI] =
                             mAllContactsCursor.getString(ContactUtil.INDEX_PHOTO_URI);
                     row[ContactUtil.INDEX_PHONE_EMAIL] =
-                            mAllContactsCursor.getString(ContactUtil.INDEX_PHONE_EMAIL);
+                            mAllContactsCursor.getString(ContactUtil.INDEX_PHONE_EMAIL)
+                                    .replaceAll("[^\\d+]", "");
                     row[ContactUtil.INDEX_PHONE_EMAIL_TYPE] =
                             mAllContactsCursor.getInt(ContactUtil.INDEX_PHONE_EMAIL_TYPE);
                     row[ContactUtil.INDEX_PHONE_EMAIL_LABEL] =
                             mAllContactsCursor.getString(ContactUtil.INDEX_PHONE_EMAIL_LABEL);
-                    rows.add(row);
+
+                    boolean numberAlreadyAdded = false;
+                    for (Object[] oldRow : rows) {
+                        final int idxType = ContactUtil.INDEX_PHONE_EMAIL_TYPE;
+                        final int idxPhone = ContactUtil.INDEX_PHONE_EMAIL;
+                        if (oldRow[idxType] == row[idxType] &&
+                                oldRow[idxPhone].toString().equals(row[idxPhone].toString())) {
+                            numberAlreadyAdded = true;
+                            break;
+                        }
+                    }
+                    if (!numberAlreadyAdded) {
+                        rows.add(row);
+                    }
                 }
             }
             mAllContactsCursor.moveToPosition(oldPosition);
 
+            // We can return all rows at this point, no sorting or further filtering needed
+            if (getAllContacts) {
+                for (final Object[] row : rows) {
+                    retCursor.addRow(row);
+                }
+                return retCursor;
+            }
+
             // Now we have a list of rows containing frequent contacts in alphabetical order.
             // Therefore, sort all the rows according to their actual ranks in the frequents list.
             Collections.sort(rows, new Comparator<Object[]>() {
diff --git a/src/com/android/messaging/datamodel/MessageNotificationState.java b/src/com/android/messaging/datamodel/MessageNotificationState.java
index 6b858fa..b49774f 100644
--- a/src/com/android/messaging/datamodel/MessageNotificationState.java
+++ b/src/com/android/messaging/datamodel/MessageNotificationState.java
@@ -55,6 +55,7 @@
 import com.android.messaging.util.ContentType;
 import com.android.messaging.util.ConversationIdSet;
 import com.android.messaging.util.LogUtil;
+import com.android.messaging.util.NotificationsUtil;
 import com.android.messaging.util.PendingIntentConstants;
 import com.android.messaging.util.UriUtil;
 import com.google.common.collect.Lists;
@@ -197,15 +198,6 @@
         // line infos is capped.
         int mTotalMessageCount;
 
-        // Custom ringtone if set
-        final String mRingtoneUri;
-
-        // Should notification be enabled for this conversation?
-        final boolean mNotificationEnabled;
-
-        // Should notifications vibrate for this conversation?
-        final boolean mNotificationVibrate;
-
         // Avatar uri of sender
         final Uri mAvatarUri;
 
@@ -224,9 +216,6 @@
                 final boolean includeEmailAddress,
                 final long receivedTimestamp,
                 final String selfParticipantId,
-                final String ringtoneUri,
-                final boolean notificationEnabled,
-                final boolean notificationVibrate,
                 final Uri avatarUri,
                 final Uri contactUri,
                 final int subId,
@@ -239,11 +228,8 @@
             mSelfParticipantId = selfParticipantId;
             mLineInfos = new ArrayList<NotificationLineInfo>();
             mTotalMessageCount = 0;
-            mRingtoneUri = ringtoneUri;
             mAvatarUri = avatarUri;
             mContactUri = contactUri;
-            mNotificationEnabled = notificationEnabled;
-            mNotificationVibrate = notificationVibrate;
             mSubId = subId;
             mParticipantCount = participantCount;
         }
@@ -349,6 +335,14 @@
                     getClearIntentRequestCode());
     }
 
+    @Override
+    public PendingIntent getReadIntent() {
+        return UIIntents.get().getPendingIntentForMarkingAsRead(
+                    Factory.get().getApplicationContext(),
+                    mConversationIds,
+                    getReadIntentRequestCode());
+    }
+
     /**
      * Notification for multiple messages in at least 2 different conversations.
      */
@@ -789,7 +783,8 @@
             bigText.append("\n\n").append(statusText);
         }
 
-        final NotificationCompat.Builder notifBuilder = new NotificationCompat.Builder(context);
+        final NotificationCompat.Builder notifBuilder = new NotificationCompat.Builder(context,
+                NotificationsUtil.DEFAULT_CHANNEL_ID);
         final NotificationCompat.Style notifStyle =
                 new NotificationCompat.BigTextStyle(notifBuilder).bigText(bigText);
         notifBuilder.setStyle(notifStyle);
@@ -870,10 +865,6 @@
                     if (currConvInfo == null) {
                         final ConversationListItemData convData =
                                 ConversationListItemData.getExistingConversation(db, convId);
-                        if (!convData.getNotificationEnabled()) {
-                            // Skip conversations that have notifications disabled.
-                            continue;
-                        }
                         final int subId = BugleDatabaseOperations.getSelfSubscriptionId(db,
                                 convData.getSelfId());
                         groupConversationName = convData.getName();
@@ -888,9 +879,6 @@
                                 convData.getIncludeEmailAddress(),
                                 convMessageData.getReceivedTimeStamp(),
                                 convData.getSelfId(),
-                                convData.getNotificationSoundUri(),
-                                convData.getNotificationEnabled(),
-                                convData.getNotifiationVibrate(),
                                 avatarUri,
                                 convMessageData.getSenderContactLookupUri(),
                                 subId,
@@ -1103,22 +1091,6 @@
         return BugleNotifications.LOCAL_SMS_NOTIFICATION;
     }
 
-    @Override
-    public String getRingtoneUri() {
-        if (mConvList.mConvInfos.size() > 0) {
-            return mConvList.mConvInfos.get(0).mRingtoneUri;
-        }
-        return null;
-    }
-
-    @Override
-    public boolean getNotificationVibrate() {
-        if (mConvList.mConvInfos.size() > 0) {
-            return mConvList.mConvInfos.get(0).mNotificationVibrate;
-        }
-        return false;
-    }
-
     protected CharSequence getTicker() {
         return BugleNotifications.buildColonSeparatedMessage(
                 mTickerSender != null ? mTickerSender : mTitle,
@@ -1234,7 +1206,8 @@
                 }
                 if (failedMessages.size() > 0) {
                     final NotificationCompat.Builder builder =
-                            new NotificationCompat.Builder(context);
+                            new NotificationCompat.Builder(context,
+                                    NotificationsUtil.DEFAULT_CHANNEL_ID);
 
                     CharSequence line1;
                     CharSequence line2;
diff --git a/src/com/android/messaging/datamodel/NotificationState.java b/src/com/android/messaging/datamodel/NotificationState.java
index e19f70c..4c11537 100644
--- a/src/com/android/messaging/datamodel/NotificationState.java
+++ b/src/com/android/messaging/datamodel/NotificationState.java
@@ -43,7 +43,8 @@
 public abstract class NotificationState {
     private static final int CONTENT_INTENT_REQUEST_CODE_OFFSET = 0;
     private static final int CLEAR_INTENT_REQUEST_CODE_OFFSET = 1;
-    private static final int NUM_REQUEST_CODES_NEEDED = 2;
+    private static final int READ_INTENT_REQUEST_CODE_OFFSET = 2;
+    private static final int NUM_REQUEST_CODES_NEEDED = 3;
 
     public interface FailedMessageQuery {
         static final String FAILED_MESSAGES_WHERE_CLAUSE =
@@ -78,6 +79,11 @@
      */
     public abstract PendingIntent getClearIntent();
 
+    /**
+     * The intent to be triggered when mark as read is pressed.
+     */
+    public abstract PendingIntent getReadIntent();
+
     protected Uri getAttachmentUri() {
         return null;
     }
@@ -116,6 +122,10 @@
         return mBaseRequestCode + CLEAR_INTENT_REQUEST_CODE_OFFSET;
     }
 
+    public int getReadIntentRequestCode() {
+        return mBaseRequestCode + READ_INTENT_REQUEST_CODE_OFFSET;
+    }
+
     /**
      * Gets the appropriate icon needed for notifications.
      */
@@ -134,15 +144,6 @@
      */
     public abstract int getPriority();
 
-    /** @return custom ringtone URI or null if not set */
-    public String getRingtoneUri() {
-        return null;
-    }
-
-    public boolean getNotificationVibrate() {
-        return false;
-    }
-
     public long getLatestReceivedTimestamp() {
         return Long.MIN_VALUE;
     }
diff --git a/src/com/android/messaging/datamodel/SyncManager.java b/src/com/android/messaging/datamodel/SyncManager.java
index 28fc696..e5d4935 100644
--- a/src/com/android/messaging/datamodel/SyncManager.java
+++ b/src/com/android/messaging/datamodel/SyncManager.java
@@ -51,33 +51,14 @@
      */
     public static class ConversationCustomization {
         private final boolean mArchived;
-        private final boolean mMuted;
-        private final boolean mNoVibrate;
-        private final String mNotificationSoundUri;
 
-        public ConversationCustomization(final boolean archived, final boolean muted,
-                final boolean noVibrate, final String notificationSoundUri) {
+        public ConversationCustomization(final boolean archived) {
             mArchived = archived;
-            mMuted = muted;
-            mNoVibrate = noVibrate;
-            mNotificationSoundUri = notificationSoundUri;
         }
 
         public boolean isArchived() {
             return mArchived;
         }
-
-        public boolean isMuted() {
-            return mMuted;
-        }
-
-        public boolean noVibrate() {
-            return mNoVibrate;
-        }
-
-        public String getNotificationSoundUri() {
-            return mNotificationSoundUri;
-        }
     }
 
     SyncManager() {
@@ -436,15 +417,13 @@
             if (customization != null) {
                 // There is user customization we need to recover
                 conversationId = BugleDatabaseOperations.getOrCreateConversation(db, threadId,
-                        customization.isArchived(), participants, customization.isMuted(),
-                        customization.noVibrate(), customization.getNotificationSoundUri());
+                        customization.isArchived(), participants);
                 if (customization.isArchived()) {
                     mArchivedConversations.add(conversationId);
                 }
             } else {
                 conversationId = BugleDatabaseOperations.getOrCreateConversation(db, threadId,
-                        false/*archived*/, participants, false/*noNotification*/,
-                        false/*noVibrate*/, null/*soundUri*/);
+                        false/*archived*/, participants);
             }
 
             if (conversationId != null) {
diff --git a/src/com/android/messaging/datamodel/action/BugleActionToasts.java b/src/com/android/messaging/datamodel/action/BugleActionToasts.java
index f60facd..17d15f2 100644
--- a/src/com/android/messaging/datamodel/action/BugleActionToasts.java
+++ b/src/com/android/messaging/datamodel/action/BugleActionToasts.java
@@ -114,7 +114,6 @@
     }
 
     public static void onConversationDeleted() {
-        showToast(R.string.conversation_deleted);
     }
 
     private static void showToast(final int messageResId) {
diff --git a/src/com/android/messaging/datamodel/action/DeleteConversationAction.java b/src/com/android/messaging/datamodel/action/DeleteConversationAction.java
index a00f6d6..6b81aa6 100644
--- a/src/com/android/messaging/datamodel/action/DeleteConversationAction.java
+++ b/src/com/android/messaging/datamodel/action/DeleteConversationAction.java
@@ -35,6 +35,7 @@
 import com.android.messaging.sms.MmsUtils;
 import com.android.messaging.util.Assert;
 import com.android.messaging.util.LogUtil;
+import com.android.messaging.util.NotificationsUtil;
 import com.android.messaging.widget.WidgetConversationProvider;
 
 import java.util.ArrayList;
@@ -118,6 +119,10 @@
                         + " has an invalid telephony thread id; will delete messages individually");
                 deleteConversationMessagesFromTelephony();
             }
+
+            // Finally, remove the conversation specific notification channel
+            NotificationsUtil.deleteNotificationChannel(Factory.get().getApplicationContext(),
+                    conversationId);
         } else {
             LogUtil.e(TAG, "DeleteConversationAction: conversationId is empty");
         }
diff --git a/src/com/android/messaging/datamodel/action/GetOrCreateConversationAction.java b/src/com/android/messaging/datamodel/action/GetOrCreateConversationAction.java
index b262141..7dd09c1 100644
--- a/src/com/android/messaging/datamodel/action/GetOrCreateConversationAction.java
+++ b/src/com/android/messaging/datamodel/action/GetOrCreateConversationAction.java
@@ -110,7 +110,7 @@
         }
 
         final String conversationId = BugleDatabaseOperations.getOrCreateConversation(db, threadId,
-                false, participants, false, false, null);
+                false, participants);
 
         return conversationId;
     }
diff --git a/src/com/android/messaging/datamodel/action/InsertNewMessageAction.java b/src/com/android/messaging/datamodel/action/InsertNewMessageAction.java
index 8bf6d5e..20f90dc 100644
--- a/src/com/android/messaging/datamodel/action/InsertNewMessageAction.java
+++ b/src/com/android/messaging/datamodel/action/InsertNewMessageAction.java
@@ -274,7 +274,7 @@
         }
 
         final String conversationId = BugleDatabaseOperations.getOrCreateConversation(db, threadId,
-                false, participants, false, false, null);
+                false, participants);
 
         final ParticipantData self = BugleDatabaseOperations.getOrCreateSelf(db, subId);
 
diff --git a/src/com/android/messaging/datamodel/action/UpdateConversationOptionsAction.java b/src/com/android/messaging/datamodel/action/UpdateConversationOptionsAction.java
deleted file mode 100644
index 6c9e739..0000000
--- a/src/com/android/messaging/datamodel/action/UpdateConversationOptionsAction.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.messaging.datamodel.action;
-
-import android.content.ContentValues;
-import android.os.Parcel;
-import android.os.Parcelable;
-
-import com.android.messaging.datamodel.BugleDatabaseOperations;
-import com.android.messaging.datamodel.DataModel;
-import com.android.messaging.datamodel.DatabaseHelper.ConversationColumns;
-import com.android.messaging.datamodel.DatabaseWrapper;
-import com.android.messaging.datamodel.MessagingContentProvider;
-import com.android.messaging.util.Assert;
-
-/**
- * Action used to update conversation options such as notification settings.
- */
-public class UpdateConversationOptionsAction extends Action
-        implements Parcelable {
-    /**
-     * Enable/disable conversation notifications.
-     */
-    public static void enableConversationNotifications(final String conversationId,
-            final boolean enableNotification) {
-        Assert.notNull(conversationId);
-
-        final UpdateConversationOptionsAction action = new UpdateConversationOptionsAction(
-                conversationId, enableNotification, null, null);
-        action.start();
-    }
-
-    /**
-     * Sets conversation notification sound.
-     */
-    public static void setConversationNotificationSound(final String conversationId,
-            final String ringtoneUri) {
-        Assert.notNull(conversationId);
-
-        final UpdateConversationOptionsAction action = new UpdateConversationOptionsAction(
-                conversationId, null, ringtoneUri, null);
-        action.start();
-    }
-
-    /**
-     * Enable/disable vibrations for conversation notification.
-     */
-    public static void enableVibrationForConversationNotification(final String conversationId,
-            final boolean enableVibration) {
-        Assert.notNull(conversationId);
-
-        final UpdateConversationOptionsAction action = new UpdateConversationOptionsAction(
-                conversationId, null, null, enableVibration);
-        action.start();
-    }
-
-    private static final String KEY_CONVERSATION_ID = "conversation_id";
-
-    // Keys for all settable settings.
-    private static final String KEY_ENABLE_NOTIFICATION = "enable_notification";
-    private static final String KEY_RINGTONE_URI = "ringtone_uri";
-    private static final String KEY_ENABLE_VIBRATION = "enable_vibration";
-
-    protected UpdateConversationOptionsAction(final String conversationId,
-            final Boolean enableNotification, final String ringtoneUri,
-            final Boolean enableVibration) {
-        Assert.notNull(conversationId);
-        actionParameters.putString(KEY_CONVERSATION_ID, conversationId);
-        if (enableNotification != null) {
-            actionParameters.putBoolean(KEY_ENABLE_NOTIFICATION, enableNotification);
-        }
-
-        if (ringtoneUri != null) {
-            actionParameters.putString(KEY_RINGTONE_URI, ringtoneUri);
-        }
-
-        if (enableVibration != null) {
-            actionParameters.putBoolean(KEY_ENABLE_VIBRATION, enableVibration);
-        }
-    }
-
-    protected void putOptionValuesInTransaction(final ContentValues values,
-            final DatabaseWrapper dbWrapper) {
-        Assert.isTrue(dbWrapper.getDatabase().inTransaction());
-        if (actionParameters.containsKey(KEY_ENABLE_NOTIFICATION)) {
-            values.put(ConversationColumns.NOTIFICATION_ENABLED,
-                    actionParameters.getBoolean(KEY_ENABLE_NOTIFICATION));
-        }
-
-        if (actionParameters.containsKey(KEY_RINGTONE_URI)) {
-            values.put(ConversationColumns.NOTIFICATION_SOUND_URI,
-                    actionParameters.getString(KEY_RINGTONE_URI));
-        }
-
-        if (actionParameters.containsKey(KEY_ENABLE_VIBRATION)) {
-            values.put(ConversationColumns.NOTIFICATION_VIBRATION,
-                    actionParameters.getBoolean(KEY_ENABLE_VIBRATION));
-        }
-    }
-
-    @Override
-    protected Object executeAction() {
-        final String conversationId = actionParameters.getString(KEY_CONVERSATION_ID);
-
-        final DatabaseWrapper db = DataModel.get().getDatabase();
-        db.beginTransaction();
-        try {
-            final ContentValues values = new ContentValues();
-            putOptionValuesInTransaction(values, db);
-
-            BugleDatabaseOperations.updateConversationRowIfExists(db, conversationId, values);
-
-            db.setTransactionSuccessful();
-        } finally {
-            db.endTransaction();
-        }
-        MessagingContentProvider.notifyConversationMetadataChanged(conversationId);
-        return null;
-    }
-
-    protected UpdateConversationOptionsAction(final Parcel in) {
-        super(in);
-    }
-
-    public static final Parcelable.Creator<UpdateConversationOptionsAction> CREATOR
-            = new Parcelable.Creator<UpdateConversationOptionsAction>() {
-        @Override
-        public UpdateConversationOptionsAction createFromParcel(final Parcel in) {
-            return new UpdateConversationOptionsAction(in);
-        }
-
-        @Override
-        public UpdateConversationOptionsAction[] newArray(final int size) {
-            return new UpdateConversationOptionsAction[size];
-        }
-    };
-
-    @Override
-    public void writeToParcel(final Parcel parcel, final int flags) {
-        writeActionToParcel(parcel, flags);
-    }
-}
diff --git a/src/com/android/messaging/datamodel/data/ContactPickerData.java b/src/com/android/messaging/datamodel/data/ContactPickerData.java
index fd6fca0..bf057db 100644
--- a/src/com/android/messaging/datamodel/data/ContactPickerData.java
+++ b/src/com/android/messaging/datamodel/data/ContactPickerData.java
@@ -96,7 +96,6 @@
         if (isBound(cursorLoader.getBindingId())) {
             switch (loader.getId()) {
                 case ALL_CONTACTS_LOADER:
-                    mListener.onAllContactsCursorUpdated(data);
                     mFrequentContactsCursorBuilder.setAllContacts(data);
                     break;
                 case FREQUENT_CONTACTS_LOADER:
@@ -115,10 +114,14 @@
                 // all contacts and frequent contacts loader, and we don't know which will finish
                 // first. Therefore, try to build the cursor and notify the listener if it's
                 // successfully built.
-                final Cursor frequentContactsCursor = mFrequentContactsCursorBuilder.build();
+                final Cursor frequentContactsCursor = mFrequentContactsCursorBuilder.build(false);
                 if (frequentContactsCursor != null) {
                     mListener.onFrequentContactsCursorUpdated(frequentContactsCursor);
+
+                    final Cursor allContactsCursor = mFrequentContactsCursorBuilder.build(true);
+                    mListener.onAllContactsCursorUpdated(allContactsCursor);
                 }
+
             }
         } else {
             LogUtil.w(LogUtil.BUGLE_TAG, "Loader finished after unbinding the contacts list");
diff --git a/src/com/android/messaging/datamodel/data/ConversationListItemData.java b/src/com/android/messaging/datamodel/data/ConversationListItemData.java
index f627a09..46d4b64 100644
--- a/src/com/android/messaging/datamodel/data/ConversationListItemData.java
+++ b/src/com/android/messaging/datamodel/data/ConversationListItemData.java
@@ -52,9 +52,6 @@
     private String mOtherParticipantNormalizedDestination;
     private String mSelfId;
     private int mParticipantCount;
-    private boolean mNotificationEnabled;
-    private String mNotificationSoundUri;
-    private boolean mNotificationVibrate;
     private boolean mIncludeEmailAddress;
     private int mMessageStatus;
     private int mMessageRawTelephonyStatus;
@@ -92,9 +89,6 @@
                 INDEX_OTHER_PARTICIPANT_NORMALIZED_DESTINATION);
         mSelfId = cursor.getString(INDEX_SELF_ID);
         mParticipantCount = cursor.getInt(INDEX_PARTICIPANT_COUNT);
-        mNotificationEnabled = cursor.getInt(INDEX_NOTIFICATION_ENABLED) == 1;
-        mNotificationSoundUri = cursor.getString(INDEX_NOTIFICATION_SOUND_URI);
-        mNotificationVibrate = cursor.getInt(INDEX_NOTIFICATION_VIBRATION) == 1;
         mIncludeEmailAddress = cursor.getInt(INDEX_INCLUDE_EMAIL_ADDRESS) == 1;
         mMessageStatus = cursor.getInt(INDEX_MESSAGE_STATUS);
         mMessageRawTelephonyStatus = cursor.getInt(INDEX_MESSAGE_RAW_TELEPHONY_STATUS);
@@ -199,18 +193,6 @@
         return mIncludeEmailAddress;
     }
 
-    public boolean getNotificationEnabled() {
-        return mNotificationEnabled;
-    }
-
-    public String getNotificationSoundUri() {
-        return mNotificationSoundUri;
-    }
-
-    public boolean getNotifiationVibrate() {
-        return mNotificationVibrate;
-    }
-
     public final boolean getIsFailedStatus() {
         return (mMessageStatus == MessageData.BUGLE_STATUS_OUTGOING_FAILED ||
                 mMessageStatus == MessageData.BUGLE_STATUS_OUTGOING_FAILED_EMERGENCY_NUMBER ||
@@ -328,12 +310,6 @@
             + " as " + ConversationListViewColumns.PREVIEW_CONTENT_TYPE + ", "
             + DatabaseHelper.CONVERSATIONS_TABLE + '.' + ConversationColumns.PARTICIPANT_COUNT
             + " as " + ConversationListViewColumns.PARTICIPANT_COUNT + ", "
-            + DatabaseHelper.CONVERSATIONS_TABLE + '.' + ConversationColumns.NOTIFICATION_ENABLED
-            + " as " + ConversationListViewColumns.NOTIFICATION_ENABLED + ", "
-            + DatabaseHelper.CONVERSATIONS_TABLE + '.' + ConversationColumns.NOTIFICATION_SOUND_URI
-            + " as " + ConversationListViewColumns.NOTIFICATION_SOUND_URI + ", "
-            + DatabaseHelper.CONVERSATIONS_TABLE + '.' + ConversationColumns.NOTIFICATION_VIBRATION
-            + " as " + ConversationListViewColumns.NOTIFICATION_VIBRATION + ", "
             + DatabaseHelper.CONVERSATIONS_TABLE + '.' +
                     ConversationColumns.INCLUDE_EMAIL_ADDRESS
             + " as " + ConversationListViewColumns.INCLUDE_EMAIL_ADDRESS + ", "
@@ -396,9 +372,6 @@
                 ConversationColumns.OTHER_PARTICIPANT_NORMALIZED_DESTINATION;
         static final String CURRENT_SELF_ID = ConversationColumns.CURRENT_SELF_ID;
         static final String PARTICIPANT_COUNT = ConversationColumns.PARTICIPANT_COUNT;
-        static final String NOTIFICATION_ENABLED = ConversationColumns.NOTIFICATION_ENABLED;
-        static final String NOTIFICATION_SOUND_URI = ConversationColumns.NOTIFICATION_SOUND_URI;
-        static final String NOTIFICATION_VIBRATION = ConversationColumns.NOTIFICATION_VIBRATION;
         static final String INCLUDE_EMAIL_ADDRESS =
                 ConversationColumns.INCLUDE_EMAIL_ADDRESS;
         static final String MESSAGE_STATUS = MessageColumns.STATUS;
@@ -424,9 +397,6 @@
         ConversationListViewColumns.OTHER_PARTICIPANT_NORMALIZED_DESTINATION,
         ConversationListViewColumns.PARTICIPANT_COUNT,
         ConversationListViewColumns.CURRENT_SELF_ID,
-        ConversationListViewColumns.NOTIFICATION_ENABLED,
-        ConversationListViewColumns.NOTIFICATION_SOUND_URI,
-        ConversationListViewColumns.NOTIFICATION_VIBRATION,
         ConversationListViewColumns.INCLUDE_EMAIL_ADDRESS,
         ConversationListViewColumns.MESSAGE_STATUS,
         ConversationListViewColumns.SHOW_DRAFT,
@@ -456,23 +426,20 @@
     private static final int INDEX_OTHER_PARTICIPANT_NORMALIZED_DESTINATION = 10;
     private static final int INDEX_PARTICIPANT_COUNT = 11;
     private static final int INDEX_SELF_ID = 12;
-    private static final int INDEX_NOTIFICATION_ENABLED = 13;
-    private static final int INDEX_NOTIFICATION_SOUND_URI = 14;
-    private static final int INDEX_NOTIFICATION_VIBRATION = 15;
-    private static final int INDEX_INCLUDE_EMAIL_ADDRESS = 16;
-    private static final int INDEX_MESSAGE_STATUS = 17;
-    private static final int INDEX_SHOW_DRAFT = 18;
-    private static final int INDEX_DRAFT_PREVIEW_URI = 19;
-    private static final int INDEX_DRAFT_PREVIEW_CONTENT_TYPE = 20;
-    private static final int INDEX_DRAFT_SNIPPET_TEXT = 21;
-    private static final int INDEX_ARCHIVE_STATUS = 22;
-    private static final int INDEX_MESSAGE_ID = 23;
-    private static final int INDEX_SUBJECT_TEXT = 24;
-    private static final int INDEX_DRAFT_SUBJECT_TEXT = 25;
-    private static final int INDEX_MESSAGE_RAW_TELEPHONY_STATUS = 26;
-    private static final int INDEX_SNIPPET_SENDER_FIRST_NAME = 27;
-    private static final int INDEX_SNIPPET_SENDER_DISPLAY_DESTINATION = 28;
-    private static final int INDEX_IS_ENTERPRISE = 29;
+    private static final int INDEX_INCLUDE_EMAIL_ADDRESS = 13;
+    private static final int INDEX_MESSAGE_STATUS = 14;
+    private static final int INDEX_SHOW_DRAFT = 15;
+    private static final int INDEX_DRAFT_PREVIEW_URI = 16;
+    private static final int INDEX_DRAFT_PREVIEW_CONTENT_TYPE = 17;
+    private static final int INDEX_DRAFT_SNIPPET_TEXT = 18;
+    private static final int INDEX_ARCHIVE_STATUS = 19;
+    private static final int INDEX_MESSAGE_ID = 20;
+    private static final int INDEX_SUBJECT_TEXT = 21;
+    private static final int INDEX_DRAFT_SUBJECT_TEXT = 22;
+    private static final int INDEX_MESSAGE_RAW_TELEPHONY_STATUS = 23;
+    private static final int INDEX_SNIPPET_SENDER_FIRST_NAME = 24;
+    private static final int INDEX_SNIPPET_SENDER_DISPLAY_DESTINATION = 25;
+    private static final int INDEX_IS_ENTERPRISE = 26;
 
     private static final String DIVIDER_TEXT = ", ";
 
diff --git a/src/com/android/messaging/datamodel/data/PeopleAndOptionsData.java b/src/com/android/messaging/datamodel/data/PeopleAndOptionsData.java
index 650a037..b8b4a41 100644
--- a/src/com/android/messaging/datamodel/data/PeopleAndOptionsData.java
+++ b/src/com/android/messaging/datamodel/data/PeopleAndOptionsData.java
@@ -26,7 +26,6 @@
 import com.android.messaging.datamodel.BoundCursorLoader;
 import com.android.messaging.datamodel.MessagingContentProvider;
 import com.android.messaging.datamodel.action.BugleActionToasts;
-import com.android.messaging.datamodel.action.UpdateConversationOptionsAction;
 import com.android.messaging.datamodel.action.UpdateDestinationBlockedAction;
 import com.android.messaging.datamodel.binding.BindableData;
 import com.android.messaging.datamodel.binding.BindingBase;
@@ -74,7 +73,7 @@
                     final Uri uri =
                             MessagingContentProvider.buildConversationMetadataUri(mConversationId);
                     return new BoundCursorLoader(bindingId, mContext, uri,
-                            PeopleOptionsItemData.PROJECTION, null, null, null);
+                            new String[]{}, null, null, null);
                 }
 
                 case PARTICIPANT_LOADER: {
@@ -169,33 +168,6 @@
         }
     }
 
-    public void enableConversationNotifications(final BindingBase<PeopleAndOptionsData> binding,
-            final boolean enable) {
-        final String bindingId = binding.getBindingId();
-        if (isBound(bindingId)) {
-            UpdateConversationOptionsAction.enableConversationNotifications(
-                    mConversationId, enable);
-        }
-    }
-
-    public void setConversationNotificationSound(final BindingBase<PeopleAndOptionsData> binding,
-            final String ringtoneUri) {
-        final String bindingId = binding.getBindingId();
-        if (isBound(bindingId)) {
-            UpdateConversationOptionsAction.setConversationNotificationSound(mConversationId,
-                    ringtoneUri);
-        }
-    }
-
-    public void enableConversationNotificationVibration(
-            final BindingBase<PeopleAndOptionsData> binding, final boolean enable) {
-        final String bindingId = binding.getBindingId();
-        if (isBound(bindingId)) {
-            UpdateConversationOptionsAction.enableVibrationForConversationNotification(
-                    mConversationId, enable);
-        }
-    }
-
     public void setDestinationBlocked(final BindingBase<PeopleAndOptionsData> binding,
             final boolean blocked) {
         final String bindingId = binding.getBindingId();
@@ -207,4 +179,8 @@
                     BugleActionToasts.makeUpdateDestinationBlockedActionListener(mContext));
         }
     }
+
+    public String getConversationId() {
+        return mConversationId;
+    }
 }
diff --git a/src/com/android/messaging/datamodel/data/PeopleOptionsItemData.java b/src/com/android/messaging/datamodel/data/PeopleOptionsItemData.java
index 5af6a30..7441afc 100644
--- a/src/com/android/messaging/datamodel/data/PeopleOptionsItemData.java
+++ b/src/com/android/messaging/datamodel/data/PeopleOptionsItemData.java
@@ -17,44 +17,19 @@
 
 import android.content.Context;
 import android.database.Cursor;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
 import android.net.Uri;
 
 import com.android.messaging.R;
 import com.android.messaging.datamodel.data.ConversationListItemData.ConversationListViewColumns;
 import com.android.messaging.util.Assert;
-import com.android.messaging.util.RingtoneUtil;
 
 public class PeopleOptionsItemData {
-    public static final String[] PROJECTION = {
-        ConversationListViewColumns.NOTIFICATION_ENABLED,
-        ConversationListViewColumns.NOTIFICATION_SOUND_URI,
-        ConversationListViewColumns.NOTIFICATION_VIBRATION,
-    };
-
-    // Column index for query projection.
-    private static final int INDEX_NOTIFICATION_ENABLED = 0;
-    private static final int INDEX_NOTIFICATION_SOUND_URI = 1;
-    private static final int INDEX_NOTIFICATION_VIBRATION = 2;
-
     // Identification for each setting that's surfaced to the UI layer.
-    public static final int SETTING_NOTIFICATION_ENABLED = 0;
-    public static final int SETTING_NOTIFICATION_SOUND_URI = 1;
-    public static final int SETTING_NOTIFICATION_VIBRATION = 2;
-    public static final int SETTING_BLOCKED = 3;
-    public static final int SETTINGS_COUNT = 4;
-
-    // Type of UI switch to show for the toggle button.
-    public static final int TOGGLE_TYPE_CHECKBOX = 0;
-    public static final int TOGGLE_TYPE_SWITCH = 1;
+    public static final int SETTING_NOTIFICATION = 0;
+    public static final int SETTING_BLOCKED = 1;
+    public static final int SETTINGS_COUNT = 2;
 
     private String mTitle;
-    private String mSubtitle;
-    private Uri mRingtoneUri;
-    private boolean mCheckable;
-    private boolean mChecked;
-    private boolean mEnabled;
     private int mItemId;
     private ParticipantData mOtherParticipant;
 
@@ -71,41 +46,12 @@
      */
     public void bind(
             final Cursor cursor, final ParticipantData otherParticipant, final int settingType) {
-        mSubtitle = null;
-        mRingtoneUri = null;
-        mCheckable = true;
-        mEnabled = true;
         mItemId = settingType;
         mOtherParticipant = otherParticipant;
 
-        final boolean notificationEnabled = cursor.getInt(INDEX_NOTIFICATION_ENABLED) == 1;
         switch (settingType) {
-            case SETTING_NOTIFICATION_ENABLED:
+            case SETTING_NOTIFICATION:
                 mTitle = mContext.getString(R.string.notifications_enabled_conversation_pref_title);
-                mChecked = notificationEnabled;
-                break;
-
-            case SETTING_NOTIFICATION_SOUND_URI:
-                mTitle = mContext.getString(R.string.notification_sound_pref_title);
-                final String ringtoneString = cursor.getString(INDEX_NOTIFICATION_SOUND_URI);
-                Uri ringtoneUri = RingtoneUtil.getNotificationRingtoneUri(ringtoneString);
-
-                mSubtitle = mContext.getString(R.string.silent_ringtone);
-                if (ringtoneUri != null) {
-                    final Ringtone ringtone = RingtoneManager.getRingtone(mContext, ringtoneUri);
-                    if (ringtone != null) {
-                        mSubtitle = ringtone.getTitle(mContext);
-                    }
-                }
-                mCheckable = false;
-                mRingtoneUri = ringtoneUri;
-                mEnabled = notificationEnabled;
-                break;
-
-            case SETTING_NOTIFICATION_VIBRATION:
-                mTitle = mContext.getString(R.string.notification_vibrate_pref_title);
-                mChecked = cursor.getInt(INDEX_NOTIFICATION_VIBRATION) == 1;
-                mEnabled = notificationEnabled;
                 break;
 
             case SETTING_BLOCKED:
@@ -113,7 +59,6 @@
                 final int resourceId = otherParticipant.isBlocked() ?
                         R.string.unblock_contact_title : R.string.block_contact_title;
                 mTitle = mContext.getString(resourceId, otherParticipant.getDisplayDestination());
-                mCheckable = false;
                 break;
 
              default:
@@ -125,30 +70,10 @@
         return mTitle;
     }
 
-    public String getSubtitle() {
-        return mSubtitle;
-    }
-
-    public boolean getCheckable() {
-        return mCheckable;
-    }
-
-    public boolean getChecked() {
-        return mChecked;
-    }
-
-    public boolean getEnabled() {
-        return mEnabled;
-    }
-
     public int getItemId() {
         return mItemId;
     }
 
-    public Uri getRingtoneUri() {
-        return mRingtoneUri;
-    }
-
     public ParticipantData getOtherParticipant() {
         return mOtherParticipant;
     }
diff --git a/src/com/android/messaging/datamodel/media/AvatarRequest.java b/src/com/android/messaging/datamodel/media/AvatarRequest.java
index 6a738c7..dea467f 100644
--- a/src/com/android/messaging/datamodel/media/AvatarRequest.java
+++ b/src/com/android/messaging/datamodel/media/AvatarRequest.java
@@ -17,6 +17,7 @@
 
 import android.content.Context;
 import android.content.res.Resources;
+import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.Canvas;
 import android.graphics.Matrix;
@@ -42,10 +43,12 @@
 public class AvatarRequest extends UriImageRequest<AvatarRequestDescriptor> {
     private static Bitmap sDefaultPersonBitmap;
     private static Bitmap sDefaultPersonBitmapLarge;
+    private static TypedArray sColors;
 
     public AvatarRequest(final Context context,
             final AvatarRequestDescriptor descriptor) {
         super(context, descriptor);
+        sColors = context.getResources().obtainTypedArray(R.array.letter_tile_colors);
     }
 
     @Override
@@ -106,7 +109,8 @@
             avatarType = AvatarUriUtil.getAvatarType(generatedUri);
             if (AvatarUriUtil.TYPE_LETTER_TILE_URI.equals(avatarType)) {
                 final String name = AvatarUriUtil.getName(generatedUri);
-                bitmap = renderLetterTile(name, width, height);
+                final String identifier = AvatarUriUtil.getIdentifier(generatedUri);
+                bitmap = renderLetterTile(name, identifier, width, height);
             } else {
                 bitmap = renderDefaultAvatar(width, height);
             }
@@ -153,12 +157,12 @@
         return bitmap;
     }
 
-    private Bitmap renderLetterTile(final String name, final int width, final int height) {
+    private Bitmap renderLetterTile(final String name, final String identifier, final int width, final int height) {
         final float halfWidth = width / 2;
         final float halfHeight = height / 2;
         final int minOfWidthAndHeight = Math.min(width, height);
         final Bitmap bitmap = getBitmapPool().createOrReuseBitmap(width, height,
-                getBackgroundColor());
+                getBackgroundColor(identifier));
         final Resources resources = mContext.getResources();
         final Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
         paint.setTypeface(Typeface.create("sans-serif-medium", Typeface.NORMAL));
@@ -186,4 +190,9 @@
     public int getCacheId() {
         return BugleMediaCacheManager.AVATAR_IMAGE_CACHE;
     }
+
+    private int getBackgroundColor(String identifier) {
+        final int color = Math.abs(identifier.hashCode()) % sColors.length();
+        return sColors.getColor(color, mContext.getResources().getColor(R.color.primary_color));
+    }
 }
diff --git a/src/com/android/messaging/receiver/NotificationReceiver.java b/src/com/android/messaging/receiver/NotificationReceiver.java
index bbb847d..f87779c 100644
--- a/src/com/android/messaging/receiver/NotificationReceiver.java
+++ b/src/com/android/messaging/receiver/NotificationReceiver.java
@@ -20,6 +20,7 @@
 import android.content.Intent;
 
 import com.android.messaging.datamodel.BugleNotifications;
+import com.android.messaging.datamodel.action.MarkAsReadAction;
 import com.android.messaging.datamodel.action.MarkAsSeenAction;
 import com.android.messaging.ui.UIIntents;
 import com.android.messaging.util.ConversationIdSet;
@@ -52,6 +53,15 @@
                     BugleNotifications.resetLastMessageDing(conversationId);
                 }
             }
+        } else if (intent.getAction().equals(UIIntents.ACTION_MARK_AS_READ)) {
+            final String conversationIdSetString =
+                    intent.getStringExtra(UIIntents.UI_INTENT_EXTRA_CONVERSATION_ID_SET);
+            if (conversationIdSetString != null) {
+                for (final String conversationId :
+                        ConversationIdSet.createSet(conversationIdSetString)) {
+                        MarkAsReadAction.markAsRead(conversationId);
+                }
+            }
         }
     }
-}
\ No newline at end of file
+}
diff --git a/src/com/android/messaging/receiver/SmsReceiver.java b/src/com/android/messaging/receiver/SmsReceiver.java
index f1f9bcd..89a3710 100644
--- a/src/com/android/messaging/receiver/SmsReceiver.java
+++ b/src/com/android/messaging/receiver/SmsReceiver.java
@@ -48,6 +48,7 @@
 import com.android.messaging.util.BugleGservicesKeys;
 import com.android.messaging.util.DebugUtils;
 import com.android.messaging.util.LogUtil;
+import com.android.messaging.util.NotificationsUtil;
 import com.android.messaging.util.OsUtil;
 import com.android.messaging.util.PendingIntentConstants;
 import com.android.messaging.util.PhoneUtils;
@@ -252,11 +253,6 @@
         protected Style build(Builder builder) {
             return null;
         }
-
-        @Override
-        public boolean getNotificationVibrate() {
-            return true;
-        }
     }
 
     public static void postNewMessageSecondaryUserNotification() {
@@ -265,7 +261,8 @@
         final PendingIntent pendingIntent = UIIntents.get()
                 .getPendingIntentForSecondaryUserNewMessageNotification(context);
 
-        final NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+        final NotificationCompat.Builder builder = new NotificationCompat.Builder(context,
+                NotificationsUtil.DEFAULT_CHANNEL_ID);
         builder.setContentTitle(resources.getString(R.string.secondary_user_new_message_title))
                 .setTicker(resources.getString(R.string.secondary_user_new_message_ticker))
                 .setSmallIcon(R.drawable.ic_sms_light)
@@ -282,10 +279,7 @@
         final NotificationManagerCompat notificationManager =
                 NotificationManagerCompat.from(Factory.get().getApplicationContext());
 
-        int defaults = Notification.DEFAULT_LIGHTS;
-        if (BugleNotifications.shouldVibrate(new SecondaryUserNotificationState())) {
-            defaults |= Notification.DEFAULT_VIBRATE;
-        }
+        int defaults = Notification.DEFAULT_LIGHTS | Notification.DEFAULT_VIBRATE;
         notification.defaults = defaults;
 
         notificationManager.notify(getNotificationTag(),
diff --git a/src/com/android/messaging/sms/SmsStorageStatusManager.java b/src/com/android/messaging/sms/SmsStorageStatusManager.java
index 4f03195..6bd68cb 100644
--- a/src/com/android/messaging/sms/SmsStorageStatusManager.java
+++ b/src/com/android/messaging/sms/SmsStorageStatusManager.java
@@ -25,6 +25,7 @@
 import com.android.messaging.Factory;
 import com.android.messaging.R;
 import com.android.messaging.ui.UIIntents;
+import com.android.messaging.util.NotificationsUtil;
 import com.android.messaging.util.PendingIntentConstants;
 import com.android.messaging.util.PhoneUtils;
 
@@ -65,7 +66,8 @@
         final PendingIntent pendingIntent = UIIntents.get()
                 .getPendingIntentForLowStorageNotifications(context);
 
-        final NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
+        final NotificationCompat.Builder builder = new NotificationCompat.Builder(context,
+                NotificationsUtil.DEFAULT_CHANNEL_ID);
         builder.setContentTitle(resources.getString(R.string.sms_storage_low_title))
                 .setTicker(resources.getString(R.string.sms_storage_low_notification_ticker))
                 .setSmallIcon(R.drawable.ic_failed_light)
diff --git a/src/com/android/messaging/ui/BugleActionBarActivity.java b/src/com/android/messaging/ui/BugleActionBarActivity.java
index 42d40fe..24f1c6a 100644
--- a/src/com/android/messaging/ui/BugleActionBarActivity.java
+++ b/src/com/android/messaging/ui/BugleActionBarActivity.java
@@ -349,7 +349,7 @@
             mActionMode.getCallback().onPrepareActionMode(mActionMode, mActionBarMenu);
             actionBar.setBackgroundDrawable(new ColorDrawable(
                     getResources().getColor(R.color.contextual_action_bar_background_color)));
-            actionBar.setHomeAsUpIndicator(R.drawable.ic_cancel_small_dark);
+            actionBar.setHomeAsUpIndicator(R.drawable.ic_cancel_small);
             actionBar.show();
         }
     }
diff --git a/src/com/android/messaging/ui/ConversationDrawables.java b/src/com/android/messaging/ui/ConversationDrawables.java
index cf858e2..a5654b7 100644
--- a/src/com/android/messaging/ui/ConversationDrawables.java
+++ b/src/com/android/messaging/ui/ConversationDrawables.java
@@ -52,6 +52,7 @@
     private int mIncomingAudioButtonColor;
     private int mSelectedBubbleColor;
     private int mThemeColor;
+    private int mBubbleColor;
 
     public static ConversationDrawables get() {
         if (sInstance == null) {
@@ -73,11 +74,11 @@
     public void updateDrawables() {
         final Resources resources = mContext.getResources();
 
-        mIncomingBubbleDrawable = resources.getDrawable(R.drawable.msg_bubble_incoming);
+        mIncomingBubbleDrawable = resources.getDrawable(R.drawable.msg_bubble_incoming_new);
         mIncomingBubbleNoArrowDrawable =
                 resources.getDrawable(R.drawable.message_bubble_incoming_no_arrow);
         mIncomingErrorBubbleDrawable = resources.getDrawable(R.drawable.msg_bubble_error);
-        mOutgoingBubbleDrawable =  resources.getDrawable(R.drawable.msg_bubble_outgoing);
+        mOutgoingBubbleDrawable =  resources.getDrawable(R.drawable.msg_bubble_outgoing_new);
         mOutgoingBubbleNoArrowDrawable =
                 resources.getDrawable(R.drawable.message_bubble_outgoing_no_arrow);
         mAudioPlayButtonDrawable = resources.getDrawable(R.drawable.ic_audio_play);
@@ -102,6 +103,7 @@
                 resources.getColor(R.color.message_audio_button_color_incoming);
         mSelectedBubbleColor = resources.getColor(R.color.message_bubble_color_selected);
         mThemeColor = resources.getColor(R.color.primary_color);
+        mBubbleColor = resources.getColor(R.color.google_gray);
     }
 
     public Drawable getBubbleDrawable(final boolean selected, final boolean incoming,
@@ -127,7 +129,7 @@
             if (isError) {
                 color = mIncomingErrorBubbleColor;
             } else {
-                color = mThemeColor;
+                color = mBubbleColor;
             }
         } else {
             color = mOutgoingBubbleColor;
diff --git a/src/com/android/messaging/ui/SmsStorageLowWarningFragment.java b/src/com/android/messaging/ui/SmsStorageLowWarningFragment.java
index 3ebfdcf..c89e971 100644
--- a/src/com/android/messaging/ui/SmsStorageLowWarningFragment.java
+++ b/src/com/android/messaging/ui/SmsStorageLowWarningFragment.java
@@ -92,7 +92,8 @@
 
         @Override
         public Dialog onCreateDialog(final Bundle savedInstanceState) {
-            final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
+            final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(),
+                    R.style.BugleThemeDialog);
 
             final LayoutInflater inflater = getActivity().getLayoutInflater();
             final View dialogLayout = inflater.inflate(
diff --git a/src/com/android/messaging/ui/UIIntents.java b/src/com/android/messaging/ui/UIIntents.java
index bf5edd7..144e831 100644
--- a/src/com/android/messaging/ui/UIIntents.java
+++ b/src/com/android/messaging/ui/UIIntents.java
@@ -69,10 +69,13 @@
     public static final String ACTION_RESET_NOTIFICATIONS =
             "com.android.messaging.reset_notifications";
 
+    public static final String ACTION_MARK_AS_READ =
+            "com.android.messaging.mark_as_read";
+
     // Sending VCard uri to VCard detail activity
     public static final String UI_INTENT_EXTRA_VCARD_URI = "vcard_uri";
 
-    public static final String CMAS_COMPONENT = "com.android.cellbroadcastreceiver";
+    public static final String CMAS_COMPONENT = "com.android.cellbroadcastreceiver.module";
 
     // Intent action for local broadcast receiver for conversation self id change.
     public static final String CONVERSATION_SELF_ID_CHANGE_BROADCAST_ACTION =
@@ -265,16 +268,6 @@
     public abstract Intent getViewUrlIntent(final String url);
 
     /**
-     * Get an intent to launch the ringtone picker
-     * @param title the title to show in the ringtone picker
-     * @param existingUri the currently set uri
-     * @param defaultUri the default uri if none is currently set
-     * @param toneType type of ringtone to pick, maybe any of RingtoneManager.TYPE_*
-     */
-    public abstract Intent getRingtonePickerIntent(final String title, final Uri existingUri,
-            final Uri defaultUri, final int toneType);
-
-    /**
      * Get an intent to launch the wireless alert viewer.
      */
     public abstract Intent getWirelessAlertsIntent();
@@ -334,6 +327,14 @@
             final int requestCode);
 
     /**
+     * Get a PendingIntent for marking a conversation as read.
+     *
+     * <p>This is intended to be used by notifications.
+     */
+    public abstract PendingIntent getPendingIntentForMarkingAsRead(final Context context,
+            final ConversationIdSet conversationIdSet, final int requestCode);
+
+    /**
      * Get a PendingIntent for showing low storage notifications.
      */
     public abstract PendingIntent getPendingIntentForLowStorageNotifications(final Context context);
diff --git a/src/com/android/messaging/ui/UIIntentsImpl.java b/src/com/android/messaging/ui/UIIntentsImpl.java
index 8a1224a..0fabfdd 100644
--- a/src/com/android/messaging/ui/UIIntentsImpl.java
+++ b/src/com/android/messaging/ui/UIIntentsImpl.java
@@ -18,6 +18,7 @@
 import android.app.Activity;
 import android.app.Fragment;
 import android.app.PendingIntent;
+import android.app.role.RoleManager;
 import android.appwidget.AppWidgetManager;
 import android.content.ActivityNotFoundException;
 import android.content.ClipData;
@@ -27,7 +28,6 @@
 import android.content.Intent;
 import android.graphics.Point;
 import android.graphics.Rect;
-import android.media.RingtoneManager;
 import android.net.Uri;
 import android.os.Bundle;
 import android.provider.ContactsContract.Contacts;
@@ -431,6 +431,20 @@
                 PendingIntent.FLAG_UPDATE_CURRENT);
     }
 
+    @Override
+    public PendingIntent getPendingIntentForMarkingAsRead(final Context context,
+            final ConversationIdSet conversationIdSet, final int requestCode) {
+        final Intent intent = new Intent(context, NotificationReceiver.class);
+        intent.setAction(ACTION_MARK_AS_READ);
+        if (conversationIdSet != null) {
+            intent.putExtra(UI_INTENT_EXTRA_CONVERSATION_ID_SET,
+                    conversationIdSet.getDelimitedString());
+        }
+        return PendingIntent.getBroadcast(context,
+                requestCode, intent,
+                PendingIntent.FLAG_UPDATE_CURRENT);
+    }
+
     /**
      * Gets a PendingIntent associated with an Intent to start an Activity. All notifications
      * that starts an Activity must use this method to get a PendingIntent, which achieves two
@@ -451,16 +465,6 @@
     }
 
     @Override
-    public Intent getRingtonePickerIntent(final String title, final Uri existingUri,
-            final Uri defaultUri, final int toneType) {
-        return new Intent(RingtoneManager.ACTION_RINGTONE_PICKER)
-                .putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, toneType)
-                .putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, title)
-                .putExtra(RingtoneManager.EXTRA_RINGTONE_EXISTING_URI, existingUri)
-                .putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, defaultUri);
-    }
-
-    @Override
     public PendingIntent getPendingIntentForLowStorageNotifications(final Context context) {
         final TaskStackBuilder taskStackBuilder = TaskStackBuilder.create(context);
         final Intent conversationListIntent = getConversationListActivityIntent(context);
@@ -508,9 +512,8 @@
 
     @Override
     public Intent getChangeDefaultSmsAppIntent(final Activity activity) {
-        final Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
-        intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME, activity.getPackageName());
-        return intent;
+        RoleManager roleManager = activity.getSystemService(RoleManager.class);
+        return roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS);
     }
 
     @Override
diff --git a/src/com/android/messaging/ui/VCardDetailActivity.java b/src/com/android/messaging/ui/VCardDetailActivity.java
index b9fb3d1..cacfda5 100644
--- a/src/com/android/messaging/ui/VCardDetailActivity.java
+++ b/src/com/android/messaging/ui/VCardDetailActivity.java
@@ -38,11 +38,11 @@
     @Override
     public void onAttachFragment(final Fragment fragment) {
         if (fragment instanceof VCardDetailFragment) {
-            final Uri vCardUri =
-                    getIntent().getParcelableExtra(UIIntents.UI_INTENT_EXTRA_VCARD_URI);
-            Assert.notNull(vCardUri);
-            final VCardDetailFragment vCardDetailFragment = (VCardDetailFragment) fragment;
-            vCardDetailFragment.setVCardUri(vCardUri);
+            final Uri vCardUri = getIntent().getParcelableExtra(UIIntents.UI_INTENT_EXTRA_VCARD_URI);
+            if (vCardUri != null) {
+                final VCardDetailFragment vCardDetailFragment = (VCardDetailFragment) fragment;
+                vCardDetailFragment.setVCardUri(vCardUri);
+            }
         }
     }
 
diff --git a/src/com/android/messaging/ui/appsettings/ApnEditorActivity.java b/src/com/android/messaging/ui/appsettings/ApnEditorActivity.java
index 5d19a83..322c760 100644
--- a/src/com/android/messaging/ui/appsettings/ApnEditorActivity.java
+++ b/src/com/android/messaging/ui/appsettings/ApnEditorActivity.java
@@ -25,9 +25,9 @@
 import android.database.sqlite.SQLiteDatabase;
 import android.os.AsyncTask;
 import android.os.Bundle;
-import android.preference.EditTextPreference;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
+import androidx.preference.EditTextPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragment;
 import android.provider.Telephony;
 import androidx.core.app.NavUtils;
 import android.view.KeyEvent;
@@ -175,9 +175,7 @@
         }
 
         @Override
-        public void onActivityCreated(Bundle savedInstanceState) {
-            super.onActivityCreated(savedInstanceState);
-
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
             addPreferencesFromResource(R.xml.apn_editor);
 
             setHasOptionsMenu(true);
@@ -301,7 +299,7 @@
             // If it's a new APN, then cancel will delete the new entry in onPause
             if (!mNewApn) {
                 menu.add(0, MENU_DELETE, 0, R.string.menu_delete_apn)
-                    .setIcon(R.drawable.ic_delete_small_dark);
+                    .setIcon(R.drawable.ic_delete_small);
             }
             menu.add(0, MENU_SAVE, 0, R.string.menu_save_apn)
                 .setIcon(android.R.drawable.ic_menu_save);
diff --git a/src/com/android/messaging/ui/appsettings/ApnPreference.java b/src/com/android/messaging/ui/appsettings/ApnPreference.java
index 64358eb..0d7d947 100644
--- a/src/com/android/messaging/ui/appsettings/ApnPreference.java
+++ b/src/com/android/messaging/ui/appsettings/ApnPreference.java
@@ -17,7 +17,6 @@
 package com.android.messaging.ui.appsettings;
 
 import android.content.Context;
-import android.preference.Preference;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.View;
@@ -27,6 +26,10 @@
 import android.widget.RadioButton;
 import android.widget.RelativeLayout;
 
+import androidx.annotation.NonNull;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+
 import com.android.messaging.R;
 import com.android.messaging.datamodel.data.ParticipantData;
 import com.android.messaging.ui.UIIntents;
@@ -59,9 +62,9 @@
     private int mSubId = ParticipantData.DEFAULT_SELF_SUB_ID;
 
     @Override
-    public View getView(View convertView, ViewGroup parent) {
-        View view = super.getView(convertView, parent);
-
+    public void onBindViewHolder(@NonNull PreferenceViewHolder holder) {
+        super.onBindViewHolder(holder);
+        View view = holder.itemView;
         View widget = view.findViewById(R.id.apn_radiobutton);
         if ((widget != null) && widget instanceof RadioButton) {
             RadioButton rb = (RadioButton) widget;
@@ -87,8 +90,6 @@
         if ((textLayout != null) && textLayout instanceof RelativeLayout) {
             textLayout.setOnClickListener(this);
         }
-
-        return view;
     }
 
     public boolean isChecked() {
diff --git a/src/com/android/messaging/ui/appsettings/ApnSettingsActivity.java b/src/com/android/messaging/ui/appsettings/ApnSettingsActivity.java
index 13f775a..10fb997 100644
--- a/src/com/android/messaging/ui/appsettings/ApnSettingsActivity.java
+++ b/src/com/android/messaging/ui/appsettings/ApnSettingsActivity.java
@@ -30,10 +30,10 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.UserManager;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceGroup;
-import android.preference.PreferenceScreen;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragment;
+import androidx.preference.PreferenceGroup;
+import androidx.preference.PreferenceScreen;
 import android.provider.Telephony;
 import androidx.core.app.NavUtils;
 import android.view.Menu;
@@ -162,9 +162,7 @@
         }
 
         @Override
-        public void onActivityCreated(Bundle savedInstanceState) {
-            super.onActivityCreated(savedInstanceState);
-
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
             final ListView lv = (ListView) getView().findViewById(android.R.id.list);
             TextView empty = (TextView) getView().findViewById(android.R.id.empty);
             if (empty != null) {
@@ -303,8 +301,7 @@
         }
 
         @Override
-        public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen,
-                Preference preference) {
+        public boolean onPreferenceTreeClick(Preference preference) {
             startActivity(
                     UIIntents.get().getApnEditorIntent(getActivity(), preference.getKey(), mSubId));
             return true;
diff --git a/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java b/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java
index d7abe85..e8e7f88 100644
--- a/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java
+++ b/src/com/android/messaging/ui/appsettings/ApplicationSettingsActivity.java
@@ -17,18 +17,14 @@
 package com.android.messaging.ui.appsettings;
 
 import android.app.FragmentTransaction;
+import android.app.role.RoleManager;
 import android.content.Intent;
-import android.content.SharedPreferences;
-import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
-import android.media.Ringtone;
-import android.media.RingtoneManager;
 import android.net.Uri;
 import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
-import android.preference.RingtonePreference;
-import android.preference.TwoStatePreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
+import androidx.preference.SwitchPreference;
 import android.provider.Settings;
 import androidx.core.app.NavUtils;
 import android.text.TextUtils;
@@ -55,10 +51,8 @@
         if (topLevel) {
             getSupportActionBar().setTitle(getString(R.string.settings_activity_title));
         }
-
-        FragmentTransaction ft = getFragmentManager().beginTransaction();
-        ft.replace(android.R.id.content, new ApplicationSettingsFragment());
-        ft.commit();
+        getWindow().getDecorView().setBackgroundColor(getColor(R.color.contextual_action_bar_background_color));
+        getSupportFragmentManager().beginTransaction().replace(android.R.id.content, new ApplicationSettingsFragment()).commit();
     }
 
     @Override
@@ -84,47 +78,34 @@
         return super.onOptionsItemSelected(item);
     }
 
-    public static class ApplicationSettingsFragment extends PreferenceFragment implements
-            OnSharedPreferenceChangeListener {
+    public static class ApplicationSettingsFragment extends PreferenceFragmentCompat {
 
-        private String mNotificationsEnabledPreferenceKey;
-        private TwoStatePreference mNotificationsEnabledPreference;
-        private String mRingtonePreferenceKey;
-        private RingtonePreference mRingtonePreference;
-        private Preference mVibratePreference;
-        private String mSmsDisabledPrefKey;
-        private Preference mSmsDisabledPreference;
+        private String mNotificationsPreferenceKey;
+        private Preference mNotificationsPreference;
         private String mSmsEnabledPrefKey;
         private Preference mSmsEnabledPreference;
-        private boolean mIsSmsPreferenceClicked;
+        private String mSwipeRightToDeleteConversationkey;
+        private SwitchPreference mSwipeRightToDeleteConversationPreference;
 
         public ApplicationSettingsFragment() {
             // Required empty constructor
         }
 
         @Override
-        public void onCreate(final Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
 
             getPreferenceManager().setSharedPreferencesName(BuglePrefs.SHARED_PREFERENCES_NAME);
             addPreferencesFromResource(R.xml.preferences_application);
 
-            mNotificationsEnabledPreferenceKey =
-                    getString(R.string.notifications_enabled_pref_key);
-            mNotificationsEnabledPreference = (TwoStatePreference) findPreference(
-                    mNotificationsEnabledPreferenceKey);
-            mRingtonePreferenceKey = getString(R.string.notification_sound_pref_key);
-            mRingtonePreference = (RingtonePreference) findPreference(mRingtonePreferenceKey);
-            mVibratePreference = findPreference(
-                    getString(R.string.notification_vibration_pref_key));
-            mSmsDisabledPrefKey = getString(R.string.sms_disabled_pref_key);
-            mSmsDisabledPreference = findPreference(mSmsDisabledPrefKey);
+            mNotificationsPreferenceKey =
+                    getString(R.string.notifications_pref_key);
+            mNotificationsPreference = findPreference(mNotificationsPreferenceKey);
             mSmsEnabledPrefKey = getString(R.string.sms_enabled_pref_key);
             mSmsEnabledPreference = findPreference(mSmsEnabledPrefKey);
-            mIsSmsPreferenceClicked = false;
-
-            final SharedPreferences prefs = getPreferenceScreen().getSharedPreferences();
-            updateSoundSummary(prefs);
+            mSwipeRightToDeleteConversationkey = getString(
+                    R.string.swipe_right_deletes_conversation_key);
+            mSwipeRightToDeleteConversationPreference =
+                    (SwitchPreference) findPreference(mSwipeRightToDeleteConversationkey);
 
             if (!DebugUtils.isDebugEnabled()) {
                 final Preference debugCategory = findPreference(getString(
@@ -147,116 +128,36 @@
         }
 
         @Override
-        public boolean onPreferenceTreeClick (PreferenceScreen preferenceScreen,
-                Preference preference) {
-            if (preference.getKey() ==  mSmsDisabledPrefKey ||
-                    preference.getKey() == mSmsEnabledPrefKey) {
-                mIsSmsPreferenceClicked = true;
+        public boolean onPreferenceTreeClick(Preference preference) {
+            if (preference.getKey() == mNotificationsPreferenceKey) {
+                Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
+                intent.putExtra(Settings.EXTRA_APP_PACKAGE, getContext().getPackageName());
+                startActivity(intent);
+                return true;
+            } if (preference.getKey() == mSmsEnabledPrefKey) {
+                Intent intent = new Intent("android.intent.action.MANAGE_DEFAULT_APP");
+                intent.putExtra("android.intent.extra.ROLE_NAME", RoleManager.ROLE_SMS);
+                startActivity(intent);
+                return true;
             }
-            return super.onPreferenceTreeClick(preferenceScreen, preference);
-        }
-
-        private void updateSoundSummary(final SharedPreferences sharedPreferences) {
-            // The silent ringtone just returns an empty string
-            String ringtoneName = mRingtonePreference.getContext().getString(
-                    R.string.silent_ringtone);
-
-            String ringtoneString = sharedPreferences.getString(mRingtonePreferenceKey, null);
-
-            // Bootstrap the default setting in the preferences so that we have a valid selection
-            // in the dialog the first time that the user opens it.
-            if (ringtoneString == null) {
-                ringtoneString = Settings.System.DEFAULT_NOTIFICATION_URI.toString();
-                final SharedPreferences.Editor editor = sharedPreferences.edit();
-                editor.putString(mRingtonePreferenceKey, ringtoneString);
-                editor.apply();
-            }
-
-            if (!TextUtils.isEmpty(ringtoneString)) {
-                final Uri ringtoneUri = Uri.parse(ringtoneString);
-                final Ringtone tone = RingtoneManager.getRingtone(mRingtonePreference.getContext(),
-                        ringtoneUri);
-
-                if (tone != null) {
-                    ringtoneName = tone.getTitle(mRingtonePreference.getContext());
-                }
-            }
-
-            mRingtonePreference.setSummary(ringtoneName);
+            return super.onPreferenceTreeClick(preference);
         }
 
         private void updateSmsEnabledPreferences() {
             if (!OsUtil.isAtLeastKLP()) {
-                getPreferenceScreen().removePreference(mSmsDisabledPreference);
                 getPreferenceScreen().removePreference(mSmsEnabledPreference);
             } else {
                 final String defaultSmsAppLabel = getString(R.string.default_sms_app,
                         PhoneUtils.getDefault().getDefaultSmsAppLabel());
-                boolean isSmsEnabledBeforeState;
-                boolean isSmsEnabledCurrentState;
-                if (PhoneUtils.getDefault().isDefaultSmsApp()) {
-                    if (getPreferenceScreen().findPreference(mSmsEnabledPrefKey) == null) {
-                        getPreferenceScreen().addPreference(mSmsEnabledPreference);
-                        isSmsEnabledBeforeState = false;
-                    } else {
-                        isSmsEnabledBeforeState = true;
-                    }
-                    isSmsEnabledCurrentState = true;
-                    getPreferenceScreen().removePreference(mSmsDisabledPreference);
-                    mSmsEnabledPreference.setSummary(defaultSmsAppLabel);
-                } else {
-                    if (getPreferenceScreen().findPreference(mSmsDisabledPrefKey) == null) {
-                        getPreferenceScreen().addPreference(mSmsDisabledPreference);
-                        isSmsEnabledBeforeState = true;
-                    } else {
-                        isSmsEnabledBeforeState = false;
-                    }
-                    isSmsEnabledCurrentState = false;
-                    getPreferenceScreen().removePreference(mSmsEnabledPreference);
-                    mSmsDisabledPreference.setSummary(defaultSmsAppLabel);
-                }
-                updateNotificationsPreferences();
+                boolean isSmsEnabledCurrentState = PhoneUtils.getDefault().isDefaultSmsApp();
+                mSmsEnabledPreference.setSummary(isSmsEnabledCurrentState ? getString(R.string.value_yes) : getString(R.string.value_no));
             }
-            mIsSmsPreferenceClicked = false;
-        }
-
-        private void updateNotificationsPreferences() {
-            final boolean canNotify = !OsUtil.isAtLeastKLP()
-                    || PhoneUtils.getDefault().isDefaultSmsApp();
-            mNotificationsEnabledPreference.setEnabled(canNotify);
-        }
-
-        @Override
-        public void onStart() {
-            super.onStart();
-            // We do this on start rather than on resume because the sound picker is in a
-            // separate activity.
-            getPreferenceScreen().getSharedPreferences()
-                    .registerOnSharedPreferenceChangeListener(this);
         }
 
         @Override
         public void onResume() {
             super.onResume();
             updateSmsEnabledPreferences();
-            updateNotificationsPreferences();
-        }
-
-        @Override
-        public void onSharedPreferenceChanged(final SharedPreferences sharedPreferences,
-                final String key) {
-            if (key.equals(mNotificationsEnabledPreferenceKey)) {
-                updateNotificationsPreferences();
-            } else if (key.equals(mRingtonePreferenceKey)) {
-                updateSoundSummary(sharedPreferences);
-            }
-        }
-
-        @Override
-        public void onStop() {
-            super.onStop();
-            getPreferenceScreen().getSharedPreferences()
-                    .unregisterOnSharedPreferenceChangeListener(this);
         }
     }
 }
diff --git a/src/com/android/messaging/ui/appsettings/GroupMmsSettingDialog.java b/src/com/android/messaging/ui/appsettings/GroupMmsSettingDialog.java
index 739d2dc..7db5fb8 100644
--- a/src/com/android/messaging/ui/appsettings/GroupMmsSettingDialog.java
+++ b/src/com/android/messaging/ui/appsettings/GroupMmsSettingDialog.java
@@ -48,7 +48,7 @@
 
     private void show() {
         Assert.isNull(mDialog);
-        mDialog = new AlertDialog.Builder(mContext)
+        mDialog = new AlertDialog.Builder(mContext, R.style.BugleThemeDialog)
                 .setView(createView())
                 .setTitle(R.string.group_mms_pref_title)
                 .setNegativeButton(android.R.string.cancel, null)
diff --git a/src/com/android/messaging/ui/appsettings/PerSubscriptionSettingsActivity.java b/src/com/android/messaging/ui/appsettings/PerSubscriptionSettingsActivity.java
index c2fd473..03b0f6e 100644
--- a/src/com/android/messaging/ui/appsettings/PerSubscriptionSettingsActivity.java
+++ b/src/com/android/messaging/ui/appsettings/PerSubscriptionSettingsActivity.java
@@ -23,16 +23,21 @@
 import android.content.SharedPreferences.OnSharedPreferenceChangeListener;
 import android.content.pm.PackageManager;
 import android.os.Bundle;
-import android.preference.Preference;
-import android.preference.Preference.OnPreferenceClickListener;
-import android.preference.PreferenceCategory;
-import android.preference.PreferenceFragment;
-import android.preference.PreferenceScreen;
+import android.text.InputType;
 import android.text.TextUtils;
+import android.util.Log;
 import android.view.MenuItem;
+import android.widget.EditText;
 
+import androidx.annotation.NonNull;
 import androidx.appcompat.mms.MmsManager;
 import androidx.core.app.NavUtils;
+import androidx.preference.EditTextPreference;
+import androidx.preference.Preference;
+import androidx.preference.Preference.OnPreferenceClickListener;
+import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceFragmentCompat;
+import androidx.preference.PreferenceScreen;
 
 import com.android.messaging.Factory;
 import com.android.messaging.R;
@@ -61,11 +66,8 @@
         } else {
             // This will fall back to the default title, i.e. "Messaging settings," so No-op.
         }
-
-        final FragmentTransaction ft = getFragmentManager().beginTransaction();
-        final PerSubscriptionSettingsFragment fragment = new PerSubscriptionSettingsFragment();
-        ft.replace(android.R.id.content, fragment);
-        ft.commit();
+        getWindow().getDecorView().setBackgroundColor(getColor(R.color.contextual_action_bar_background_color));
+        getSupportFragmentManager().beginTransaction().replace(android.R.id.content, new PerSubscriptionSettingsFragment()).commit();
     }
 
     @Override
@@ -78,7 +80,7 @@
         return super.onOptionsItemSelected(item);
     }
 
-    public static class PerSubscriptionSettingsFragment extends PreferenceFragment
+    public static class PerSubscriptionSettingsFragment extends PreferenceFragmentCompat
             implements OnSharedPreferenceChangeListener {
         private PhoneNumberPreference mPhoneNumberPreference;
         private Preference mGroupMmsPreference;
@@ -91,8 +93,7 @@
         }
 
         @Override
-        public void onCreate(final Bundle savedInstanceState) {
-            super.onCreate(savedInstanceState);
+        public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
 
             // Get sub id from launch intent
             final Intent intent = getActivity().getIntent();
@@ -113,6 +114,7 @@
 
             mPhoneNumberPreference.setDefaultPhoneNumber(
                     PhoneUtils.get(mSubId).getCanonicalForSelf(false/*allowOverride*/), mSubId);
+            mPhoneNumberPreference.updateSummary();
 
             mGroupMmsPrefKey = getString(R.string.group_mms_pref_key);
             mGroupMmsPreference = findPreference(mGroupMmsPrefKey);
diff --git a/src/com/android/messaging/ui/appsettings/PhoneNumberPreference.java b/src/com/android/messaging/ui/appsettings/PhoneNumberPreference.java
index 42ef606..82af8fa 100644
--- a/src/com/android/messaging/ui/appsettings/PhoneNumberPreference.java
+++ b/src/com/android/messaging/ui/appsettings/PhoneNumberPreference.java
@@ -17,13 +17,20 @@
 package com.android.messaging.ui.appsettings;
 
 import android.content.Context;
-import android.preference.EditTextPreference;
-import androidx.core.text.BidiFormatter;
-import androidx.core.text.TextDirectionHeuristicsCompat;
 import android.text.InputType;
 import android.text.TextUtils;
 import android.util.AttributeSet;
+import android.util.Log;
+import android.view.ContextThemeWrapper;
 import android.view.View;
+import android.widget.EditText;
+
+import androidx.annotation.NonNull;
+import androidx.preference.EditTextPreference;
+import androidx.preference.Preference;
+import androidx.preference.PreferenceViewHolder;
+import androidx.core.text.BidiFormatter;
+import androidx.core.text.TextDirectionHeuristicsCompat;
 
 import com.android.messaging.R;
 import com.android.messaging.util.PhoneUtils;
@@ -38,12 +45,27 @@
  */
 public class PhoneNumberPreference extends EditTextPreference {
 
-    private String mDefaultPhoneNumber;
+    private String mDefaultPhoneNumber = "";
     private int mSubId;
 
-    public PhoneNumberPreference(final Context context, final AttributeSet attrs) {
+    public PhoneNumberPreference(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+        init();
+    }
+
+    public PhoneNumberPreference(Context context, AttributeSet attrs, int defStyleAttr) {
+        super(context, attrs, defStyleAttr);
+        init();
+    }
+
+    public PhoneNumberPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
-        mDefaultPhoneNumber = "";
+        init();
+    }
+
+    public PhoneNumberPreference(Context context) {
+        super(context);
+        init();
     }
 
     public void setDefaultPhoneNumber(final String phoneNumber, final int subscriptionId) {
@@ -51,13 +73,19 @@
         mSubId = subscriptionId;
     }
 
-    @Override
-    protected void onBindView(final View view) {
-        // Show the preference value if it's set, or the default number if not.
-        // If we don't have a default, fall back to a static string (e.g. Unknown).
+    private void init() {
+        setOnBindEditTextListener(new EditTextPreference.OnBindEditTextListener() {
+            @Override
+            public void onBindEditText(@NonNull EditText editText) {
+                editText.setText(getSummary());
+                editText.setInputType(InputType.TYPE_CLASS_PHONE);
+            }
+        });
+    }
+    public void updateSummary() {
         String value = getText();
         if (TextUtils.isEmpty(value)) {
-          value = mDefaultPhoneNumber;
+            value = mDefaultPhoneNumber;
         }
         final String displayValue = (!TextUtils.isEmpty(value))
                 ? PhoneUtils.get(mSubId).formatForDisplay(value)
@@ -65,52 +93,24 @@
         final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
         final String phoneNumber = bidiFormatter.unicodeWrap
                         (displayValue, TextDirectionHeuristicsCompat.LTR);
-        // Set the value as the summary and let the superclass populate the views
         setSummary(phoneNumber);
-        super.onBindView(view);
     }
 
     @Override
-    protected void onBindDialogView(final View view) {
-        super.onBindDialogView(view);
-
-        final String value = getText();
-
-        // If the preference is empty, populate the EditText with the default number instead.
-        if (TextUtils.isEmpty(value) && !TextUtils.isEmpty(mDefaultPhoneNumber)) {
-            final BidiFormatter bidiFormatter = BidiFormatter.getInstance();
-            final String phoneNumber = bidiFormatter.unicodeWrap
-                (PhoneUtils.get(mSubId).getCanonicalBySystemLocale(mDefaultPhoneNumber),
-                            TextDirectionHeuristicsCompat.LTR);
-            getEditText().setText(phoneNumber);
-        }
-        getEditText().setInputType(InputType.TYPE_CLASS_PHONE);
-    }
-
-    @Override
-    protected void onDialogClosed(final boolean positiveResult) {
-        if (positiveResult && mDefaultPhoneNumber != null) {
-            final String value = getEditText().getText().toString();
+    public void setText(final String text) {
+        String textValue = text;
+        if (mDefaultPhoneNumber != null) {
             final PhoneUtils phoneUtils = PhoneUtils.get(mSubId);
-            final String phoneNumber = phoneUtils.getCanonicalBySystemLocale(value);
+            final String phoneNumber = phoneUtils.getCanonicalBySystemLocale(textValue);
             final String defaultPhoneNumber = phoneUtils.getCanonicalBySystemLocale(
                     mDefaultPhoneNumber);
 
             // If the new value is the default, clear the preference.
             if (phoneNumber.equals(defaultPhoneNumber)) {
-                setText("");
-                return;
+                textValue = "";
             }
         }
-        super.onDialogClosed(positiveResult);
-    }
-
-    @Override
-    public void setText(final String text) {
-        super.setText(text);
-
-        // EditTextPreference doesn't show the value on the preference view, but we do.
-        // We thus need to force a rebind of the view when a new value is set.
-        notifyChanged();
+        super.setText(textValue);
+        updateSummary();
     }
 }
diff --git a/src/com/android/messaging/ui/appsettings/SettingsActivity.java b/src/com/android/messaging/ui/appsettings/SettingsActivity.java
index dc16d0a..2744210 100644
--- a/src/com/android/messaging/ui/appsettings/SettingsActivity.java
+++ b/src/com/android/messaging/ui/appsettings/SettingsActivity.java
@@ -57,6 +57,7 @@
     protected void onCreate(final Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+        getWindow().getDecorView().setBackgroundColor(getColor(R.color.contextual_action_bar_background_color));
 
         // Directly open the detailed settings page as the top-level settings activity if this is
         // not a multi-SIM device.
diff --git a/src/com/android/messaging/ui/contact/AddContactsConfirmationDialog.java b/src/com/android/messaging/ui/contact/AddContactsConfirmationDialog.java
index 9c1393d..45cc97f 100644
--- a/src/com/android/messaging/ui/contact/AddContactsConfirmationDialog.java
+++ b/src/com/android/messaging/ui/contact/AddContactsConfirmationDialog.java
@@ -45,7 +45,8 @@
     public void show() {
         final int confirmAddContactStringId = R.string.add_contact_confirmation;
         final int cancelStringId = android.R.string.cancel;
-        final AlertDialog alertDialog = new AlertDialog.Builder(mContext)
+        final AlertDialog alertDialog = new AlertDialog.Builder(mContext,
+                 R.style.BugleThemeDialog)
         .setTitle(R.string.add_contact_confirmation_dialog_title)
         .setView(createBodyView())
         .setPositiveButton(confirmAddContactStringId, this)
diff --git a/src/com/android/messaging/ui/conversation/ConversationFragment.java b/src/com/android/messaging/ui/conversation/ConversationFragment.java
index 6eb7089..fd49c69 100644
--- a/src/com/android/messaging/ui/conversation/ConversationFragment.java
+++ b/src/com/android/messaging/ui/conversation/ConversationFragment.java
@@ -820,7 +820,7 @@
 
             case R.id.action_delete:
                 if (isReadyForAction()) {
-                    new AlertDialog.Builder(getActivity())
+                    new AlertDialog.Builder(getActivity(), R.style.BugleThemeDialog)
                             .setTitle(getResources().getQuantityString(
                                     R.plurals.delete_conversations_confirmation_dialog_title, 1))
                             .setPositiveButton(R.string.delete_conversation_confirmation_button,
@@ -1143,7 +1143,8 @@
 
     void deleteMessage(final String messageId) {
         if (isReadyForAction()) {
-            final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity())
+            final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), 
+                    R.style.BugleThemeDialog)
                     .setTitle(R.string.delete_message_confirmation_dialog_title)
                     .setMessage(R.string.delete_message_confirmation_dialog_text)
                     .setPositiveButton(R.string.delete_message_confirmation_button,
@@ -1504,7 +1505,7 @@
             final ComposeMessageView composeMessageView, final String conversationId,
             final Activity activity, final boolean tooManyVideos) {
         final AlertDialog.Builder builder =
-                new AlertDialog.Builder(activity)
+                new AlertDialog.Builder(activity, R.style.BugleThemeDialog)
                     .setTitle(R.string.mms_attachment_limit_reached);
 
         if (sending) {
diff --git a/src/com/android/messaging/ui/conversation/EnterSelfPhoneNumberDialog.java b/src/com/android/messaging/ui/conversation/EnterSelfPhoneNumberDialog.java
index e3ad601..7614bc5 100644
--- a/src/com/android/messaging/ui/conversation/EnterSelfPhoneNumberDialog.java
+++ b/src/com/android/messaging/ui/conversation/EnterSelfPhoneNumberDialog.java
@@ -49,7 +49,8 @@
         final LayoutInflater inflater = LayoutInflater.from(context);
         mEditText = (EditText) inflater.inflate(R.layout.enter_phone_number_view, null, false);
 
-        final AlertDialog.Builder builder = new AlertDialog.Builder(context);
+        final AlertDialog.Builder builder = new AlertDialog.Builder(context,
+                R.style.BugleThemeDialog);
         builder.setTitle(R.string.enter_phone_number_title)
                 .setMessage(R.string.enter_phone_number_text)
                 .setView(mEditText)
diff --git a/src/com/android/messaging/ui/conversation/MessageDetailsDialog.java b/src/com/android/messaging/ui/conversation/MessageDetailsDialog.java
index 89b9148..4a5369d 100644
--- a/src/com/android/messaging/ui/conversation/MessageDetailsDialog.java
+++ b/src/com/android/messaging/ui/conversation/MessageDetailsDialog.java
@@ -86,7 +86,7 @@
 
     private static void showDialog(final Context context, String messageDetails) {
         if (!TextUtils.isEmpty(messageDetails)) {
-            new AlertDialog.Builder(context)
+            new AlertDialog.Builder(context, R.style.BugleThemeDialog)
                     .setTitle(R.string.message_details_title)
                     .setMessage(messageDetails)
                     .setCancelable(true)
diff --git a/src/com/android/messaging/ui/conversationlist/AbstractConversationListActivity.java b/src/com/android/messaging/ui/conversationlist/AbstractConversationListActivity.java
index a2b0bdf..f2dde26 100644
--- a/src/com/android/messaging/ui/conversationlist/AbstractConversationListActivity.java
+++ b/src/com/android/messaging/ui/conversationlist/AbstractConversationListActivity.java
@@ -30,7 +30,6 @@
 import com.android.messaging.R;
 import com.android.messaging.datamodel.action.DeleteConversationAction;
 import com.android.messaging.datamodel.action.UpdateConversationArchiveStatusAction;
-import com.android.messaging.datamodel.action.UpdateConversationOptionsAction;
 import com.android.messaging.datamodel.action.UpdateDestinationBlockedAction;
 import com.android.messaging.datamodel.data.ConversationListData;
 import com.android.messaging.datamodel.data.ConversationListItemData;
@@ -133,7 +132,7 @@
             return;
         }
 
-        new AlertDialog.Builder(this)
+        new AlertDialog.Builder(this, R.style.BugleThemeDialog)
                 .setTitle(getResources().getQuantityString(
                         R.plurals.delete_conversations_confirmation_dialog_title,
                         conversations.size()))
@@ -191,23 +190,6 @@
     }
 
     @Override
-    public void onActionBarNotification(final Iterable<SelectedConversation> conversations,
-            final boolean isNotificationOn) {
-        for (final SelectedConversation conversation : conversations) {
-            UpdateConversationOptionsAction.enableConversationNotifications(
-                    conversation.conversationId, isNotificationOn);
-        }
-
-        final int textId = isNotificationOn ?
-                R.string.notification_on_toast_message : R.string.notification_off_toast_message;
-        final String message = getResources().getString(textId, 1);
-        UiUtils.showSnackBar(this, findViewById(android.R.id.list), message,
-            null /* undoRunnable */,
-            SnackBar.Action.SNACK_BAR_UNDO, mConversationListFragment.getSnackBarInteractions());
-        exitMultiSelectState();
-    }
-
-    @Override
     public void onActionBarAddContact(final SelectedConversation conversation) {
         final Uri avatarUri;
         if (conversation.icon != null) {
@@ -224,7 +206,7 @@
     @Override
     public void onActionBarBlock(final SelectedConversation conversation) {
         final Resources res = getResources();
-        new AlertDialog.Builder(this)
+        new AlertDialog.Builder(this, R.style.BugleThemeDialog)
                 .setTitle(res.getString(R.string.block_confirmation_title,
                         conversation.otherParticipantNormalizedDestination))
                 .setMessage(res.getString(R.string.block_confirmation_message))
diff --git a/src/com/android/messaging/ui/conversationlist/ArchivedConversationListActivity.java b/src/com/android/messaging/ui/conversationlist/ArchivedConversationListActivity.java
index 342c970..baff89c 100644
--- a/src/com/android/messaging/ui/conversationlist/ArchivedConversationListActivity.java
+++ b/src/com/android/messaging/ui/conversationlist/ArchivedConversationListActivity.java
@@ -42,7 +42,7 @@
         actionBar.setDisplayHomeAsUpEnabled(true);
         actionBar.setBackgroundDrawable(new ColorDrawable(
                 getResources().getColor(
-                        R.color.archived_conversation_action_bar_background_color_dark)));
+                        R.color.archived_conversation_action_bar_background_color)));
         actionBar.show();
         super.updateActionBar(actionBar);
     }
diff --git a/src/com/android/messaging/ui/conversationlist/ConversationListActivity.java b/src/com/android/messaging/ui/conversationlist/ConversationListActivity.java
index 636b0f5..4d83f12 100644
--- a/src/com/android/messaging/ui/conversationlist/ConversationListActivity.java
+++ b/src/com/android/messaging/ui/conversationlist/ConversationListActivity.java
@@ -31,6 +31,7 @@
     @Override
     protected void onCreate(final Bundle savedInstanceState) {
         Trace.beginSection("ConversationListActivity.onCreate");
+        setTheme(R.style.BugleTheme_ConversationListActivity);
         super.onCreate(savedInstanceState);
         setContentView(R.layout.conversation_list_activity);
         Trace.endSection();
diff --git a/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java b/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java
index b22ccfc..5157193 100644
--- a/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java
+++ b/src/com/android/messaging/ui/conversationlist/ConversationListItemView.java
@@ -58,6 +58,7 @@
 import com.android.messaging.util.Typefaces;
 import com.android.messaging.util.UiUtils;
 import com.android.messaging.util.UriUtil;
+import org.android.messaging.util.PrefsUtils;
 
 import java.util.List;
 
@@ -75,6 +76,8 @@
     private static String sPlusOneString;
     private static String sPlusNString;
 
+    private static final int SWIPE_DIRECTION_RIGHT = 2;
+
     public interface HostInterface {
         boolean isConversationSelected(final String conversationId);
         void onConversationClicked(final ConversationListItemData conversationListItemData,
@@ -124,7 +127,6 @@
     private TextView mTimestampTextView;
     private ContactIconView mContactIconView;
     private ImageView mContactCheckmarkView;
-    private ImageView mNotificationBellView;
     private ImageView mFailedStatusIconView;
     private ImageView mCrossSwipeArchiveLeftImageView;
     private ImageView mCrossSwipeArchiveRightImageView;
@@ -150,7 +152,6 @@
         mTimestampTextView = (TextView) findViewById(R.id.conversation_timestamp);
         mContactIconView = (ContactIconView) findViewById(R.id.conversation_icon);
         mContactCheckmarkView = (ImageView) findViewById(R.id.conversation_checkmark);
-        mNotificationBellView = (ImageView) findViewById(R.id.conversation_notification_bell);
         mFailedStatusIconView = (ImageView) findViewById(R.id.conversation_failed_status_icon);
         mCrossSwipeArchiveLeftImageView = (ImageView) findViewById(R.id.crossSwipeArchiveIconLeft);
         mCrossSwipeArchiveRightImageView =
@@ -500,8 +501,17 @@
         mAudioAttachmentView.setOnLongClickListener(this);
         mAudioAttachmentView.setVisibility(audioPreviewVisiblity);
 
-        final int notificationBellVisiblity = mData.getNotificationEnabled() ? GONE : VISIBLE;
-        mNotificationBellView.setVisibility(notificationBellVisiblity);
+        if (PrefsUtils.isSwipeRightToDeleteEnabled()) {
+            mCrossSwipeArchiveLeftImageView.setImageDrawable(getResources()
+                    .getDrawable(R.drawable.ic_delete_small_dark));
+            mCrossSwipeArchiveRightImageView.setImageDrawable(getResources()
+                    .getDrawable(R.drawable.ic_archive_small_dark));
+        } else {
+            mCrossSwipeArchiveLeftImageView.setImageDrawable(getResources()
+                    .getDrawable(R.drawable.ic_archive_small_dark));
+            mCrossSwipeArchiveRightImageView.setImageDrawable(getResources()
+                    .getDrawable(R.drawable.ic_archive_small_dark));
+        }
     }
 
     public boolean isSwipeAnimatable() {
@@ -531,14 +541,20 @@
                 mCrossSwipeArchiveLeftImageView.setVisibility(GONE);
                 mCrossSwipeArchiveRightImageView.setVisibility(VISIBLE);
             }
-            mSwipeableContainer.setBackgroundResource(R.drawable.swipe_shadow_drag);
+            mSwipeableContainer.setBackgroundResource(R.drawable.swipe_shadow_drag_new);
         }
     }
 
-    public void onSwipeComplete() {
+    public void onSwipeComplete(int swipeDirection) {
         final String conversationId = mData.getConversationId();
+        if (PrefsUtils.isSwipeRightToDeleteEnabled()
+                && swipeDirection == ConversationListSwipeHelper.SWIPE_DIRECTION_RIGHT) {
+            mData.deleteConversation();
+            UiUtils.showSnackBar(getContext(), getRootView(),
+                    getResources().getString(R.string.conversation_deleted));
+            return;
+        }
         UpdateConversationArchiveStatusAction.archiveConversation(conversationId);
-
         final Runnable undoRunnable = new Runnable() {
             @Override
             public void run() {
diff --git a/src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java b/src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java
index e5859a6..8b8ed0c 100644
--- a/src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java
+++ b/src/com/android/messaging/ui/conversationlist/ConversationListSwipeHelper.java
@@ -44,9 +44,9 @@
     private static final float PERCENTAGE_OF_WIDTH_TO_DISMISS = 0.4f;
     private static final float FLING_PERCENTAGE_OF_WIDTH_TO_DISMISS = 0.05f;
 
-    private static final int SWIPE_DIRECTION_NONE = 0;
-    private static final int SWIPE_DIRECTION_LEFT = 1;
-    private static final int SWIPE_DIRECTION_RIGHT = 2;
+    public static final int SWIPE_DIRECTION_NONE = 0;
+    public static final int SWIPE_DIRECTION_LEFT = 1;
+    public static final int SWIPE_DIRECTION_RIGHT = 2;
 
     private final RecyclerView mRecyclerView;
     private final long mDefaultRestoreAnimationDuration;
@@ -269,7 +269,7 @@
     private void onSwipeGestureEnd(final ConversationListItemView itemView,
             final int swipeDirection) {
         if (swipeDirection == SWIPE_DIRECTION_RIGHT || swipeDirection == SWIPE_DIRECTION_LEFT) {
-            itemView.onSwipeComplete();
+            itemView.onSwipeComplete(swipeDirection);
         }
 
         // Balances out onSwipeGestureStart.
diff --git a/src/com/android/messaging/ui/conversationlist/MultiSelectActionModeCallback.java b/src/com/android/messaging/ui/conversationlist/MultiSelectActionModeCallback.java
index 64d1436..96c962e 100644
--- a/src/com/android/messaging/ui/conversationlist/MultiSelectActionModeCallback.java
+++ b/src/com/android/messaging/ui/conversationlist/MultiSelectActionModeCallback.java
@@ -37,8 +37,6 @@
         void onActionBarDelete(Collection<SelectedConversation> conversations);
         void onActionBarArchive(Iterable<SelectedConversation> conversations,
                 boolean isToArchive);
-        void onActionBarNotification(Iterable<SelectedConversation> conversations,
-                boolean isNotificationOn);
         void onActionBarAddContact(final SelectedConversation conversation);
         void onActionBarBlock(final SelectedConversation conversation);
         void onActionBarHome();
@@ -52,7 +50,6 @@
         public final CharSequence participantLookupKey;
         public final boolean isGroup;
         public final boolean isArchived;
-        public final boolean notificationEnabled;
         public SelectedConversation(ConversationListItemData data) {
             conversationId = data.getConversationId();
             timestamp = data.getTimestamp();
@@ -61,7 +58,6 @@
             participantLookupKey = data.getParticipantLookupKey();
             isGroup = data.getIsGroup();
             isArchived = data.getIsArchived();
-            notificationEnabled = data.getNotificationEnabled();
         }
     }
 
@@ -72,8 +68,6 @@
     private MenuItem mUnarchiveMenuItem;
     private MenuItem mAddContactMenuItem;
     private MenuItem mBlockMenuItem;
-    private MenuItem mNotificationOnMenuItem;
-    private MenuItem mNotificationOffMenuItem;
     private boolean mHasInflated;
 
     public MultiSelectActionModeCallback(final Listener listener) {
@@ -89,8 +83,6 @@
         mUnarchiveMenuItem = menu.findItem(R.id.action_unarchive);
         mAddContactMenuItem = menu.findItem(R.id.action_add_contact);
         mBlockMenuItem = menu.findItem(R.id.action_block);
-        mNotificationOffMenuItem = menu.findItem(R.id.action_notification_off);
-        mNotificationOnMenuItem = menu.findItem(R.id.action_notification_on);
         mHasInflated = true;
         updateActionIconsVisiblity();
         return true;
@@ -113,12 +105,6 @@
             case R.id.action_unarchive:
                 mListener.onActionBarArchive(mSelectedConversations.values(), false);
                 return true;
-            case R.id.action_notification_off:
-                mListener.onActionBarNotification(mSelectedConversations.values(), false);
-                return true;
-            case R.id.action_notification_on:
-                mListener.onActionBarNotification(mSelectedConversations.values(), true);
-                return true;
             case R.id.action_add_contact:
                 Assert.isTrue(mSelectedConversations.size() == 1);
                 mListener.onActionBarAddContact(mSelectedConversations.valueAt(0));
@@ -186,16 +172,8 @@
 
         boolean hasCurrentlyArchived = false;
         boolean hasCurrentlyUnarchived = false;
-        boolean hasCurrentlyOnNotification = false;
-        boolean hasCurrentlyOffNotification = false;
         final Iterable<SelectedConversation> conversations = mSelectedConversations.values();
         for (final SelectedConversation conversation : conversations) {
-            if (conversation.notificationEnabled) {
-                hasCurrentlyOnNotification = true;
-            } else {
-                hasCurrentlyOffNotification = true;
-            }
-
             if (conversation.isArchived) {
                 hasCurrentlyArchived = true;
             } else {
@@ -203,15 +181,10 @@
             }
 
             // If we found at least one of each example we don't need to keep looping.
-            if (hasCurrentlyOffNotification && hasCurrentlyOnNotification &&
-                    hasCurrentlyArchived && hasCurrentlyUnarchived) {
+            if (hasCurrentlyArchived && hasCurrentlyUnarchived) {
                 break;
             }
         }
-        // If we have notification off conversations we show on button, if we have notification on
-        // conversation we show off button. We can show both if we have a mixture.
-        mNotificationOffMenuItem.setVisible(hasCurrentlyOnNotification);
-        mNotificationOnMenuItem.setVisible(hasCurrentlyOffNotification);
 
         mArchiveMenuItem.setVisible(hasCurrentlyUnarchived);
         mUnarchiveMenuItem.setVisible(hasCurrentlyArchived);
diff --git a/src/com/android/messaging/ui/conversationlist/ShareIntentFragment.java b/src/com/android/messaging/ui/conversationlist/ShareIntentFragment.java
index beafb53..527cca6 100644
--- a/src/com/android/messaging/ui/conversationlist/ShareIntentFragment.java
+++ b/src/com/android/messaging/ui/conversationlist/ShareIntentFragment.java
@@ -85,7 +85,8 @@
         mRecyclerView.setLayoutManager(manager);
         mRecyclerView.setHasFixedSize(true);
         mRecyclerView.setAdapter(mAdapter);
-        final Builder dialogBuilder = new AlertDialog.Builder(activity)
+        final Builder dialogBuilder = new AlertDialog.Builder(activity,
+                R.style.BugleThemeDialog)
                 .setView(view)
                 .setTitle(R.string.share_intent_activity_label);
 
diff --git a/src/com/android/messaging/ui/conversationsettings/PeopleAndOptionsFragment.java b/src/com/android/messaging/ui/conversationsettings/PeopleAndOptionsFragment.java
index b86d952..64305fb 100644
--- a/src/com/android/messaging/ui/conversationsettings/PeopleAndOptionsFragment.java
+++ b/src/com/android/messaging/ui/conversationsettings/PeopleAndOptionsFragment.java
@@ -18,12 +18,12 @@
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Fragment;
+import android.app.NotificationManager;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.res.Resources;
 import android.database.Cursor;
-import android.media.RingtoneManager;
 import android.os.Bundle;
 import android.os.Parcelable;
 import android.provider.Settings;
@@ -49,6 +49,7 @@
 import com.android.messaging.ui.PersonItemView;
 import com.android.messaging.ui.UIIntents;
 import com.android.messaging.ui.conversation.ConversationActivity;
+import com.android.messaging.util.NotificationsUtil;
 import com.android.messaging.util.Assert;
 
 import java.util.ArrayList;
@@ -62,11 +63,10 @@
     private ListView mListView;
     private OptionsListAdapter mOptionsListAdapter;
     private PeopleListAdapter mPeopleListAdapter;
+    private List<ParticipantData> mOtherParticipants;
     private final Binding<PeopleAndOptionsData> mBinding =
             BindingBase.createBinding(this);
 
-    private static final int REQUEST_CODE_RINGTONE_PICKER = 1000;
-
     @Override
     public void onCreate(final Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -90,17 +90,6 @@
     }
 
     @Override
-    public void onActivityResult(final int requestCode, final int resultCode, final Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE_RINGTONE_PICKER) {
-            final Parcelable pick = data.getParcelableExtra(
-                    RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
-            final String pickedUri = pick == null ? "" : pick.toString();
-            mBinding.getData().setConversationNotificationSound(mBinding, pickedUri);
-        }
-    }
-
-    @Override
     public void onDestroy() {
         super.onDestroy();
         mBinding.unbind();
@@ -125,30 +114,31 @@
             final List<ParticipantData> participants) {
         mBinding.ensureBound(data);
         mPeopleListAdapter.updateParticipants(participants);
+        mOtherParticipants = participants;
         final ParticipantData otherParticipant = participants.size() == 1 ?
                 participants.get(0) : null;
         mOptionsListAdapter.setOtherParticipant(otherParticipant);
     }
 
     @Override
-    public void onOptionsItemViewClicked(final PeopleOptionsItemData item,
-            final boolean isChecked) {
+    public void onOptionsItemViewClicked(final PeopleOptionsItemData item) {
         switch (item.getItemId()) {
-            case PeopleOptionsItemData.SETTING_NOTIFICATION_ENABLED:
-                mBinding.getData().enableConversationNotifications(mBinding, isChecked);
-                break;
-
-            case PeopleOptionsItemData.SETTING_NOTIFICATION_SOUND_URI:
-                final Intent ringtonePickerIntent = UIIntents.get().getRingtonePickerIntent(
-                        getString(R.string.notification_sound_pref_title),
-                        item.getRingtoneUri(), Settings.System.DEFAULT_NOTIFICATION_URI,
-                        RingtoneManager.TYPE_NOTIFICATION);
-                startActivityForResult(ringtonePickerIntent, REQUEST_CODE_RINGTONE_PICKER);
-                break;
-
-            case PeopleOptionsItemData.SETTING_NOTIFICATION_VIBRATION:
-                mBinding.getData().enableConversationNotificationVibration(mBinding,
-                        isChecked);
+            case PeopleOptionsItemData.SETTING_NOTIFICATION:
+                ArrayList<String> participantsNames = new ArrayList<String>();
+                for (ParticipantData participant : mOtherParticipants) {
+                    participantsNames.add(participant.getDisplayName(true));
+                }
+                NotificationsUtil.createNotificationChannelGroup(getActivity(),
+                        NotificationsUtil.CONVERSATION_GROUP_NAME,
+                        R.string.notification_channel_messages_title);
+                NotificationsUtil.createNotificationChannel(getActivity(),
+                        mBinding.getData().getConversationId(),
+                        String.join(", ", participantsNames),
+                        NotificationManager.IMPORTANCE_DEFAULT,
+                        NotificationsUtil.CONVERSATION_GROUP_NAME);
+                Intent intent = new Intent(Settings.ACTION_APP_NOTIFICATION_SETTINGS);
+                intent.putExtra(Settings.EXTRA_APP_PACKAGE, getContext().getPackageName());
+                startActivity(intent);
                 break;
 
             case PeopleOptionsItemData.SETTING_BLOCKED:
@@ -158,7 +148,7 @@
                 }
                 final Resources res = getResources();
                 final Activity activity = getActivity();
-                new AlertDialog.Builder(activity)
+                new AlertDialog.Builder(activity, R.style.BugleThemeDialog)
                         .setTitle(res.getString(R.string.block_confirmation_title,
                                 item.getOtherParticipant().getDisplayDestination()))
                         .setMessage(res.getString(R.string.block_confirmation_message))
diff --git a/src/com/android/messaging/ui/conversationsettings/PeopleOptionsItemView.java b/src/com/android/messaging/ui/conversationsettings/PeopleOptionsItemView.java
index 5b6f3b0..91fd10c 100644
--- a/src/com/android/messaging/ui/conversationsettings/PeopleOptionsItemView.java
+++ b/src/com/android/messaging/ui/conversationsettings/PeopleOptionsItemView.java
@@ -38,7 +38,7 @@
      * Implemented by the host of this view that handles options click event.
      */
     public interface HostInterface {
-        void onOptionsItemViewClicked(PeopleOptionsItemData item, boolean isChecked);
+        void onOptionsItemViewClicked(PeopleOptionsItemData item);
     }
 
     private TextView mTitle;
@@ -55,12 +55,10 @@
     @Override
     protected void onFinishInflate () {
         mTitle = (TextView) findViewById(R.id.title);
-        mSubtitle = (TextView) findViewById(R.id.subtitle);
-        mSwitch = (SwitchCompat) findViewById(R.id.switch_button);
         setOnClickListener(new OnClickListener() {
             @Override
             public void onClick(final View v) {
-                mHostInterface.onOptionsItemViewClicked(mData, !mData.getChecked());
+                mHostInterface.onOptionsItemViewClicked(mData);
             }
         });
     }
@@ -72,28 +70,5 @@
         mHostInterface = hostInterface;
 
         mTitle.setText(mData.getTitle());
-        final String subtitle = mData.getSubtitle();
-        if (TextUtils.isEmpty(subtitle)) {
-            mSubtitle.setVisibility(GONE);
-        } else {
-            mSubtitle.setVisibility(VISIBLE);
-            mSubtitle.setText(subtitle);
-        }
-
-        if (mData.getCheckable()) {
-            mSwitch.setVisibility(VISIBLE);
-            mSwitch.setChecked(mData.getChecked());
-        } else {
-            mSwitch.setVisibility(GONE);
-        }
-
-        final boolean enabled = mData.getEnabled();
-        if (enabled != isEnabled()) {
-            mTitle.setEnabled(enabled);
-            mSubtitle.setEnabled(enabled);
-            mSwitch.setEnabled(enabled);
-            setAlpha(enabled ? 1.0f : 0.5f);
-            setEnabled(enabled);
-        }
     }
 }
diff --git a/src/com/android/messaging/util/BugleActivityUtil.java b/src/com/android/messaging/util/BugleActivityUtil.java
index 7f722fd..70d1b04 100644
--- a/src/com/android/messaging/util/BugleActivityUtil.java
+++ b/src/com/android/messaging/util/BugleActivityUtil.java
@@ -68,7 +68,7 @@
         }
         UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);
         if (userManager.hasUserRestriction(UserManager.DISALLOW_SMS)) {
-            new AlertDialog.Builder(activity)
+            new AlertDialog.Builder(activity, R.style.BugleThemeDialog)
                     .setMessage(R.string.requires_sms_permissions_message)
                     .setCancelable(false)
                     .setNegativeButton(R.string.requires_sms_permissions_close_button,
diff --git a/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java b/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java
index 6cf2f25..bcb2f5c 100644
--- a/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java
+++ b/src/com/android/messaging/util/ChangeDefaultSmsAppHelper.java
@@ -66,7 +66,7 @@
 
         // Is the default sms app?
         } else if (!isDefaultSmsApp) {
-            mChangeSmsAppSettingRunnable = new ChangeSmsAppSettingRunnable(activity, fragment);
+            mChangeSmsAppSettingRunnable = new ChangeSmsAppSettingRunnable(activity);
             promptToChangeDefaultSmsApp(sending, runAfterMadeDefault,
                     composeView, rootView, activity);
         }
@@ -104,22 +104,16 @@
 
     private class ChangeSmsAppSettingRunnable implements Runnable {
         private final Activity mActivity;
-        private final Fragment mFragment;
 
-        public ChangeSmsAppSettingRunnable(final Activity activity, final Fragment fragment) {
+        public ChangeSmsAppSettingRunnable(final Activity activity) {
             mActivity = activity;
-            mFragment = fragment;
         }
 
         @Override
         public void run() {
             try {
                 final Intent intent = UIIntents.get().getChangeDefaultSmsAppIntent(mActivity);
-                if (mFragment != null) {
-                    mFragment.startActivityForResult(intent, REQUEST_SET_DEFAULT_SMS_APP);
-                } else {
-                    mActivity.startActivityForResult(intent, REQUEST_SET_DEFAULT_SMS_APP);
-                }
+                mActivity.startActivityForResult(intent, REQUEST_SET_DEFAULT_SMS_APP);
             } catch (final ActivityNotFoundException ex) {
                 // We shouldn't get here, but the monkey on JB MR0 can trigger it.
                 LogUtil.w(LogUtil.BUGLE_TAG, "Couldn't find activity:", ex);
@@ -153,5 +147,3 @@
         }
     }
 }
-
-
diff --git a/src/com/android/messaging/util/FileUtil.java b/src/com/android/messaging/util/FileUtil.java
index e7d86f2..71fbb4b 100644
--- a/src/com/android/messaging/util/FileUtil.java
+++ b/src/com/android/messaging/util/FileUtil.java
@@ -20,7 +20,6 @@
 import android.content.Context;
 import android.net.Uri;
 import android.os.Environment;
-import android.os.ParcelFileDescriptor;
 import android.text.TextUtils;
 
 import com.android.messaging.Factory;
@@ -29,8 +28,6 @@
 
 import java.io.File;
 import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.Locale;
@@ -124,10 +121,6 @@
     // We're told it's possible to create world readable hardlinks to other apps private data
     // so we ban all /data file uris.
     public static boolean isInPrivateDir(Uri uri) {
-        return isFileUriInPrivateDir(uri) || isContentUriInPrivateDir(uri);
-    }
-
-    private static boolean isFileUriInPrivateDir(Uri uri) {
         if (!UriUtil.isFileUri(uri)) {
             return false;
         }
@@ -135,24 +128,6 @@
         return FileUtil.isSameOrSubDirectory(Environment.getDataDirectory(), file);
     }
 
-    private static boolean isContentUriInPrivateDir(Uri uri) {
-        if (!uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
-            return false;
-        }
-        try {
-            Context context = Factory.get().getApplicationContext();
-            ParcelFileDescriptor pfd = context.getContentResolver().openFileDescriptor(uri, "r");
-            int fd = pfd.getFd();
-            // Use the file descriptor to find out the read file path through symbolic link.
-            Path fdPath = Paths.get("/proc/self/fd/" + fd);
-            Path filePath = java.nio.file.Files.readSymbolicLink(fdPath);
-            pfd.close();
-            return FileUtil.isSameOrSubDirectory(Environment.getDataDirectory(), filePath.toFile());
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
     /**
      * Checks, whether the child directory is the same as, or a sub-directory of the base
      * directory.
diff --git a/src/com/android/messaging/util/NotificationsUtil.java b/src/com/android/messaging/util/NotificationsUtil.java
new file mode 100644
index 0000000..591f15a
--- /dev/null
+++ b/src/com/android/messaging/util/NotificationsUtil.java
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2019 The LineageOS Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.messaging.util;
+
+import android.app.NotificationChannel;
+import android.app.NotificationChannelGroup;
+import android.app.NotificationManager;
+import android.content.Context;
+import android.os.Build;
+
+public final class NotificationsUtil {
+    public static final String DEFAULT_CHANNEL_ID = "messaging_channel";
+    public static final String CONVERSATION_GROUP_NAME = "conversation_group";
+
+    private NotificationsUtil() {
+    }
+
+    public static void createNotificationChannel(Context context, String id,
+            int titleResId, int priority, String groupId) {
+        String title = context.getString(titleResId);
+        createNotificationChannel(context, id, title, priority, groupId);
+    }
+
+    public static void createNotificationChannel(Context context, String id,
+            String title, int priority, String groupId) {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+            return;
+        }
+
+        NotificationManager manager = context.getSystemService(NotificationManager.class);
+        NotificationChannel existing = manager.getNotificationChannel(id);
+        if (existing != null) {
+            return;
+        }
+
+        NotificationChannel newChannel = new NotificationChannel(id, title, priority);
+        newChannel.enableLights(true);
+        if (groupId != null) {
+            newChannel.setGroup(groupId);
+        }
+        manager.createNotificationChannel(newChannel);
+    }
+
+    public static void deleteNotificationChannel(Context context, String id) {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+            return;
+        }
+
+        NotificationManager manager = context.getSystemService(NotificationManager.class);
+        manager.deleteNotificationChannel(id);
+    }
+
+    public static void createNotificationChannelGroup(Context context, String id,
+            int titleResId) {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+            return;
+        }
+
+        NotificationManager manager = context.getSystemService(NotificationManager.class);
+        NotificationChannelGroup existing = manager.getNotificationChannelGroup(id);
+        if (existing != null) {
+            return;
+        }
+
+        String title = context.getString(titleResId);
+        NotificationChannelGroup newChannelGroup = new NotificationChannelGroup(id, title);
+        manager.createNotificationChannelGroup(newChannelGroup);
+    }
+
+    public static NotificationChannel getNotificationChannel(Context context, String id) {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+            return null;
+        }
+
+        NotificationManager manager = context.getSystemService(NotificationManager.class);
+        return manager.getNotificationChannel(id);
+    }
+
+    public static NotificationChannelGroup getNotificationChannelGroup(Context context, String id) {
+        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
+            return null;
+        }
+
+        NotificationManager manager = context.getSystemService(NotificationManager.class);
+        return manager.getNotificationChannelGroup(id);
+    }
+}
diff --git a/src/com/android/messaging/util/PhoneUtils.java b/src/com/android/messaging/util/PhoneUtils.java
index 08889b8..9f0fa8e 100644
--- a/src/com/android/messaging/util/PhoneUtils.java
+++ b/src/com/android/messaging/util/PhoneUtils.java
@@ -16,6 +16,7 @@
 
 package com.android.messaging.util;
 
+import android.app.role.RoleManager;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
@@ -897,8 +898,9 @@
      */
     public boolean isDefaultSmsApp() {
         if (OsUtil.isAtLeastKLP()) {
-            final String configuredApplication = Telephony.Sms.getDefaultSmsPackage(mContext);
-            return  mContext.getPackageName().equals(configuredApplication);
+            RoleManager roleManager = mContext.getSystemService(RoleManager.class);
+            return roleManager.isRoleAvailable(RoleManager.ROLE_SMS)
+                    && roleManager.isRoleHeld(RoleManager.ROLE_SMS);
         }
         return true;
     }
diff --git a/src/com/android/messaging/util/RingtoneUtil.java b/src/com/android/messaging/util/RingtoneUtil.java
deleted file mode 100644
index a7facfb..0000000
--- a/src/com/android/messaging/util/RingtoneUtil.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2015 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.messaging.util;
-
-import android.content.Context;
-import android.net.Uri;
-import android.provider.Settings;
-import android.text.TextUtils;
-
-import com.android.messaging.Factory;
-import com.android.messaging.R;
-
-public class RingtoneUtil {
-    /**
-     * Return a ringtone Uri for the string representation passed in. Use the app
-     * and system defaults as fallbacks
-     * @param ringtoneString is the ringtone to resolve
-     * @return the Uri of the ringtone or the fallback ringtone
-     */
-    public static Uri getNotificationRingtoneUri(String ringtoneString) {
-        if (ringtoneString == null) {
-            // No override specified, fall back to system-wide setting.
-            final BuglePrefs prefs = BuglePrefs.getApplicationPrefs();
-            final Context context = Factory.get().getApplicationContext();
-            final String prefKey = context.getString(R.string.notification_sound_pref_key);
-            ringtoneString = prefs.getString(prefKey, null);
-        }
-
-        if (!TextUtils.isEmpty(ringtoneString)) {
-            // We have set a value, even if it is the default Uri at some point
-            return Uri.parse(ringtoneString);
-        } else if (ringtoneString == null) {
-            // We have no setting specified (== null), so we default to the system default
-            return Settings.System.DEFAULT_NOTIFICATION_URI;
-        } else {
-            // An empty string (== "") here is the result of selecting "None" as the ringtone
-            return null;
-        }
-    }
-}
diff --git a/src/com/android/messaging/util/UiUtils.java b/src/com/android/messaging/util/UiUtils.java
index 6e0c16e..bad8b2d 100644
--- a/src/com/android/messaging/util/UiUtils.java
+++ b/src/com/android/messaging/util/UiUtils.java
@@ -132,6 +132,16 @@
                                         null /* placement */);
     }
 
+    public static void showSnackBar(final Context context, @NonNull final View parentView,
+            final String message) {
+        Assert.notNull(context);
+        Assert.isTrue(!TextUtils.isEmpty(message));
+        SnackBarManager.get()
+            .newBuilder(parentView)
+            .setText(message)
+            .show();
+    }
+
     public static void showSnackBarWithCustomAction(final Context context,
             @NonNull final View parentView,
             @NonNull final String message,
@@ -251,16 +261,7 @@
     }
 
     public static void setStatusBarColor(final Activity activity, final int color) {
-        if (OsUtil.isAtLeastL()) {
-            // To achieve the appearance of an 80% opacity blend against a black background,
-            // each color channel is reduced in value by 20%.
-            final int blendedRed = (int) Math.floor(0.8 * Color.red(color));
-            final int blendedGreen = (int) Math.floor(0.8 * Color.green(color));
-            final int blendedBlue = (int) Math.floor(0.8 * Color.blue(color));
-
-            activity.getWindow().setStatusBarColor(
-                    Color.rgb(blendedRed, blendedGreen, blendedBlue));
-        }
+        activity.getWindow().setStatusBarColor(color);
     }
 
     public static void lockOrientation(final Activity activity) {
diff --git a/src/com/android/messaging/widget/WidgetConversationListService.java b/src/com/android/messaging/widget/WidgetConversationListService.java
index b67bd79..023c56d 100644
--- a/src/com/android/messaging/widget/WidgetConversationListService.java
+++ b/src/com/android/messaging/widget/WidgetConversationListService.java
@@ -120,10 +120,6 @@
                 remoteViews.setTextViewText(R.id.from,
                         boldifyIfUnread(conv.getName(), hasUnreadMessages));
 
-                // Notifications turned off mini-bell icon
-                remoteViews.setViewVisibility(R.id.conversation_notification_bell,
-                        conv.getNotificationEnabled() ? View.GONE : View.VISIBLE);
-
                 // On click intent.
                 final Intent intent = UIIntents.get().getIntentForConversationActivity(mContext,
                         conv.getConversationId(), null /* draft */);
diff --git a/src/org/android/messaging/util/PrefsUtils.java b/src/org/android/messaging/util/PrefsUtils.java
new file mode 100644
index 0000000..95a918d
--- /dev/null
+++ b/src/org/android/messaging/util/PrefsUtils.java
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2016 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.android.messaging.util;
+
+import android.content.Context;
+import com.android.messaging.Factory;
+import com.android.messaging.R;
+import com.android.messaging.util.BuglePrefs;
+
+public class PrefsUtils {
+    private PrefsUtils() {
+        //Don't instantiate
+    }
+
+    /**
+     * Returns whether or not swipe to dismiss in the ConversationListFragment deletes
+     * the conversation rather than archiving it.
+     * @return hopefully true
+     */
+    public static boolean isSwipeRightToDeleteEnabled() {
+        final BuglePrefs prefs = BuglePrefs.getApplicationPrefs();
+        final Context context = Factory.get().getApplicationContext();
+        final String prefKey = context.getString(R.string.swipe_right_deletes_conversation_key);
+        final boolean defaultValue = context.getResources().getBoolean(
+                R.bool.swipe_right_deletes_conversation_default);
+        return prefs.getBoolean(prefKey, defaultValue);
+    }
+}
diff --git a/tests/AndroidManifest.xml b/tests/AndroidManifest.xml
index 07f0d17..0879287 100644
--- a/tests/AndroidManifest.xml
+++ b/tests/AndroidManifest.xml
@@ -17,7 +17,7 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.android.messaging.test" >
 
-    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="24"/>
+    <uses-sdk android:minSdkVersion="16" android:targetSdkVersion="29"/>
 
     <application android:label="Messaging Tests" >
         <uses-library android:name="android.test.runner" />
diff --git a/tests/src/com/android/messaging/datamodel/action/ReadWriteDraftMessageActionTest.java b/tests/src/com/android/messaging/datamodel/action/ReadWriteDraftMessageActionTest.java
index 518a722..459dd7d 100644
--- a/tests/src/com/android/messaging/datamodel/action/ReadWriteDraftMessageActionTest.java
+++ b/tests/src/com/android/messaging/datamodel/action/ReadWriteDraftMessageActionTest.java
@@ -113,7 +113,7 @@
         participants.add(ParticipantData.getFromRawPhoneBySystemLocale(participantNumber));
 
         final String conversationId = BugleDatabaseOperations.getOrCreateConversation(db, threadId,
-                senderBlocked, participants, false, false, null);
+                senderBlocked, participants);
         assertNotNull("No conversation", conversationId);
         return conversationId;
     }
@@ -189,7 +189,7 @@
         participants.add(ParticipantData.getFromRawPhoneBySystemLocale(Long.toString(phoneNumber)));
 
         conversationId = BugleDatabaseOperations.getOrCreateConversation(db, threadId,
-                senderBlocked, participants, false, false, null);
+                senderBlocked, participants);
         assertNotNull("No conversation", conversationId);
 
         final MessageData actual = BugleDatabaseOperations.readDraftMessageData(db, conversationId,