mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 12:02:16 +02:00
Merged '5484ed8' from hotfix-2.5.3: Make filtered and ordinary deck click behavior consistent
This commit is contained in:
commit
27641aa4a1
@ -1700,7 +1700,7 @@ public class DeckPicker extends NavigationDrawerActivity implements
|
||||
Sched.DeckDueTreeNode deckDueTreeNode = mDeckListAdapter.getDeckList().get(pos);
|
||||
int[] studyOptionsCounts = getCol().getSched().counts();
|
||||
// Figure out what action to take
|
||||
if (getCol().getDecks().isDyn(did) || mFragmented || dontSkipStudyOptions) {
|
||||
if (mFragmented || dontSkipStudyOptions) {
|
||||
// Go to StudyOptions screen when using filtered decks so that it's clearer to the user that it's different
|
||||
openStudyOptions(false);
|
||||
} else if (deckDueTreeNode.newCount + deckDueTreeNode.lrnCount + deckDueTreeNode.revCount > 0) {
|
||||
@ -1720,6 +1720,9 @@ public class DeckPicker extends NavigationDrawerActivity implements
|
||||
showDialogFragment(d);
|
||||
}
|
||||
}, findViewById(R.id.root_layout), mSnackbarShowHideCallback);
|
||||
} else if (getCol().getDecks().isDyn(did)) {
|
||||
// Go to the study options screen if filtered deck with no cards to study
|
||||
openStudyOptions(false);
|
||||
} else if (deckDueTreeNode.children.size() == 0 && getCol().cardCount(new Long[]{did}) == 0) {
|
||||
// If the deck is empty and has no children then show a message saying it's empty
|
||||
final Uri helpUrl = Uri.parse(getResources().getString(R.string.link_manual_getting_started));
|
||||
@ -2010,6 +2013,47 @@ public class DeckPicker extends NavigationDrawerActivity implements
|
||||
}, new TaskData(did));
|
||||
}
|
||||
|
||||
/**
|
||||
* Show progress bars and rebuild deck list on completion
|
||||
*/
|
||||
DeckTask.TaskListener mSimpleProgressListener = new DeckTask.TaskListener() {
|
||||
|
||||
@Override
|
||||
public void onPreExecute() {
|
||||
showProgressBar();
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onPostExecute(DeckTask.TaskData result) {
|
||||
updateDeckList();
|
||||
if (mFragmented) {
|
||||
loadStudyOptionsFragment(false);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onProgressUpdate(TaskData... values) {
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public void onCancelled() {
|
||||
}
|
||||
};
|
||||
|
||||
public void rebuildFiltered() {
|
||||
getCol().getDecks().select(mContextMenuDid);
|
||||
DeckTask.launchDeckTask(DeckTask.TASK_TYPE_REBUILD_CRAM, mSimpleProgressListener,
|
||||
new DeckTask.TaskData(mFragmented));
|
||||
}
|
||||
|
||||
public void emptyFiltered() {
|
||||
getCol().getDecks().select(mContextMenuDid);
|
||||
DeckTask.launchDeckTask(DeckTask.TASK_TYPE_EMPTY_CRAM, mSimpleProgressListener,
|
||||
new DeckTask.TaskData(mFragmented));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onAttachedToWindow() {
|
||||
|
@ -27,6 +27,7 @@ import com.ichi2.anki.CollectionHelper;
|
||||
import com.ichi2.anki.DeckPicker;
|
||||
import com.ichi2.anki.R;
|
||||
import com.ichi2.anki.StudyOptionsFragment;
|
||||
import com.ichi2.async.DeckTask;
|
||||
import com.ichi2.libanki.Collection;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@ -44,6 +45,8 @@ public class DeckPickerContextMenu extends DialogFragment {
|
||||
private static final int CONTEXT_MENU_DELETE_DECK = 3;
|
||||
private static final int CONTEXT_MENU_EXPORT_DECK = 4;
|
||||
private static final int CONTEXT_MENU_UNBURY = 5;
|
||||
private static final int CONTEXT_MENU_CUSTOM_STUDY_REBUILD = 6;
|
||||
private static final int CONTEXT_MENU_CUSTOM_STUDY_EMPTY = 7;
|
||||
|
||||
|
||||
public static DeckPickerContextMenu newInstance(long did) {
|
||||
@ -81,6 +84,8 @@ public class DeckPickerContextMenu extends DialogFragment {
|
||||
keyValueMap.put(CONTEXT_MENU_DELETE_DECK, res.getString(R.string.contextmenu_deckpicker_delete_deck));
|
||||
keyValueMap.put(CONTEXT_MENU_EXPORT_DECK, res.getString(R.string.export_deck));
|
||||
keyValueMap.put(CONTEXT_MENU_UNBURY, res.getString(R.string.unbury));
|
||||
keyValueMap.put(CONTEXT_MENU_CUSTOM_STUDY_REBUILD, res.getString(R.string.rebuild_cram_label));
|
||||
keyValueMap.put(CONTEXT_MENU_CUSTOM_STUDY_EMPTY, res.getString(R.string.empty_cram_label));
|
||||
return keyValueMap;
|
||||
}
|
||||
|
||||
@ -92,6 +97,10 @@ public class DeckPickerContextMenu extends DialogFragment {
|
||||
Collection col = CollectionHelper.getInstance().getCol(getContext());
|
||||
long did = getArguments().getLong("did");
|
||||
ArrayList<Integer> itemIds = new ArrayList<>();
|
||||
if (col.getDecks().isDyn(did)) {
|
||||
itemIds.add(CONTEXT_MENU_CUSTOM_STUDY_REBUILD);
|
||||
itemIds.add(CONTEXT_MENU_CUSTOM_STUDY_EMPTY);
|
||||
}
|
||||
itemIds.add(CONTEXT_MENU_RENAME_DECK);
|
||||
itemIds.add(CONTEXT_MENU_DECK_OPTIONS);
|
||||
if (!col.getDecks().isDyn(did)) {
|
||||
@ -147,6 +156,18 @@ public class DeckPickerContextMenu extends DialogFragment {
|
||||
((AnkiActivity) getActivity()).dismissAllDialogFragments();
|
||||
break;
|
||||
}
|
||||
case CONTEXT_MENU_CUSTOM_STUDY_REBUILD: {
|
||||
Timber.i("Empty deck selected");
|
||||
((DeckPicker) getActivity()).rebuildFiltered();
|
||||
((AnkiActivity) getActivity()).dismissAllDialogFragments();
|
||||
break;
|
||||
}
|
||||
case CONTEXT_MENU_CUSTOM_STUDY_EMPTY: {
|
||||
Timber.i("Empty deck selected");
|
||||
((DeckPicker) getActivity()).emptyFiltered();
|
||||
((AnkiActivity) getActivity()).dismissAllDialogFragments();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user