Add overflow toast and fix edit menu option.

This commit is contained in:
Alex Hart 2020-05-28 13:24:04 -03:00 committed by Greyson Parrelli
parent 3a06412cd8
commit 0711a22188
5 changed files with 61 additions and 12 deletions

View file

@ -43,6 +43,7 @@ import android.provider.Telephony;
import android.text.Editable; import android.text.Editable;
import android.text.TextUtils; import android.text.TextUtils;
import android.text.TextWatcher; import android.text.TextWatcher;
import android.view.Gravity;
import android.view.KeyEvent; import android.view.KeyEvent;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
@ -163,6 +164,7 @@ import org.thoughtcrime.securesms.invites.InviteReminderRepository;
import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob; import org.thoughtcrime.securesms.jobs.RequestGroupV2InfoJob;
import org.thoughtcrime.securesms.jobs.RetrieveProfileJob; import org.thoughtcrime.securesms.jobs.RetrieveProfileJob;
import org.thoughtcrime.securesms.jobs.ServiceOutageDetectionJob; import org.thoughtcrime.securesms.jobs.ServiceOutageDetectionJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.linkpreview.LinkPreview; import org.thoughtcrime.securesms.linkpreview.LinkPreview;
import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository; import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository;
import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel; import org.thoughtcrime.securesms.linkpreview.LinkPreviewViewModel;
@ -872,6 +874,28 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
return false; 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 @Override
public void onBackPressed() { public void onBackPressed() {
Log.d(TAG, "onBackPressed()"); Log.d(TAG, "onBackPressed()");

View file

@ -107,12 +107,6 @@ public class ManageGroupFragment extends Fragment {
return fragment; return fragment;
} }
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override @Override
public @Nullable View onCreateView(@NonNull LayoutInflater inflater, public @Nullable View onCreateView(@NonNull LayoutInflater inflater,
@Nullable ViewGroup container, @Nullable ViewGroup container,
@ -188,7 +182,10 @@ public class ManageGroupFragment extends Fragment {
avatar.setFallbackPhotoProvider(fallbackPhotoProvider); avatar.setFallbackPhotoProvider(fallbackPhotoProvider);
toolbar.setNavigationOnClickListener(v -> requireActivity().finish()); 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.getTitle().observe(getViewLifecycleOwner(), toolbar::setTitle);
viewModel.getMemberCountSummary().observe(getViewLifecycleOwner(), memberCountUnderAvatar::setText); viewModel.getMemberCountSummary().observe(getViewLifecycleOwner(), memberCountUnderAvatar::setText);
viewModel.getFullMemberCountSummary().observe(getViewLifecycleOwner(), memberCountAboveList::setText); viewModel.getFullMemberCountSummary().observe(getViewLifecycleOwner(), memberCountAboveList::setText);
@ -306,13 +303,10 @@ public class ManageGroupFragment extends Fragment {
@Override @Override
public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { 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 onMenuItemSelected(@NonNull MenuItem item) {
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (item.getItemId() == R.id.action_edit) { if (item.getItemId() == R.id.action_edit) {
startActivity(EditProfileActivity.getIntentForGroupProfile(requireActivity(), getPushGroupId())); startActivity(EditProfileActivity.getIntentForGroupProfile(requireActivity(), getPushGroupId()));
return true; return true;

View file

@ -18,6 +18,7 @@ public final class SignalStore {
public static void onFirstEverAppLaunch() { public static void onFirstEverAppLaunch() {
registrationValues().onFirstEverAppLaunch(); registrationValues().onFirstEverAppLaunch();
uiHints().onFirstEverAppLaunch();
} }
public static @NonNull KbsValues kbsValues() { public static @NonNull KbsValues kbsValues() {
@ -60,6 +61,10 @@ public final class SignalStore {
putLong(MESSAGE_REQUEST_ENABLE_TIME, time); putLong(MESSAGE_REQUEST_ENABLE_TIME, time);
} }
public static UiHints uiHints() {
return new UiHints(getStore());
}
public static @NonNull PreferenceDataStore getPreferenceDataStore() { public static @NonNull PreferenceDataStore getPreferenceDataStore() {
return new SignalPreferenceDataStore(getStore()); return new SignalPreferenceDataStore(getStore());
} }

View file

@ -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);
}
}

View file

@ -267,6 +267,8 @@
<string name="ConversationActivity__to_call_s_signal_needs_access_to_your_microphone">To call %1$s, Signal needs access to your microphone</string> <string name="ConversationActivity__to_call_s_signal_needs_access_to_your_microphone">To call %1$s, Signal needs access to your microphone</string>
<string name="ConversationActivity__to_call_s_signal_needs_access_to_your_microphone_and_camera">To call %1$s, Signal needs access to your microphone and camera.</string> <string name="ConversationActivity__to_call_s_signal_needs_access_to_your_microphone_and_camera">To call %1$s, Signal needs access to your microphone and camera.</string>
<string name="ConversationActivity__more_options_now_in_group_settings">More options now in \"Group settings\"</string>
<!-- ConversationAdapter --> <!-- ConversationAdapter -->
<plurals name="ConversationAdapter_n_unread_messages"> <plurals name="ConversationAdapter_n_unread_messages">
<item quantity="one">%d unread message</item> <item quantity="one">%d unread message</item>