File tree Expand file tree Collapse file tree 4 files changed +29
-14
lines changed
AnkiDroid/src/main/java/com/ichi2/anki
libanki/src/main/java/com/ichi2/anki/libanki Expand file tree Collapse file tree 4 files changed +29
-14
lines changed Original file line number Diff line number Diff line change @@ -2526,8 +2526,11 @@ open class DeckPicker :
25262526 changes : OpChanges ,
25272527 handler : Any? ,
25282528 ) {
2529- // undo state may have changed
2530- invalidateOptionsMenu()
2529+ lifecycleScope.launch {
2530+ updateMenuState()
2531+ // undo state may have changed
2532+ invalidateOptionsMenu()
2533+ }
25312534 if (changes.studyQueues && handler != = this && handler != = viewModel) {
25322535 if (! activityPaused) {
25332536 // No need to update while the activity is paused, because `onResume` calls `refreshState` that calls `updateDeckList`.
Original file line number Diff line number Diff line change @@ -22,6 +22,7 @@ import androidx.lifecycle.ViewModel
2222import androidx.lifecycle.viewModelScope
2323import anki.card_rendering.EmptyCardsReport
2424import anki.collection.OpChanges
25+ import anki.decks.SetDeckCollapsedRequest
2526import anki.i18n.GeneratedTranslations
2627import com.ichi2.anki.CollectionManager
2728import com.ichi2.anki.CollectionManager.TR
@@ -353,11 +354,17 @@ class DeckPickerViewModel :
353354
354355 fun toggleDeckExpand (deckId : DeckId ) =
355356 viewModelScope.launch {
356- // update DB
357- withCol { decks.collapse(deckId) }
358357 // update stored state
359358 dueTree?.find(deckId)?.run {
360359 collapsed = ! collapsed
360+ // Anki uses scope as Reviewer in deck browser
361+ withCol {
362+ decks.setCollapsed(
363+ did,
364+ collapsed = collapsed,
365+ SetDeckCollapsedRequest .Scope .REVIEWER ,
366+ )
367+ }
361368 }
362369 flowOfRefreshDeckList.emit(Unit )
363370 }
Original file line number Diff line number Diff line change @@ -57,6 +57,12 @@ class Deck : JSONObject {
5757 put(" collapsed" , value)
5858 }
5959
60+ var browserCollapsed: Boolean
61+ get() = optBoolean(" browserCollapsed" , false )
62+ set(value) {
63+ put(" browserCollapsed" , value)
64+ }
65+
6066 /* *
6167 * Unique identifier of the deck
6268 *
Original file line number Diff line number Diff line change @@ -235,28 +235,27 @@ class Decks(
235235 TODO ()
236236 }
237237
238- @RustCleanup(" implement and make public" )
239238 @LibAnkiAlias(" set_collapsed" )
240- @Suppress(" unused" , " unused_parameter" )
241- private fun setCollapsed (
239+ fun setCollapsed (
242240 deckId : DeckId ,
243241 collapsed : Boolean ,
244242 scope : SetDeckCollapsedRequest .Scope ,
245- ): OpChanges {
246- TODO ()
247- }
243+ ): OpChanges = col.backend.setDeckCollapsed(deckId, collapsed, scope)
248244
245+ @LibAnkiAlias(" collapse" )
249246 fun collapse (did : DeckId ) {
250247 val deck = this .getLegacy(did) ? : return
251248 deck.collapsed = ! deck.collapsed
252249 this .save(deck)
253250 }
254251
255- @RustCleanup(" implement and make public" )
256252 @LibAnkiAlias(" collapse_browser" )
257- @Suppress(" unused" , " unused_parameter" )
258- private fun collapseBrowser (deckId : DeckId ) {
259- TODO ()
253+ @Suppress(" unused" )
254+ fun collapseBrowser (deckId : DeckId ) {
255+ val deck = this .getLegacy(deckId) ? : return
256+ val collapsed = deck.browserCollapsed
257+ deck.browserCollapsed = ! collapsed
258+ this .save(deck)
260259 }
261260
262261 fun count (): Int = len(this .allNamesAndIds())
You can’t perform that action at this time.
0 commit comments