diff --git a/app/src/main/java/org/thoughtcrime/securesms/components/Material3SearchToolbar.kt b/app/src/main/java/org/thoughtcrime/securesms/components/Material3SearchToolbar.kt index cc8fd29d0..09971106e 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/components/Material3SearchToolbar.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/components/Material3SearchToolbar.kt @@ -7,6 +7,7 @@ import android.util.AttributeSet import android.view.View import android.view.ViewAnimationUtils import android.widget.EditText +import androidx.annotation.StringRes import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.animation.addListener 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) { if (Build.VERSION.SDK_INT < 21) { visibility = VISIBLE diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java index e4a0f3b3f..1d73994b7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListFragment.java @@ -114,10 +114,12 @@ import org.thoughtcrime.securesms.components.voice.VoiceNotePlayerView; import org.thoughtcrime.securesms.contacts.sync.CdsPermanentErrorBottomSheet; import org.thoughtcrime.securesms.contacts.sync.CdsTemporaryErrorBottomSheet; 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.ConversationListFilterPullView; import org.thoughtcrime.securesms.conversationlist.chatfilter.FilterLerp; 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.database.MessageTable.MarkedMessageInfo; import org.thoughtcrime.securesms.database.SignalDatabase; @@ -688,6 +690,8 @@ public class ConversationListFragment extends MainFragment implements ActionMode } private void initializeSearchListener() { + viewModel.getConversationFilterRequest().observe(getViewLifecycleOwner(), this::updateSearchToolbarHint); + requireCallback().getSearchAction().setOnClickListener(v -> { fadeOutButtonsAndMegaphone(250); requireCallback().onSearchOpened(); @@ -725,9 +729,16 @@ public class ConversationListFragment extends MainFragment implements ActionMode 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() { mediaControllerOwner.getVoiceNoteMediaController().getVoiceNotePlayerViewState().observe(getViewLifecycleOwner(), state -> { if (state.isPresent()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.java b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.java index 21816722c..e06807904 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversationlist/ConversationListViewModel.java @@ -175,6 +175,10 @@ class ConversationListViewModel extends ViewModel { return unreadPaymentsLiveData; } + @NonNull LiveData getConversationFilterRequest() { + return conversationFilterRequest; + } + public int getPinnedCount() { return pinnedCount; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingFragment.kt index 0112713f9..ebc210707 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/stories/landing/StoriesLandingFragment.kt @@ -106,6 +106,7 @@ class StoriesLandingFragment : DSLSettingsFragment(layoutId = R.layout.stories_l val searchBinder = requireListener() searchBinder.getSearchAction().setOnClickListener { searchBinder.onSearchOpened() + searchBinder.getSearchToolbar().get().setSearchInputHint(R.string.SearchToolbar_search) searchBinder.getSearchToolbar().get().listener = object : Material3SearchToolbar.Listener { override fun onSearchTextChange(text: String) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index f3b130414..2480ebad9 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2074,6 +2074,8 @@ Search + + Search unread chats Search for conversations, contacts, and messages