0
0
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:
Timothy Rae 2015-12-10 02:51:03 +09:00
commit 27641aa4a1
2 changed files with 66 additions and 1 deletions

View File

@ -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() {

View File

@ -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;
}
}
}
};