use of com.ichi2.libanki.Deck in project AnkiChinaAndroid by ankichinateam.
the class FilteredDeckOptions method onCreate.
@Override
// Tracked as #5019 on github
@SuppressWarnings("deprecation")
protected void onCreate(Bundle icicle) {
Themes.setThemeLegacy(this);
super.onCreate(icicle);
UsageAnalytics.sendAnalyticsScreenView(this);
mCol = CollectionHelper.getInstance().getCol(this);
if (mCol == null) {
finish();
return;
}
Bundle extras = getIntent().getExtras();
if (extras != null && extras.containsKey("did")) {
mDeck = mCol.getDecks().get(extras.getLong("did"));
} else {
mDeck = mCol.getDecks().current();
}
registerExternalStorageListener();
if (mCol == null || mDeck.getInt("dyn") != 1) {
Timber.w("No Collection loaded or deck is not a dyn deck");
finish();
return;
} else {
mPref = new DeckPreferenceHack();
mPref.registerOnSharedPreferenceChangeListener(this);
this.addPreferencesFromResource(R.xml.cram_deck_options);
this.buildLists();
this.updateSummaries();
}
// Set the activity title to include the name of the deck
String title = getResources().getString(R.string.deckpreferences_title);
if (title.contains("XXX")) {
try {
title = title.replace("XXX", mDeck.getString("name"));
} catch (JSONException e) {
title = title.replace("XXX", "???");
}
}
this.setTitle(title);
// Add a home button to the actionbar
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
use of com.ichi2.libanki.Deck in project AnkiChinaAndroid by ankichinateam.
the class DeckOptions method getOptionsGroupCount.
/**
* Returns the number of decks using the options group of the current deck.
*/
private int getOptionsGroupCount() {
int count = 0;
long conf = mDeck.getLong("conf");
for (Deck deck : mCol.getDecks().all()) {
if (deck.getInt("dyn") == 1) {
continue;
}
if (deck.getLong("conf") == conf) {
count++;
}
}
return count;
}
use of com.ichi2.libanki.Deck in project AnkiChinaAndroid by ankichinateam.
the class DeckPicker method repairCollection.
// Callback method to handle repairing deck
public void repairCollection() {
Timber.i("Repairing the Collection");
TaskListener listener = repairCollectionTask();
CollectionTask.launchCollectionTask(REPAIR_COLLECTION, listener);
}
use of com.ichi2.libanki.Deck in project AnkiChinaAndroid by ankichinateam.
the class DeckPicker method onActivityResult.
@SuppressWarnings("deprecation")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
super.onActivityResult(requestCode, resultCode, intent);
Timber.i("on activity result:%s", requestCode);
if (requestCode == REQUEST_PATH_UPDATE) {
// The collection path was inaccessible on startup so just close the activity and let user restart
finishWithoutAnimation();
} else if (resultCode == RESULT_MEDIA_EJECTED) {
this.onSdCardNotMounted();
return;
} else if (resultCode == RESULT_DB_ERROR) {
handleDbError();
return;
} else if (resultCode == RESULT_UPDATE_REST_SPACE) {
getAccount().getToken(getBaseContext(), new MyAccount.TokenCallback() {
@Override
public void onSuccess(String token) {
OKHttpUtil.get(Consts.ANKI_CHINA_BASE + Consts.API_VERSION + "clouds/current", token, new Object[] { "nothing", false }, checkRestServerSpaceListener);
}
@Override
public void onFail(String message) {
handleGetTokenFailed(message);
}
});
return;
}
if (requestCode == REPORT_ERROR) {
showStartupScreensAndDialogs(AnkiDroidApp.getSharedPrefs(this), 4);
} else if (requestCode == SHOW_INFO_WELCOME || requestCode == SHOW_INFO_NEW_VERSION) {
if (resultCode == RESULT_OK) {
showStartupScreensAndDialogs(AnkiDroidApp.getSharedPrefs(this), requestCode == SHOW_INFO_WELCOME ? 2 : 3);
} else {
finishWithAnimation(ActivityTransitionAnimation.DOWN);
}
} else if (requestCode == LOG_IN_FOR_SYNC) {
mRefreshVipStateOnResume = true;
mSyncOnResume = resultCode == RESULT_OK;
} else if ((requestCode == REQUEST_REVIEW || requestCode == SHOW_STUDYOPTIONS) && resultCode == Reviewer.RESULT_NO_MORE_CARDS) {
// Show a message when reviewing has finished
if (getCol().getSched().count() == 0) {
UIUtils.showSimpleSnackbar(this, R.string.studyoptions_congrats_finished, false);
} else {
UIUtils.showSimpleSnackbar(this, R.string.studyoptions_no_cards_due, false);
}
refreshDeckListUI(false);
} else if (requestCode == REQUEST_BROWSE_CARDS) {
// Store the selected deck after opening browser
if (intent != null && intent.getBooleanExtra("allDecksSelected", false)) {
AnkiDroidApp.getSharedPrefs(this).edit().putLong("browserDeckIdFromDeckPicker", -1L).apply();
} else {
long selectedDeck = getCol().getDecks().selected();
AnkiDroidApp.getSharedPrefs(this).edit().putLong("browserDeckIdFromDeckPicker", selectedDeck).apply();
}
}
if (requestCode == BE_VIP || requestCode == REFRESH_LOGIN_STATE_AND_TURN_TO_VIP_HTML || requestCode == SHOW_STUDYOPTIONS || requestCode == CHANGE_ACCOUNT) {
mRefreshVipStateOnResume = true;
mSyncOnResume = requestCode == CHANGE_ACCOUNT;
mTurnToVipHtml = requestCode == REFRESH_LOGIN_STATE_AND_TURN_TO_VIP_HTML;
} else {
getSupportFragmentManager().getFragments();
if (getSupportFragmentManager().getFragments().size() > 0) {
List<Fragment> fragments = getSupportFragmentManager().getFragments();
for (Fragment mFragment : fragments) {
mFragment.onActivityResult(requestCode, resultCode, intent);
}
}
}
}
use of com.ichi2.libanki.Deck in project AnkiChinaAndroid by ankichinateam.
the class DeckPicker method showBottomDialog.
private void showBottomDialog(MenuItem item) {
if (!Permissions.hasStorageAccessPermission(this)) {
firstCollectionOpen();
return;
}
// 1、使用Dialog、设置style
if (addMenuBottomDialog == null) {
addMenuBottomDialog = new Dialog(this, R.style.DialogTheme);
// 2、设置布局
View view = View.inflate(this, R.layout.dialog_bottom, null);
addMenuBottomDialog.setContentView(view);
addMenuBottomDialog.setOnDismissListener(dialog1 -> item.setIcon(R.mipmap.tab_bar_add_selected));
Window window = addMenuBottomDialog.getWindow();
// addMenuBottomDialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
// 设置弹出位置
window.setGravity(Gravity.BOTTOM);
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
WindowManager.LayoutParams lps = window.getAttributes();
lps.verticalMargin = 0.1f;
window.setAttributes(lps);
// 设置弹出动画
// window.setWindowAnimations(R.style.main_menu_animStyle);
// 设置对话框大小
final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
window.setLayout(ViewGroup.LayoutParams.WRAP_CONTENT, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 69, displayMetrics));
addMenuBottomDialog.findViewById(R.id.ll_add_card).setOnClickListener(view1 -> {
addMenuBottomDialog.dismiss();
Timber.i("Adding Note");
addNote();
});
addMenuBottomDialog.findViewById(R.id.ll_add_deck).setOnClickListener(view1 -> {
addMenuBottomDialog.dismiss();
mDialogEditText = new EditText(this);
mDialogEditText.setSingleLine(true);
// mDialogEditText.setFilters(new InputFilter[] { mDeckNameFilter });
new MaterialDialog.Builder(this).title(R.string.new_deck).positiveText(R.string.dialog_ok).customView(mDialogEditText, true).onPositive((dialog, which) -> {
String deckName = mDialogEditText.getText().toString();
if (Decks.isValidDeckName(deckName)) {
createNewDeck(deckName);
} else {
Timber.i("configureFloatingActionsMenu::addDeckButton::onPositiveListener - Not creating invalid deck name '%s'", deckName);
UIUtils.showThemedToast(this, getString(R.string.invalid_deck_name), false);
}
}).negativeText(R.string.dialog_cancel).show();
});
}
if (addMenuBottomDialog.isShowing()) {
addMenuBottomDialog.dismiss();
return;
}
item.setIcon(R.mipmap.tab_bar_add_normal);
addMenuBottomDialog.show();
}
Aggregations