Skip to content

Commit fa0d622

Browse files
committed
refactor(card-browser): inline cardsListView
1 parent 3e49c8c commit fa0d622

File tree

3 files changed

+20
-16
lines changed

3 files changed

+20
-16
lines changed

AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.kt

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,6 @@ import androidx.fragment.app.FragmentContainerView
4949
import androidx.fragment.app.commit
5050
import androidx.lifecycle.ViewModelProvider
5151
import androidx.lifecycle.lifecycleScope
52-
import androidx.recyclerview.widget.LinearLayoutManager
53-
import androidx.recyclerview.widget.RecyclerView
5452
import anki.collection.OpChanges
5553
import com.google.android.material.snackbar.Snackbar
5654
import com.ichi2.anim.ActivityTransitionAnimation.Direction
@@ -183,9 +181,6 @@ open class CardBrowser :
183181

184182
private lateinit var deckSpinnerSelection: DeckSpinnerSelection
185183

186-
@VisibleForTesting
187-
val cardsListView: RecyclerView
188-
get() = cardBrowserFragment.cardsListView
189184
private var searchView: CardBrowserSearchView? = null
190185

191186
@VisibleForTesting
@@ -561,15 +556,13 @@ open class CardBrowser :
561556
// Due to the ripple on long press, we set padding
562557
browserColumnHeadings.updatePaddingRelative(start = 48.dp)
563558
multiSelectOnBackPressedCallback.isEnabled = true
564-
autoScrollTo(viewModel.lastSelectedPosition, viewModel.oldCardTopOffset)
565559
} else {
566560
Timber.d("end multiselect mode")
567561
refreshSubtitle()
568562
deckSpinnerSelection.setSpinnerVisibility(View.VISIBLE)
569563
actionBarTitle.visibility = View.GONE
570564
browserColumnHeadings.updatePaddingRelative(start = 0.dp)
571565
multiSelectOnBackPressedCallback.isEnabled = false
572-
autoScrollTo(viewModel.lastSelectedPosition, viewModel.oldCardTopOffset)
573566
}
574567
// reload the actionbar using the multi-select mode actionbar
575568
invalidateOptionsMenu()
@@ -967,7 +960,6 @@ open class CardBrowser :
967960
override fun onResume() {
968961
super.onResume()
969962
selectNavigationItem(R.id.nav_browser)
970-
autoScrollTo(viewModel.lastSelectedPosition, viewModel.oldCardTopOffset)
971963
searchView?.post {
972964
hideKeyboard()
973965
}
@@ -1945,13 +1937,6 @@ open class CardBrowser :
19451937
inFragmentedActivity: Boolean = false,
19461938
): NoteEditorLauncher = NoteEditorLauncher.AddNoteFromCardBrowser(viewModel, inFragmentedActivity)
19471939
}
1948-
1949-
private fun autoScrollTo(
1950-
newPosition: Int,
1951-
offset: Int,
1952-
) {
1953-
(cardsListView.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(newPosition, offset)
1954-
}
19551940
}
19561941

19571942
suspend fun searchForRows(

AnkiDroid/src/main/java/com/ichi2/anki/browser/CardBrowserFragment.kt

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,11 @@ class CardBrowserFragment :
9797
setupFlows()
9898
}
9999

100+
override fun onResume() {
101+
super.onResume()
102+
autoScrollTo(viewModel.lastSelectedPosition, viewModel.oldCardTopOffset)
103+
}
104+
100105
@Suppress("UNUSED_PARAMETER", "unused")
101106
private fun setupFlows() {
102107
fun onIsTruncatedChanged(isTruncated: Boolean) = cardsAdapter.notifyDataSetChanged()
@@ -111,6 +116,7 @@ class CardBrowserFragment :
111116
fun isInMultiSelectModeChanged(inMultiSelect: Boolean) {
112117
// update adapter to remove check boxes
113118
cardsAdapter.notifyDataSetChanged()
119+
autoScrollTo(viewModel.lastSelectedPosition, viewModel.oldCardTopOffset)
114120
}
115121

116122
fun searchStateChanged(searchState: SearchState) {
@@ -188,6 +194,13 @@ class CardBrowserFragment :
188194
return view?.top ?: 0
189195
}
190196

197+
private fun autoScrollTo(
198+
newPosition: Int,
199+
offset: Int,
200+
) {
201+
(cardsListView.layoutManager as LinearLayoutManager).scrollToPositionWithOffset(newPosition, offset)
202+
}
203+
191204
private fun requireCardBrowserActivity(): CardBrowser = requireActivity() as CardBrowser
192205

193206
// TODO: Move this to an extension method once we have context parameters

AnkiDroid/src/test/java/com/ichi2/anki/CardBrowserTest.kt

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1698,8 +1698,14 @@ fun TestClass.flagCardForNote(
16981698

16991699
fun CardBrowser.getVisibleRows() =
17001700
sequence {
1701+
val cardsListView = cardBrowserFragment.cardsListView
17011702
for (i in 0 until (cardsListView.childCount)) {
1702-
val row = cardsListView.getChildViewHolder(cardsListView.getChildAt(i))
1703+
val row =
1704+
cardsListView.getChildViewHolder(
1705+
cardsListView.getChildAt(
1706+
i,
1707+
),
1708+
)
17031709
yield(row as BrowserMultiColumnAdapter.MultiColumnViewHolder)
17041710
}
17051711
}.toList().also {

0 commit comments

Comments
 (0)