Add updated search hint text when filter is enabled.

This commit is contained in:
Alex Hart 2023-01-04 13:57:20 -04:00 committed by Greyson Parrelli
parent 54d0df9a05
commit ec3ec969eb
5 changed files with 23 additions and 0 deletions

View file

@ -7,6 +7,7 @@ import android.util.AttributeSet
import android.view.View import android.view.View
import android.view.ViewAnimationUtils import android.view.ViewAnimationUtils
import android.widget.EditText import android.widget.EditText
import androidx.annotation.StringRes
import androidx.constraintlayout.widget.ConstraintLayout import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.animation.addListener import androidx.core.animation.addListener
import androidx.core.widget.addTextChangedListener import androidx.core.widget.addTextChangedListener
@ -49,6 +50,10 @@ class Material3SearchToolbar @JvmOverloads constructor(
}) })
} }
fun setSearchInputHint(@StringRes hintStringRes: Int) {
input.setHint(hintStringRes)
}
fun display(x: Float, y: Float) { fun display(x: Float, y: Float) {
if (Build.VERSION.SDK_INT < 21) { if (Build.VERSION.SDK_INT < 21) {
visibility = VISIBLE visibility = VISIBLE

View file

@ -114,10 +114,12 @@ import org.thoughtcrime.securesms.components.voice.VoiceNotePlayerView;
import org.thoughtcrime.securesms.contacts.sync.CdsPermanentErrorBottomSheet; import org.thoughtcrime.securesms.contacts.sync.CdsPermanentErrorBottomSheet;
import org.thoughtcrime.securesms.contacts.sync.CdsTemporaryErrorBottomSheet; import org.thoughtcrime.securesms.contacts.sync.CdsTemporaryErrorBottomSheet;
import org.thoughtcrime.securesms.conversation.ConversationFragment; import org.thoughtcrime.securesms.conversation.ConversationFragment;
import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationFilterRequest;
import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationFilterSource; import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationFilterSource;
import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationListFilterPullView; import org.thoughtcrime.securesms.conversationlist.chatfilter.ConversationListFilterPullView;
import org.thoughtcrime.securesms.conversationlist.chatfilter.FilterLerp; import org.thoughtcrime.securesms.conversationlist.chatfilter.FilterLerp;
import org.thoughtcrime.securesms.conversationlist.model.Conversation; import org.thoughtcrime.securesms.conversationlist.model.Conversation;
import org.thoughtcrime.securesms.conversationlist.model.ConversationFilter;
import org.thoughtcrime.securesms.conversationlist.model.UnreadPayments; import org.thoughtcrime.securesms.conversationlist.model.UnreadPayments;
import org.thoughtcrime.securesms.database.MessageTable.MarkedMessageInfo; import org.thoughtcrime.securesms.database.MessageTable.MarkedMessageInfo;
import org.thoughtcrime.securesms.database.SignalDatabase; import org.thoughtcrime.securesms.database.SignalDatabase;
@ -688,6 +690,8 @@ public class ConversationListFragment extends MainFragment implements ActionMode
} }
private void initializeSearchListener() { private void initializeSearchListener() {
viewModel.getConversationFilterRequest().observe(getViewLifecycleOwner(), this::updateSearchToolbarHint);
requireCallback().getSearchAction().setOnClickListener(v -> { requireCallback().getSearchAction().setOnClickListener(v -> {
fadeOutButtonsAndMegaphone(250); fadeOutButtonsAndMegaphone(250);
requireCallback().onSearchOpened(); requireCallback().onSearchOpened();
@ -725,9 +729,16 @@ public class ConversationListFragment extends MainFragment implements ActionMode
fadeInButtonsAndMegaphone(250); fadeInButtonsAndMegaphone(250);
} }
}); });
updateSearchToolbarHint(Objects.requireNonNull(viewModel.getConversationFilterRequest().getValue()));
}); });
} }
private void updateSearchToolbarHint(@NonNull ConversationFilterRequest conversationFilterRequest) {
requireCallback().getSearchToolbar().get().setSearchInputHint(
conversationFilterRequest.getFilter() == ConversationFilter.OFF ? R.string.SearchToolbar_search : R.string.SearchToolbar_search_unread_chats
);
}
private void initializeVoiceNotePlayer() { private void initializeVoiceNotePlayer() {
mediaControllerOwner.getVoiceNoteMediaController().getVoiceNotePlayerViewState().observe(getViewLifecycleOwner(), state -> { mediaControllerOwner.getVoiceNoteMediaController().getVoiceNotePlayerViewState().observe(getViewLifecycleOwner(), state -> {
if (state.isPresent()) { if (state.isPresent()) {

View file

@ -175,6 +175,10 @@ class ConversationListViewModel extends ViewModel {
return unreadPaymentsLiveData; return unreadPaymentsLiveData;
} }
@NonNull LiveData<ConversationFilterRequest> getConversationFilterRequest() {
return conversationFilterRequest;
}
public int getPinnedCount() { public int getPinnedCount() {
return pinnedCount; return pinnedCount;
} }

View file

@ -106,6 +106,7 @@ class StoriesLandingFragment : DSLSettingsFragment(layoutId = R.layout.stories_l
val searchBinder = requireListener<SearchBinder>() val searchBinder = requireListener<SearchBinder>()
searchBinder.getSearchAction().setOnClickListener { searchBinder.getSearchAction().setOnClickListener {
searchBinder.onSearchOpened() searchBinder.onSearchOpened()
searchBinder.getSearchToolbar().get().setSearchInputHint(R.string.SearchToolbar_search)
searchBinder.getSearchToolbar().get().listener = object : Material3SearchToolbar.Listener { searchBinder.getSearchToolbar().get().listener = object : Material3SearchToolbar.Listener {
override fun onSearchTextChange(text: String) { override fun onSearchTextChange(text: String) {

View file

@ -2074,6 +2074,8 @@
<!-- SearchToolbar --> <!-- SearchToolbar -->
<string name="SearchToolbar_search">Search</string> <string name="SearchToolbar_search">Search</string>
<!-- Hint when searching filtered chat content -->
<string name="SearchToolbar_search_unread_chats">Search unread chats</string>
<string name="SearchToolbar_search_for_conversations_contacts_and_messages">Search for conversations, contacts, and messages</string> <string name="SearchToolbar_search_for_conversations_contacts_and_messages">Search for conversations, contacts, and messages</string>
<!-- Material3 Search Toolbar --> <!-- Material3 Search Toolbar -->