use of com.ichi2.anki.AbstractFlashcardViewer.DECK_OPTIONS in project AnkiChinaAndroid by ankichinateam.
the class DeckInfoListAdapter method onBindViewHolder.
@Override
public void onBindViewHolder(RecyclerView.ViewHolder tempHolder, int position) {
if (tempHolder instanceof HeaderViewHolder) {
HeaderViewHolder holder = (HeaderViewHolder) tempHolder;
holder.mTextDeckName.setText(mTextDeckName);
holder.mDeckListHeader.setVisibility(mDeckList.isEmpty() ? View.GONE : View.VISIBLE);
// holder.mTextCongratsMessage.setText(mTextCongratsMessage);
holder.mTextDeckDescription.setText(mTextDeckDescription != null && mTextDeckDescription.length() > 0 ? formatDescription(mTextDeckDescription) : "");
holder.mTextTodayNew.setText(mTextTodayNew);
holder.mTextTodayRev.setText(mTextTodayRev);
holder.mTextCountHandled.setText(mTextCountHandled);
holder.mTextCountLearning.setText(mTextCountLearning);
holder.mTextCountNew.setText(mTextCountNew);
holder.mTextCountHard.setText(mTextCountHard);
holder.mTextTotal.setText(mTextTotal);
holder.mTextHandledPercent.setText(mTextHandledPercent);
holder.mTextHandledNum.setText(mTextHandledNum);
holder.mTextETA.setText(mTextETA);
holder.mButtonStart.setText(mTextButtonStart);
holder.mButtonStart.setOnClickListener(mButtonStartClickListener);
holder.mSelfStudyAskIcon.setOnClickListener(v -> {
if (mSelfStudyQADialog == null) {
mSelfStudyQADialog = new Dialog(mContext, R.style.CommonDialogTheme);
View view = View.inflate(mContext, R.layout.pop_window_self_study_introduce, null);
mSelfStudyQADialog.setContentView(view);
Window window = mSelfStudyQADialog.getWindow();
WindowManager.LayoutParams lps = window.getAttributes();
lps.width = WindowManager.LayoutParams.MATCH_PARENT;
window.setAttributes(lps);
window.setGravity(Gravity.BOTTOM);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
}
mSelfStudyQADialog.show();
});
holder.mStudyProgress.setProgress(mStudyProgress);
// holder.mDeckInfoLayout.setVisibility(mDeckInfoLayoutVisible);
// holder.mTextCongratsMessage.setVisibility(mTextCongratsMessageVisible);
holder.mTextDeckDescription.setVisibility(mTextDeckDescriptionVisible);
holder.mButtonStart.setEnabled(mButtonStartEnable);
holder.mSelfStudyHandle.setTag(SelfStudyActivity.TAB_STUDY_STATE);
holder.mSelfStudyMark.setTag(SelfStudyActivity.TAB_MARK_STATE);
holder.mSelfStudyAnswer.setTag(SelfStudyActivity.TAB_ANSWER_STATE);
holder.mSelfStudyCustom.setTag(SelfStudyActivity.TAB_CUSTOM_STATE);
holder.mSelfStudyHandle.setOnClickListener(mSelfStudyClickListener);
holder.mSelfStudyMark.setOnClickListener(mSelfStudyClickListener);
holder.mSelfStudyAnswer.setOnClickListener(mSelfStudyClickListener);
holder.mSelfStudyCustom.setOnClickListener(mSelfStudyClickListener);
holder.mTextStudySetting.setVisibility(mCurrentDeck == null || mCurrentDeck.optInt("dyn", 0) == 1 ? View.GONE : View.VISIBLE);
holder.mTextStudySetting.setOnClickListener(v -> {
Intent i = new Intent(mContext, StudySettingActivity.class);
i.putExtra("did", mCurrentDeck.optLong("id"));
mContext.startActivityForResultWithAnimation(i, DECK_OPTIONS, ActivityTransitionAnimation.FADE);
});
if (AD_IMAGE_URL != null && !AD_IMAGE_URL.isEmpty() && AD_LINK_URL != null && !AD_LINK_URL.isEmpty()) {
holder.mAdLayout.setVisibility(View.VISIBLE);
CornerTransform transformation = new CornerTransform(mContext, AdaptionUtil.dip2px(mContext, 9));
transformation.setExceptCorner(false, false, false, false);
RequestOptions coverRequestOptions = new RequestOptions().transform(transformation).diskCacheStrategy(// 不做磁盘缓存
DiskCacheStrategy.NONE).skipMemoryCache(// 不做内存缓存
true);
Glide.with(mContext).asBitmap().load(AD_IMAGE_URL).apply(coverRequestOptions).into(holder.mAdImage);
holder.mAdLayout.setOnClickListener(v -> WebViewActivity.openUrlInApp(mContext, AD_LINK_URL, ""));
} else {
holder.mAdLayout.setVisibility(View.GONE);
}
} else if (tempHolder instanceof ViewHolder) {
position--;
ViewHolder holder = (ViewHolder) tempHolder;
AbstractDeckTreeNode node = mDeckList.get(position);
// Set the expander icon and padding according to whether or not there are any subdecks
RelativeLayout deckLayout = holder.deckLayout;
// int rightPadding = (int) deckLayout.getResources().getDimension(R.dimen.deck_picker_right_padding);
if (mHasSubdecks) {
int smallPadding = (int) deckLayout.getResources().getDimension(R.dimen.deck_picker_left_padding_small);
deckLayout.setPadding(smallPadding, 0, (int) deckLayout.getResources().getDimension(R.dimen.deck_picker_right_padding), 0);
holder.deckExpander.setVisibility(View.VISIBLE);
// Create the correct expander for this deck
setDeckExpander(holder.deckExpander, holder.indentView, node);
} else {
holder.deckExpander.setVisibility(View.GONE);
int normalPadding = (int) deckLayout.getResources().getDimension(R.dimen.deck_picker_left_padding);
deckLayout.setPadding(normalPadding, 0, (int) deckLayout.getResources().getDimension(R.dimen.deck_picker_right_padding), 0);
}
if (node.hasChildren()) {
holder.deckExpander.setTag(node.getDid());
holder.deckExpander.setOnClickListener(mDeckExpanderClickListener);
} else {
holder.deckExpander.setOnClickListener(null);
}
// holder.deckLayout.setBackgroundResource(mRowCurrentDrawable);
// Set background colour. The current deck has its own color
// if (isCurrentlySelectedDeck(node)) {
// Timber.d("can be shown:%s", node.getDid());
// Timber.d("mHasSubdecks:%s", node.hasChildren() + "");
// if (mCurrentIDs.contains(node.getDid())) {
// holder.deckLayout.setVisibility(View.VISIBLE);
// holder.deckLayout.setBackgroundResource(mRowCurrentDrawable);
// if (mPartiallyTransparentForBackground) {
// setBackgroundAlpha(holder.deckLayout, SELECTED_DECK_ALPHA_AGAINST_BACKGROUND);
// }
// } else {
// holder.deckLayout.setVisibility(View.GONE);
// CompatHelper.getCompat().setSelectableBackground(holder.deckLayout);
// }
// Set deck name and colour. Filtered decks have their own colour
holder.deckName.setText(node.getLastDeckNameComponent());
if (mCol.getDecks().isDyn(node.getDid())) {
holder.deckName.setTextColor(mDeckNameDynColor);
} else {
if (node.getDepth() == Decks.path(mCurrentDeck.optString("name")).length) {
holder.deckName.setTextColor(mDeckNameDefaultColor);
} else {
holder.deckName.setTextColor(mDeckNameDefaultColorChild);
}
}
if (node.shouldDisplayCounts()) {
// holder.deckNew.setText(String.valueOf(node.getNewCount()));
// holder.deckLearn.setText(String.valueOf(node.getLrnCount()));
// holder.deckRev.setText(String.valueOf(node.getRevCount()+node.getLrnCount()));
holder.deckNew.setText(String.valueOf(node.getNewCount() + node.getRevCount() + node.getLrnCount()));
String ids = Stats.deckLimit(node.getDid(), mCol);
holder.deckRev.setText(String.valueOf(mCol.cardCount(ids)));
}
// Store deck ID in layout's tag for easy retrieval in our click listeners
holder.deckLayout.setTag(node.getDid());
holder.countsLayout.setTag(node.getDid());
holder.endIcon.setTag(node.getDid());
// holder.endLayout.setTag(node.getDid());
// Set click listeners
holder.deckLayout.setOnClickListener(mDeckClickListener);
holder.deckLayout.setOnLongClickListener(mDeckLongClickListener);
holder.countsLayout.setOnClickListener(mCountsClickListener);
holder.endIcon.setOnClickListener(mCountsClickListener);
// holder.endLayout.setOnClickListener(mCountsClickListener);
} else if (mCurrentDeck != null) {
if (tempHolder instanceof CardsListAdapter.CardsViewHolder) {
CardsListAdapter.CardsViewHolder holder = (CardsListAdapter.CardsViewHolder) tempHolder;
CardBrowser.CardCache card = mCards.get(position - mDeckList.size() - 1 - 1);
Timber.i("refresh card:%s", card.getId());
String question = card.getColumnHeaderText(CardBrowser.Column.SFLD);
if (card.getColumnHeaderText(CardBrowser.Column.SUSPENDED).equals("True")) {
holder.deckQuestion.setTextColor(ContextCompat.getColor(mContext, R.color.new_primary_text_third_color));
// holder.deckAnswer.setTextColor(ContextCompat.getColor(mContext, R.color.new_primary_text_third_color));
}
String firstColumnStr = question.isEmpty() ? card.getColumnHeaderText(CardBrowser.Column.MEDIA_NAME) : card.getColumnHeaderText(CardBrowser.Column.SFLD);
Pattern pattern = Pattern.compile("(?<=≯#).*?(?=#≮)");
Matcher matcher = pattern.matcher(firstColumnStr);
String val = "";
if (matcher.find()) {
val = matcher.group(0);
try {
String key = mModelKeys.getString(String.valueOf(card.getCard().model().getLong("id")));
Timber.i("match key:%s", key);
holder.deckQuestion.setText(HtmlUtils.delHTMLTag(firstColumnStr.substring(0, firstColumnStr.indexOf("≯#")) + AESUtil.decrypt(val, key) + firstColumnStr.substring(firstColumnStr.indexOf("#≮") + 2)));
// holder.deckQuestion.setText(firstColumnStr.substring(0, firstColumnStr.indexOf("≯#")) + aesUtil.getDecryptedMessage(val) + firstColumnStr.substring(firstColumnStr.indexOf("#≮") + 2));
} catch (Exception e) {
e.printStackTrace();
holder.deckQuestion.setText(firstColumnStr);
}
} else {
holder.deckQuestion.setText(firstColumnStr);
}
// holder.deckAnswer.setText(card.getColumnHeaderText(CardBrowser.Column.ANSWER));
holder.reviewCount.setText(card.getColumnHeaderText(CardBrowser.Column.REVIEWS));
holder.forgetCount.setText(card.getColumnHeaderText(CardBrowser.Column.LAPSES));
holder.due.setText(card.getColumnHeaderText(CardBrowser.Column.DUE2));
holder.mark.setTag(card.getId());
holder.flag.setTag(card.getId());
holder.itemRoot.setTag(card.getId());
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) holder.itemRoot.getLayoutParams();
layoutParams.rightMargin = 0;
holder.itemRoot.setLayoutParams(layoutParams);
if (card.getCard().note().hasTag("marked")) {
holder.mark.setImageResource(R.mipmap.mark_star_normal);
} else {
holder.mark.setImageResource(R.mipmap.note_star_unselected);
}
if (getFlagRes(card.getCard()) != -1) {
holder.flag.setImageResource(getFlagRes(card.getCard()));
} else {
holder.flag.setImageResource(R.mipmap.note_flag_unselected);
}
holder.mark.setOnClickListener(v -> {
CollectionTask.launchCollectionTask(DISMISS_MULTI, markCardHandler(), new TaskData(new Object[] { new long[] { (long) v.getTag() }, Collection.DismissType.MARK_NOTE_MULTI }));
notifyDataSetChanged();
});
holder.flag.setOnClickListener(v -> {
if (mListPop == null) {
mListPop = new ListPopupWindow(mContext);
for (int i = 0; i < mFlagRes.length; i++) {
Map<String, Object> map = new HashMap<>();
map.put("img", mFlagRes[i]);
map.put("content", mFlagContent[i]);
mFlagList.add(map);
}
mListPop.setAdapter(new SimpleAdapter(mContext, mFlagList, R.layout.item_flags_list, new String[] { "img", "content" }, new int[] { R.id.flag_icon, R.id.flag_text }));
mListPop.setWidth(v.getRootView().getWidth() / 2);
mListPop.setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);
// 设置是否是模式
mListPop.setModal(true);
}
mListPop.setOnItemClickListener((parent, view, position1, id) -> {
CollectionTask.launchCollectionTask(DISMISS_MULTI, flagCardHandler(), new TaskData(new Object[] { new long[] { (long) v.getTag() }, Collection.DismissType.FLAG, position1 }));
notifyDataSetChanged();
mListPop.dismiss();
});
mListPop.setAnchorView(v);
mListPop.show();
});
holder.itemRoot.setOnClickListener(v -> {
Intent previewer = new Intent(mContext, Previewer.class);
long[] ids = getAllCardIds();
long targetId = (long) v.getTag();
// }
for (int i = 0; i < ids.length; i++) {
if (ids[i] == targetId) {
previewer.putExtra("index", i);
break;
}
}
previewer.putExtra("cardList", ids);
mContext.startActivityForResultWithoutAnimation(previewer, PREVIEW_CARDS);
});
// holder.itemRoot.setOnLongClickListener(mDeckLongClickListener);
} else if (tempHolder instanceof BrowserTabViewHolder) {
BrowserTabViewHolder holder = (BrowserTabViewHolder) tempHolder;
String[] tabArray = mContext.getResources().getStringArray(R.array.deck_info_browser_tab);
holder.cardsCount.setText(String.format("筛选出%d张卡片", mCards.size()));
// CardsListAdapter mCardsAdapter = new CardsListAdapter(mContext.getLayoutInflater(), mContext, new CardsListAdapter.CardListAdapterCallback() {
// @Override
// public List<CardBrowser.CardCache> getCards() {
// if (mCards == null) {
// mCards = new ArrayList<>();
// }
// return mCards;
// }
//
//
// @Override
// public void onChangeMultiMode(boolean isMultiMode) {
// }
//
//
// @Override
// public void onItemSelect(int count) {
// }
// });
// mCardsAdapter.setStudyCountLayoutRes(R.layout.item_option_study_count);
// mCardsAdapter.setDeckClickListener(view -> {
// Intent previewer = new Intent(mContext, Previewer.class);
// long[] ids = getAllCardIds();
// long targetId = (long) view.getTag();
// if (ids.length > 100) {
// //为提高效率 直接复制卡牌
// long[] finalIds = new long[ids.length + 1];
// finalIds[0] = targetId;
// System.arraycopy(ids, 0, finalIds, 1, ids.length);
// previewer.putExtra("cardList", finalIds);
// } else {
// for (int i = 0; i < ids.length; i++) {
// if (ids[i] == targetId) {
// ids[i] = ids[0];
// ids[0] = targetId;
// }
// }
// previewer.putExtra("cardList", ids);
// }
// previewer.putExtra("index", 0);
// mContext.startActivityForResultWithoutAnimation(previewer, PREVIEW_CARDS);
// });
// holder.mList .setAdapter(mCardsAdapter);
// holder.mList.setRecycledViewPool(new RecyclerView.RecycledViewPool());
// holder.mList.setNestedScrollingEnabled(false);
// holder.mList.setHasFixedSize(true);
// holder.mList.setLayoutManager(new LinearLayoutManager(mContext));
holder.mMore.setTag(SelfStudyActivity.TAB_MAIN_STATE);
holder.mFixBottom.setVisibility(mDeckList.isEmpty() ? View.GONE : View.VISIBLE);
holder.mMore.setOnClickListener(mSelfStudyClickListener);
holder.mTabLayout.removeAllTabs();
LinearLayout linearLayout = (LinearLayout) holder.mTabLayout.getChildAt(0);
linearLayout.setShowDividers(LinearLayout.SHOW_DIVIDER_MIDDLE);
linearLayout.setDividerDrawable(ContextCompat.getDrawable(mContext, // 设置分割线的样式
R.drawable.divider_vertical));
// 设置分割线间隔
linearLayout.setDividerPadding((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 18, mContext.getResources().getDisplayMetrics()));
for (int i = 0; i < tabArray.length; i++) {
TabLayout.Tab tab = holder.mTabLayout.newTab();
View view = mContext.getLayoutInflater().inflate(R.layout.item_option_tab, null);
((TextView) view.findViewById(R.id.name)).setText(tabArray[i]);
tab.setCustomView(view);
view.setTag(i);
int finalI = i;
view.setOnClickListener(v -> {
if (mContext.colIsOpen()) {
mCurrentSelectedTab = finalI;
holder.mTabLayout.selectTab(holder.mTabLayout.getTabAt(finalI));
// estimate maximum number of cards that could be visible (assuming worst-case minimum row height of 20dp)
int numCardsToRender = (int) Math.ceil(holder.mList.getHeight() / TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, mContext.getResources().getDisplayMetrics())) + 5;
Timber.i("I wanna get %d cards", numCardsToRender);
// Perform database query to get all card ids
mSearchCardsHandler = new SearchCardsHandler();
String searchText = getRestrictByTab(finalI) + "deck:\"" + mCurrentDeck.getString("name") + "\" ";
CollectionTask.launchCollectionTask(SEARCH_CARDS, mSearchCardsHandler, new TaskData(new Object[] { searchText, true, numCardsToRender, 0, 0 }));
}
});
holder.mTabLayout.addTab(tab);
}
holder.mTabLayout.selectTab(holder.mTabLayout.getTabAt(mCurrentSelectedTab));
if (!mInitBrowserCards) {
mInitBrowserCards = true;
holder.mTabLayout.getTabAt(0).getCustomView().performClick();
}
}
}
}
use of com.ichi2.anki.AbstractFlashcardViewer.DECK_OPTIONS in project AnkiChinaAndroid by ankichinateam.
the class StudyOptionsFragment method onMenuItemClick.
@SuppressWarnings("deprecation")
@Override
public boolean onMenuItemClick(MenuItem item) {
switch(item.getItemId()) {
case R.id.action_browser:
{
Timber.i("DeckPicker:: Old browser button pressed");
getAnkiActivity().openOldCardBrowser();
return true;
}
case R.id.action_undo:
Timber.i("StudyOptionsFragment:: Undo button pressed");
CollectionTask.launchCollectionTask(UNDO, undoListener);
return true;
case R.id.action_deck_options:
Timber.i("StudyOptionsFragment:: Deck options button pressed");
if (getCol().getDecks().isDyn(getCol().getDecks().selected())) {
openFilteredDeckOptions();
} else {
Intent i = new Intent(getActivity(), DeckOptions.class);
getActivity().startActivityForResult(i, DECK_OPTIONS);
ActivityTransitionAnimation.slide(getActivity(), ActivityTransitionAnimation.FADE);
}
return true;
case R.id.action_setting:
Timber.i("StudyOptionsFragment:: Deck setting button pressed");
Intent i = new Intent(getActivity(), StudySettingActivity.class);
getActivity().startActivityForResult(i, DECK_OPTIONS);
ActivityTransitionAnimation.slide(getActivity(), ActivityTransitionAnimation.FADE);
return true;
case R.id.action_custom_study:
Timber.i("StudyOptionsFragment:: custom study button pressed");
showCustomStudyContextMenu();
return true;
case R.id.action_unbury:
Timber.i("StudyOptionsFragment:: unbury button pressed");
getCol().getSched().unburyCardsForDeck();
refreshInterfaceAndDecklist(true);
item.setVisible(false);
return true;
case R.id.action_rebuild:
Timber.i("StudyOptionsFragment:: rebuild cram deck button pressed");
mProgressDialog = StyledProgressDialog.show(getActivity(), "", getResources().getString(R.string.rebuild_filtered_deck), true);
CollectionTask.launchCollectionTask(REBUILD_CRAM, getCollectionTaskListener(true));
return true;
case R.id.action_empty:
Timber.i("StudyOptionsFragment:: empty cram deck button pressed");
mProgressDialog = StyledProgressDialog.show(getActivity(), "", getResources().getString(R.string.empty_filtered_deck), false);
CollectionTask.launchCollectionTask(EMPTY_CRAM, getCollectionTaskListener(true));
return true;
case R.id.action_rename:
((AnkiActivity) getActivity()).renameDeckDialog(getCol().getDecks().selected());
return true;
case R.id.action_delete:
getAnkiActivity().mContextMenuDid = getCol().getDecks().selected();
((AnkiActivity) getActivity()).confirmDeckDeletion(getCol().getDecks().selected());
return true;
case R.id.action_export:
((AnkiActivity) getActivity()).exportDeck(getCol().getDecks().selected());
return true;
case R.id.action_add_card:
addNote();
return true;
case R.id.create_deck:
getAnkiActivity().mContextMenuDid = getCol().getDecks().selected();
((AnkiActivity) getActivity()).createSubdeckDialog();
return true;
case // 停止/恢复
R.id.action_suspend:
mDeckIsStopped = deckIsStopped();
if (mDeckIsStopped) {
customDialog = new CustomStyleDialog.Builder(getAnkiActivity()).setTitle("恢复学习").setMessage("恢复学习后将每天新卡数和复习数值调整成默认值,请确认是否开始学习").setPositiveButton("确定", (dialog, which) -> {
resumeDeckStudy();
dialog.dismiss();
}).setNegativeButton("取消", (dialog, which) -> dialog.dismiss()).create();
} else {
customDialog = new CustomStyleDialog.Builder(getAnkiActivity()).setTitle("停止学习").setMessage("暂停学习将会自动把每天新卡数和复习数调整为零,适用于有事暂停一两周不学习,若该记忆库学习的时长不超过2个月,又暂停了30天未学习,建议重设进度,重新开始学习").setPositiveButton("确定", (dialog, which) -> {
stopDeckStudy();
dialog.dismiss();
}).setNegativeButton("取消", (dialog, which) -> dialog.dismiss()).create();
}
customDialog.show();
return true;
case // 重设学习进度
R.id.action_reset_card_progress:
customDialog = new CustomStyleDialog.Builder(getAnkiActivity()).setTitle("重设学习进度").setMessage("重设学习进度后,该记忆库的所有卡片学习记录都会被清除,请谨慎操作").setPositiveButton("确定", (dialog, which) -> {
CollectionTask.launchCollectionTask(RESET_DECK, new ResetCardHandler(StudyOptionsFragment.this), new TaskData(new Object[] { "deck:\"" + getCol().getDecks().current().getString("name") + "\" " }));
dialog.dismiss();
}).setNegativeButton("取消", (dialog, which) -> dialog.dismiss()).create();
customDialog.show();
return true;
default:
return false;
}
}
use of com.ichi2.anki.AbstractFlashcardViewer.DECK_OPTIONS in project AnkiChinaAndroid by ankichinateam.
the class AbstractFlashcardViewer method onActivityResult.
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
Timber.i("onActivityResult:" + requestCode);
if (requestCode == BE_VIP || requestCode == REFRESH_LOGIN_STATE_AND_TURN_TO_VIP_HTML) {
mRefreshVipStateOnResume = true;
mTurnToVipHtml = requestCode == REFRESH_LOGIN_STATE_AND_TURN_TO_VIP_HTML;
} else if (requestCode == REFRESH_VOICE_INFO) {
mRefreshVoiceInfoStateOnResume = true;
} else if (resultCode == DeckPicker.RESULT_DB_ERROR) {
closeReviewer(DeckPicker.RESULT_DB_ERROR, false);
} else if (resultCode == DeckPicker.RESULT_MEDIA_EJECTED) {
finishNoStorageAvailable();
} else if (requestCode == REFRESH_TOP_BUTTONS) {
restorePreferences();
supportInvalidateOptionsMenu();
invalidateOptionsMenu();
} else if (requestCode == REQUEST_CODE_SPEAK_SETTING) {
restorePreferences();
mReInitBDVoice = true;
} else if (requestCode == REFRESH_GESTURE) {
restorePreferences();
} else if (requestCode == REFRESH_CONTROLLER) {
restorePreferences();
}
/* Reset the schedule and reload the latest card off the top of the stack if required.
The card could have been rescheduled, the deck could have changed, or a change of
note type could have lead to the card being deleted */
if (data != null && data.hasExtra("reloadRequired")) {
performReload();
}
if (requestCode == EDIT_CURRENT_CARD) {
if (resultCode == RESULT_OK) {
// content of note was changed so update the note and current card
Timber.i("AbstractFlashcardViewer:: Saving card...");
CollectionTask.launchCollectionTask(UPDATE_NOTE, mUpdateCardHandler, new TaskData(sEditorCard, true));
onEditedNoteChanged();
} else if (resultCode == RESULT_CANCELED && !(data != null && data.hasExtra("reloadRequired"))) {
// nothing was changed by the note editor so just redraw the card
redrawCard();
}
} else if (requestCode == DECK_OPTIONS && resultCode == RESULT_OK) {
performReload();
}
if (!mDisableClipboard) {
clipboardSetText("");
}
}
use of com.ichi2.anki.AbstractFlashcardViewer.DECK_OPTIONS in project AnkiChinaAndroid by ankichinateam.
the class CustomStudyDialog method buildContextMenu.
/**
* Build a context menu for custom study
*
* @param id
* @return
*/
private MaterialDialog buildContextMenu(int id) {
int[] listIds = getListIds(id);
final boolean jumpToReviewer = getArguments().getBoolean("jumpToReviewer");
return new MaterialDialog.Builder(this.getActivity()).title(R.string.custom_study).cancelable(true).itemsIds(listIds).items(ContextMenuHelper.getValuesFromKeys(getKeyValueMap(), listIds)).itemsCallback(new MaterialDialog.ListCallback() {
@Override
public void onSelection(MaterialDialog materialDialog, View view, int which, CharSequence charSequence) {
AnkiActivity activity = getAnkiActivity();
switch(view.getId()) {
case DECK_OPTIONS:
{
// User asked to permanently change the deck options
Intent i = new Intent(activity, DeckOptions.class);
i.putExtra("did", getArguments().getLong("did"));
getActivity().startActivity(i);
break;
}
case MORE_OPTIONS:
{
// User asked to see all custom study options
CustomStudyDialog d = CustomStudyDialog.newInstance(CONTEXT_MENU_STANDARD, getArguments().getLong("did"), jumpToReviewer, listener);
activity.showDialogFragment(d);
break;
}
case CUSTOM_STUDY_TAGS:
{
/*
* This is a special Dialog for CUSTOM STUDY, where instead of only collecting a
* number, it is necessary to collect a list of tags. This case handles the creation
* of that Dialog.
*/
long currentDeck = getArguments().getLong("did");
TagsDialog dialogFragment = TagsDialog.newInstance(TagsDialog.TYPE_CUSTOM_STUDY_TAGS, new ArrayList<String>(), new ArrayList<>(activity.getCol().getTags().byDeck(currentDeck, true)));
dialogFragment.setTagsDialogListener(CustomStudyDialog.this::customStudyFromTags);
activity.showDialogFragment(dialogFragment);
break;
}
default:
{
// User asked for a standard custom study option
CustomStudyDialog d = CustomStudyDialog.newInstance(view.getId(), getArguments().getLong("did"), jumpToReviewer, listener);
getAnkiActivity().showDialogFragment(d);
}
}
}
}).build();
}
Aggregations