@@ -76,7 +76,6 @@ import com.ichi2.anki.dialogs.BrowserOptionsDialog
7676import com.ichi2.anki.dialogs.CardBrowserOrderDialog
7777import com.ichi2.anki.dialogs.CreateDeckDialog
7878import com.ichi2.anki.dialogs.DeckSelectionDialog
79- import com.ichi2.anki.dialogs.DeckSelectionDialog.Companion.newInstance
8079import com.ichi2.anki.dialogs.DeckSelectionDialog.DeckSelectionListener
8180import com.ichi2.anki.dialogs.SimpleMessageDialog
8281import com.ichi2.anki.dialogs.tags.TagsDialog
@@ -102,6 +101,7 @@ import com.ichi2.anki.utils.ext.ifNotZero
102101import com.ichi2.anki.utils.ext.setFragmentResultListener
103102import com.ichi2.anki.utils.ext.showDialogFragment
104103import com.ichi2.anki.utils.ext.visibleItemPositions
104+ import com.ichi2.anki.utils.showDialogFragmentImpl
105105import com.ichi2.anki.withProgress
106106import com.ichi2.utils.HandlerUtils
107107import com.ichi2.utils.TagsUtil.getUpdatedTags
@@ -219,7 +219,10 @@ class CardBrowserFragment :
219219
220220 progressIndicator = view.findViewById(R .id.browser_progress)
221221
222- deckChip = view.findViewById<Chip >(R .id.chip_decks)
222+ deckChip =
223+ view.findViewById<Chip >(R .id.chip_decks)?.apply {
224+ setOnClickListener { viewModel.openDeckSelectionDialog() }
225+ }
223226 searchBar =
224227 view.findViewById<SearchBar >(R .id.search_bar)?.apply {
225228 setNavigationOnClickListener {
@@ -436,6 +439,21 @@ class CardBrowserFragment :
436439 )
437440 }
438441
442+ fun onSearchForDecks (decks : List <SelectableDeck >) {
443+ val dialog =
444+ DeckSelectionDialog .newInstance(
445+ title = getString(R .string.search_deck),
446+ summaryMessage = null ,
447+ keepRestoreDefaultButton = false ,
448+ decks = decks,
449+ )
450+ showDialogFragmentImpl(childFragmentManager, dialog)
451+ }
452+
453+ fun onDeckChanged (deck : SelectableDeck ? ) {
454+ deckChip?.text = deck?.getDisplayName(requireContext())
455+ }
456+
439457 activityViewModel.flowOfIsTruncated.launchCollectionInLifecycleScope(::onIsTruncatedChanged)
440458 activityViewModel.flowOfSelectedRows.launchCollectionInLifecycleScope(::onSelectedRowsChanged)
441459 activityViewModel.flowOfActiveColumns.launchCollectionInLifecycleScope(::onColumnsChanged)
@@ -445,6 +463,8 @@ class CardBrowserFragment :
445463 activityViewModel.flowOfColumnHeadings.launchCollectionInLifecycleScope(::onColumnNamesChanged)
446464 activityViewModel.flowOfCardStateChanged.launchCollectionInLifecycleScope(::onCardsMarkedEvent)
447465 activityViewModel.flowOfToggleSelectionState.launchCollectionInLifecycleScope(::onToggleSelectionStateUpdated)
466+ viewModel.flowOfSearchForDecks.launchCollectionInLifecycleScope(::onSearchForDecks)
467+ activityViewModel.flowOfDeckSelection.launchCollectionInLifecycleScope(::onDeckChanged)
448468 }
449469
450470 private fun setupFragmentResultListeners () {
@@ -847,7 +867,7 @@ class CardBrowserFragment :
847867 @VisibleForTesting
848868 internal fun getChangeDeckDialog (selectableDecks : List <SelectableDeck >? ): DeckSelectionDialog {
849869 val dialog =
850- newInstance(
870+ DeckSelectionDialog . newInstance(
851871 getString(R .string.move_all_to_deck),
852872 null ,
853873 false ,
0 commit comments