diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/OnboardingValues.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/OnboardingValues.java
index 3c0eece3cf..1a5557d189 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/OnboardingValues.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/OnboardingValues.java
@@ -17,6 +17,7 @@ public final class OnboardingValues extends SignalStoreValues {
private static final String SHOW_INVITE_FRIENDS = "onboarding.invite_friends";
private static final String SHOW_SMS = "onboarding.sms";
private static final String SHOW_APPEARANCE = "onboarding.appearance";
+ private static final String SHOW_ADD_PHOTO = "onboarding.add_photo";
OnboardingValues(@NonNull KeyValueStore store) {
super(store);
@@ -28,6 +29,7 @@ public final class OnboardingValues extends SignalStoreValues {
putBoolean(SHOW_INVITE_FRIENDS, true);
putBoolean(SHOW_SMS, true);
putBoolean(SHOW_APPEARANCE, true);
+ putBoolean(SHOW_ADD_PHOTO, true);
}
@Override
@@ -40,13 +42,15 @@ public final class OnboardingValues extends SignalStoreValues {
setShowInviteFriends(false);
setShowSms(false);
setShowAppearance(false);
+ setShowAddPhoto(false);
}
public boolean hasOnboarding(@NonNull Context context) {
return shouldShowNewGroup() ||
shouldShowInviteFriends() ||
shouldShowSms(context) ||
- shouldShowAppearance();
+ shouldShowAppearance() ||
+ shouldShowAddPhoto();
}
public void setShowNewGroup(boolean value) {
@@ -80,4 +84,12 @@ public final class OnboardingValues extends SignalStoreValues {
public boolean shouldShowAppearance() {
return getBoolean(SHOW_APPEARANCE, false);
}
+
+ public void setShowAddPhoto(boolean value) {
+ putBoolean(SHOW_ADD_PHOTO, value);
+ }
+
+ public boolean shouldShowAddPhoto(){
+ return getBoolean(SHOW_ADD_PHOTO, false);
+ }
}
diff --git a/app/src/main/java/org/thoughtcrime/securesms/megaphone/OnboardingMegaphoneView.java b/app/src/main/java/org/thoughtcrime/securesms/megaphone/OnboardingMegaphoneView.java
index 7c06c736ec..d1cfb2e8d6 100644
--- a/app/src/main/java/org/thoughtcrime/securesms/megaphone/OnboardingMegaphoneView.java
+++ b/app/src/main/java/org/thoughtcrime/securesms/megaphone/OnboardingMegaphoneView.java
@@ -19,10 +19,10 @@ import androidx.recyclerview.widget.RecyclerView;
import org.signal.core.util.logging.Log;
import org.thoughtcrime.securesms.InviteActivity;
import org.thoughtcrime.securesms.R;
-import org.thoughtcrime.securesms.components.settings.app.AppSettingsActivity;
import org.thoughtcrime.securesms.conversationlist.ConversationListFragment;
import org.thoughtcrime.securesms.groups.ui.creategroup.CreateGroupActivity;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
+import org.thoughtcrime.securesms.profiles.manage.ManageProfileActivity;
import org.thoughtcrime.securesms.util.SmsUtil;
import org.thoughtcrime.securesms.wallpaper.ChatWallpaperActivity;
@@ -66,6 +66,7 @@ public class OnboardingMegaphoneView extends FrameLayout {
private static final int TYPE_INVITE = 1;
private static final int TYPE_SMS = 2;
private static final int TYPE_APPEARANCE = 3;
+ private static final int TYPE_ADD_PHOTO = 4;
private final Context context;
private final MegaphoneActionController controller;
@@ -102,6 +103,7 @@ public class OnboardingMegaphoneView extends FrameLayout {
case TYPE_INVITE: return new InviteCardViewHolder(view);
case TYPE_SMS: return new SmsCardViewHolder(view);
case TYPE_APPEARANCE: return new AppearanceCardViewHolder(view);
+ case TYPE_ADD_PHOTO: return new AddPhotoCardViewHolder(view);
default: throw new IllegalStateException("Invalid viewType! " + viewType);
}
}
@@ -146,6 +148,10 @@ public class OnboardingMegaphoneView extends FrameLayout {
data.add(TYPE_APPEARANCE);
}
+ if (SignalStore.onboarding().shouldShowAddPhoto() && !SignalStore.misc().hasEverHadAnAvatar()) {
+ data.add(TYPE_ADD_PHOTO);
+ }
+
return data;
}
}
@@ -295,4 +301,32 @@ public class OnboardingMegaphoneView extends FrameLayout {
SignalStore.onboarding().setShowAppearance(false);
}
}
+
+ private static class AddPhotoCardViewHolder extends CardViewHolder {
+
+ public AddPhotoCardViewHolder(@NonNull View itemView) {
+ super(itemView);
+ }
+
+ @Override
+ int getButtonStringRes() {
+ return R.string.Megaphones_add_photo;
+ }
+
+ @Override
+ int getImageRes() {
+ return R.drawable.ic_signal_add_photo;
+ }
+
+ @Override
+ void onActionClicked(@NonNull MegaphoneActionController controller) {
+ controller.onMegaphoneNavigationRequested(ManageProfileActivity.getIntentForAvatarEdit(controller.getMegaphoneActivity()));
+ SignalStore.onboarding().setShowAddPhoto(false);
+ }
+
+ @Override
+ void onCloseClicked() {
+ SignalStore.onboarding().setShowAddPhoto(false);
+ }
+ }
}
diff --git a/app/src/main/res/drawable/ic_signal_add_photo.xml b/app/src/main/res/drawable/ic_signal_add_photo.xml
new file mode 100644
index 0000000000..e028813840
--- /dev/null
+++ b/app/src/main/res/drawable/ic_signal_add_photo.xml
@@ -0,0 +1,62 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index c3cd833a58..6cc4277254 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -959,6 +959,7 @@
Invite friends
Use SMS
Appearance
+ Add photo
Signal call in progress