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