From 0711a2218837243f7c8277625eaeae303e9221ca Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Thu, 28 May 2020 13:24:04 -0300 Subject: [PATCH] Add overflow toast and fix edit menu option. --- .../conversation/ConversationActivity.java | 24 +++++++++++++++++++ .../ui/managegroup/ManageGroupFragment.java | 14 ++++------- .../securesms/keyvalue/SignalStore.java | 9 +++++-- .../securesms/keyvalue/UiHints.java | 24 +++++++++++++++++++ app/src/main/res/values/strings.xml | 2 ++ 5 files changed, 61 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHints.java diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java index c9069d15f68..fcccc2dfda1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationActivity.java @@ -43,6 +43,7 @@ import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; +import android.view.Gravity; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuInflater; @@ -163,6 +164,7 @@ import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob; import org.thoughtcrime.securesms.jobs.RetrieveProfileJob; import org.thoughtcrime.securesms.jobs.ServiceOutageDetectionJob; +import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository; import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel; @@ -872,6 +874,28 @@ public boolean onOptionsItemSelected(MenuItem item) { return false; } + @Override + public boolean onMenuOpened(int featureId, Menu menu) { + if (menu == null) { + return super.onMenuOpened(featureId, null); + } + + if (!SignalStore.uiHints().hasSeenGroupSettingsMenuToast()) { + MenuItem settingsMenuItem = menu.findItem(R.id.menu_group_settings); + + if (settingsMenuItem != null && settingsMenuItem.isVisible()) { + Toast toast = Toast.makeText(this, R.string.ConversationActivity__more_options_now_in_group_settings, Toast.LENGTH_SHORT); + + toast.setGravity(Gravity.CENTER, 0, 0); + toast.show(); + + SignalStore.uiHints().markHasSeenGroupSettingsMenuToast(); + } + } + + return super.onMenuOpened(featureId, menu); + } + @Override public void onBackPressed() { Log.d(TAG, "onBackPressed()"); diff --git a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/ManageGroupFragment.java b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/ManageGroupFragment.java index ac05b34a3a7..0952a565717 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/ManageGroupFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/groups/ui/managegroup/ManageGroupFragment.java @@ -107,12 +107,6 @@ static ManageGroupFragment newInstance(@NonNull String groupId) { return fragment; } - @Override - public void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setHasOptionsMenu(true); - } - @Override public @Nullable View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @@ -188,7 +182,10 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { avatar.setFallbackPhotoProvider(fallbackPhotoProvider); toolbar.setNavigationOnClickListener(v -> requireActivity().finish()); + toolbar.setOnMenuItemClickListener(this::onMenuItemSelected); + toolbar.inflateMenu(R.menu.manage_group_fragment); + viewModel.getCanEditGroupAttributes().observe(getViewLifecycleOwner(), canEdit -> toolbar.getMenu().findItem(R.id.action_edit).setVisible(canEdit)); viewModel.getTitle().observe(getViewLifecycleOwner(), toolbar::setTitle); viewModel.getMemberCountSummary().observe(getViewLifecycleOwner(), memberCountUnderAvatar::setText); viewModel.getFullMemberCountSummary().observe(getViewLifecycleOwner(), memberCountAboveList::setText); @@ -306,13 +303,10 @@ public void onActivityCreated(@Nullable Bundle savedInstanceState) { @Override public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { - inflater.inflate(R.menu.manage_group_fragment, menu); - viewModel.getCanEditGroupAttributes().observe(getViewLifecycleOwner(), canEdit -> menu.findItem(R.id.action_edit).setVisible(canEdit)); } - @Override - public boolean onOptionsItemSelected(@NonNull MenuItem item) { + public boolean onMenuItemSelected(@NonNull MenuItem item) { if (item.getItemId() == R.id.action_edit) { startActivity(EditProfileActivity.getIntentForGroupProfile(requireActivity(), getPushGroupId())); return true; diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.java index 45ee0de8f92..b9e8ff93c80 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.java +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/SignalStore.java @@ -11,13 +11,14 @@ */ public final class SignalStore { - private static final String LAST_PREKEY_REFRESH_TIME = "last_prekey_refresh_time"; - private static final String MESSAGE_REQUEST_ENABLE_TIME = "message_request_enable_time"; + private static final String LAST_PREKEY_REFRESH_TIME = "last_prekey_refresh_time"; + private static final String MESSAGE_REQUEST_ENABLE_TIME = "message_request_enable_time"; private SignalStore() {} public static void onFirstEverAppLaunch() { registrationValues().onFirstEverAppLaunch(); + uiHints().onFirstEverAppLaunch(); } public static @NonNull KbsValues kbsValues() { @@ -60,6 +61,10 @@ public static void setMessageRequestEnableTime(long time) { putLong(MESSAGE_REQUEST_ENABLE_TIME, time); } + public static UiHints uiHints() { + return new UiHints(getStore()); + } + public static @NonNull PreferenceDataStore getPreferenceDataStore() { return new SignalPreferenceDataStore(getStore()); } diff --git a/app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHints.java b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHints.java new file mode 100644 index 00000000000..3a4ad72526f --- /dev/null +++ b/app/src/main/java/org/thoughtcrime/securesms/keyvalue/UiHints.java @@ -0,0 +1,24 @@ +package org.thoughtcrime.securesms.keyvalue; + +public class UiHints { + + private static final String HAS_SEEN_GROUP_SETTINGS_MENU_TOAST = "uihints.has_seen_group_settings_menu_toast"; + + private final KeyValueStore store; + + UiHints(KeyValueStore store) { + this.store = store; + } + + void onFirstEverAppLaunch() { + markHasSeenGroupSettingsMenuToast(); + } + + public void markHasSeenGroupSettingsMenuToast() { + store.beginWrite().putBoolean(HAS_SEEN_GROUP_SETTINGS_MENU_TOAST, true).apply(); + } + + public boolean hasSeenGroupSettingsMenuToast() { + return store.getBoolean(HAS_SEEN_GROUP_SETTINGS_MENU_TOAST, false); + } +} diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 19674940296..b2bb10591b4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -267,6 +267,8 @@ To call %1$s, Signal needs access to your microphone To call %1$s, Signal needs access to your microphone and camera. + More options now in \"Group settings\" + %d unread message