From 7bb570d131a6854ab9415e51a9bb8c7a8f8220c1 Mon Sep 17 00:00:00 2001 From: tda1009 Date: Sat, 10 Jul 2021 15:02:57 +0700 Subject: [PATCH] Fix CardBrowser shows wrong deck (cherry picked from commit c84cf4b151cfe460fd820d4cdf90c5daec4f43e1) --- .../main/java/com/ichi2/anki/CardBrowser.java | 7 ++++--- .../com/ichi2/anki/DeckSpinnerSelection.java | 19 +++++++++++++++---- .../main/java/com/ichi2/anki/NoteEditor.java | 4 ++-- .../main/java/com/ichi2/anki/Statistics.java | 4 ++-- 4 files changed, 23 insertions(+), 11 deletions(-) diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.java b/AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.java index 0b0b4901d5..03da5496f0 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.java +++ b/AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.java @@ -128,6 +128,7 @@ public class CardBrowser extends NavigationDrawerActivity implements } long deckId = deck.getDeckId(); mDeckSpinnerSelection.initializeActionBarDeckSpinner(); + mDeckSpinnerSelection.selectDeckById(deckId, true); selectDeckAndSave(deckId); } @@ -762,14 +763,14 @@ public class CardBrowser extends NavigationDrawerActivity implements if (getLastDeckId() != null && getLastDeckId() == ALL_DECKS_ID) { selectAllDecks(); } else if (getLastDeckId() != null && getCol().getDecks().get(getLastDeckId(), false) != null) { - mDeckSpinnerSelection.selectDeckById(getLastDeckId()); + mDeckSpinnerSelection.selectDeckById(getLastDeckId(), false); } else { - mDeckSpinnerSelection.selectDeckById(getCol().getDecks().selected()); + mDeckSpinnerSelection.selectDeckById(getCol().getDecks().selected(), false); } } public void selectDeckAndSave(long deckId) { - mDeckSpinnerSelection.selectDeckById(deckId); + mDeckSpinnerSelection.selectDeckById(deckId, true); if (deckId == ALL_DECKS_ID) { mRestrictOnDeck = ""; } else { diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/DeckSpinnerSelection.java b/AnkiDroid/src/main/java/com/ichi2/anki/DeckSpinnerSelection.java index 5afcec5117..e58956d5f5 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/DeckSpinnerSelection.java +++ b/AnkiDroid/src/main/java/com/ichi2/anki/DeckSpinnerSelection.java @@ -174,21 +174,32 @@ public class DeckSpinnerSelection { return mSpinner; } - // Iterates the drop down decks, and selects the one matching the given id - public boolean selectDeckById(long deckId) { + /** + * Iterates the drop down decks, and selects the one matching the given id. + * @param deckId The deck id to be selected. + * @param setAsCurrentDeck If true, deckId will be set as the current deck id of Collection + * (this means the deck selected here will continue to appear in any future Activity whose + * display data is loaded from Collection's current deck). If false, deckId will not be set as + * the current deck id of Collection. + * @return True if a deck with deckId exists, false otherwise. + */ + public boolean selectDeckById(long deckId, boolean setAsCurrentDeck) { if (deckId == ALL_DECKS_ID) { selectAllDecks(); return true; } - return searchInList(deckId); + return searchInList(deckId, setAsCurrentDeck); } - private boolean searchInList(long deckId) { + private boolean searchInList(long deckId, boolean setAsCurrentDeck) { for (int dropDownDeckIdx = 0; dropDownDeckIdx < mAllDeckIds.size(); dropDownDeckIdx++) { if (mAllDeckIds.get(dropDownDeckIdx) == deckId) { int position = mShowAllDecks ? dropDownDeckIdx + 1 : dropDownDeckIdx; selectDropDownItem(position); + if (setAsCurrentDeck) { + mContext.getCol().getDecks().select(deckId); + } return true; } } diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditor.java b/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditor.java index 4953ccf03b..53f5546c41 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditor.java +++ b/AnkiDroid/src/main/java/com/ichi2/anki/NoteEditor.java @@ -269,7 +269,7 @@ public class NoteEditor extends AnkiActivity implements } mCurrentDid = deck.getDeckId(); mDeckSpinnerSelection.initializeNoteEditorDeckSpinner(mCurrentEditedCard, mAddNote); - mDeckSpinnerSelection.selectDeckById(deck.getDeckId()); + mDeckSpinnerSelection.selectDeckById(deck.getDeckId(), false); } @Override @@ -1899,7 +1899,7 @@ public class NoteEditor extends AnkiActivity implements } else { mCurrentDid = mCurrentEditedCard.getDid(); } - mDeckSpinnerSelection.selectDeckById(mCurrentDid); + mDeckSpinnerSelection.selectDeckById(mCurrentDid, false); } diff --git a/AnkiDroid/src/main/java/com/ichi2/anki/Statistics.java b/AnkiDroid/src/main/java/com/ichi2/anki/Statistics.java index 433c17dc46..c7e566c9d7 100644 --- a/AnkiDroid/src/main/java/com/ichi2/anki/Statistics.java +++ b/AnkiDroid/src/main/java/com/ichi2/anki/Statistics.java @@ -132,7 +132,7 @@ public class Statistics extends NavigationDrawerActivity implements mDeckSpinnerSelection = new DeckSpinnerSelection(this, R.id.toolbar_spinner); mDeckSpinnerSelection.initializeActionBarDeckSpinner(); mDeckSpinnerSelection.setShowAllDecks(true); - mDeckSpinnerSelection.selectDeckById(deckId); + mDeckSpinnerSelection.selectDeckById(deckId, false); mTaskHandler.setDeckId(deckId); mViewPager.getAdapter().notifyDataSetChanged(); } @@ -235,7 +235,7 @@ public class Statistics extends NavigationDrawerActivity implements return; } mDeckSpinnerSelection.initializeActionBarDeckSpinner(); - mDeckSpinnerSelection.selectDeckById(deck.getDeckId()); + mDeckSpinnerSelection.selectDeckById(deck.getDeckId(), true); mTaskHandler.setDeckId(deck.getDeckId()); mViewPager.getAdapter().notifyDataSetChanged(); }