diff --git a/res/drawable/read_receipt_vector.xml b/res/drawable/read_receipt_vector.xml
new file mode 100644
index 0000000000..8184b984ea
--- /dev/null
+++ b/res/drawable/read_receipt_vector.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/res/layout/experience_upgrade_preference_fragment.xml b/res/layout/experience_upgrade_preference_fragment.xml
new file mode 100644
index 0000000000..28669bd0f5
--- /dev/null
+++ b/res/layout/experience_upgrade_preference_fragment.xml
@@ -0,0 +1,66 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 38e9c93340..1183ee8069 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1476,6 +1476,9 @@
Media
Documents
No documents found
+ Read receipts are here
+ Optionally see and share when messages have been read
+ Enable read receipts
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 7f0f82c060..357b869bc3 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -259,4 +259,8 @@
+
+
diff --git a/src/org/thoughtcrime/securesms/ExperienceUpgradeActivity.java b/src/org/thoughtcrime/securesms/ExperienceUpgradeActivity.java
index 2835a060c8..d3c790076c 100644
--- a/src/org/thoughtcrime/securesms/ExperienceUpgradeActivity.java
+++ b/src/org/thoughtcrime/securesms/ExperienceUpgradeActivity.java
@@ -61,7 +61,14 @@ public class ExperienceUpgradeActivity extends BaseActionBarActivity {
R.string.ExperienceUpgradeActivity_signal_profiles_are_here,
R.string.ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal,
R.string.ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal,
- CreateProfileActivity.class);
+ CreateProfileActivity.class),
+ READ_RECEIPTS(299,
+ new IntroPage(0xFF2090EA,
+ ReadReceiptsIntroFragment.newInstance()),
+ R.string.ExperienceUpgradeActivity_signal_profiles_are_here,
+ R.string.ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal,
+ R.string.ExperienceUpgradeActivity_now_you_can_share_a_profile_photo_and_name_with_friends_on_signal,
+ null);
private int version;
private List pages;
diff --git a/src/org/thoughtcrime/securesms/ReadReceiptsIntroFragment.java b/src/org/thoughtcrime/securesms/ReadReceiptsIntroFragment.java
new file mode 100644
index 0000000000..a0d25c5f7e
--- /dev/null
+++ b/src/org/thoughtcrime/securesms/ReadReceiptsIntroFragment.java
@@ -0,0 +1,41 @@
+package org.thoughtcrime.securesms;
+
+
+import android.os.Bundle;
+import android.support.v4.app.Fragment;
+import android.support.v7.widget.SwitchCompat;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.widget.TextView;
+
+import org.thoughtcrime.securesms.util.TextSecurePreferences;
+import org.thoughtcrime.securesms.util.ViewUtil;
+
+public class ReadReceiptsIntroFragment extends Fragment {
+
+ public static ReadReceiptsIntroFragment newInstance() {
+ ReadReceiptsIntroFragment fragment = new ReadReceiptsIntroFragment();
+ Bundle args = new Bundle();
+ fragment.setArguments(args);
+ return fragment;
+ }
+
+ public ReadReceiptsIntroFragment() {}
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ }
+
+ @Override
+ public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
+ View v = inflater.inflate(R.layout.experience_upgrade_preference_fragment, container, false);
+ SwitchCompat preference = ViewUtil.findById(v, R.id.preference);
+
+ preference.setChecked(TextSecurePreferences.isReadReceiptsEnabled(getContext()));
+ preference.setOnCheckedChangeListener((buttonView, isChecked) -> TextSecurePreferences.setReadReceiptsEnabled(getContext(), isChecked));
+
+ return v;
+ }
+}