0
0
mirror of https://github.com/ankidroid/Anki-Android.git synced 2024-09-20 20:03:05 +02:00

refactor: Use androidx Activity APIs in CardBrowser

This commit is contained in:
Nicola Dardanis 2021-04-17 19:46:16 +02:00 committed by Mike Hardy
parent 386e2674a4
commit d9dcbb9870

View File

@ -170,8 +170,46 @@ public class CardBrowser extends NavigationDrawerActivity implements
/** The next deck for the "Change Deck" operation */
private long mNewDid;
private static final int EDIT_CARD = 0;
private static final int ADD_NOTE = 1;
ActivityResultLauncher<Intent> mOnEditCardActivityResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Timber.d("onEditCardActivityResult: resultCode=%d", result.getResultCode());
if (result.getResultCode() == DeckPicker.RESULT_DB_ERROR) {
closeCardBrowser(DeckPicker.RESULT_DB_ERROR);
}
if (result.getResultCode() != RESULT_CANCELED) {
Timber.i("CardBrowser:: CardBrowser: Saving card...");
TaskManager.launchCollectionTask(new CollectionTask.UpdateNote(sCardBrowserCard, false, false),
updateCardHandler());
}
Intent data = result.getData();
if (data != null &&
(data.getBooleanExtra("reloadRequired", false) || data.getBooleanExtra("noteChanged", false))) {
// if reloadRequired or noteChanged flag was sent from note editor then reload card list
searchCards();
mShouldRestoreScroll = true;
// in use by reviewer?
if (getReviewerCardId() == mCurrentCardId) {
mReloadRequired = true;
}
}
invalidateOptionsMenu(); // maybe the availability of undo changed
});
ActivityResultLauncher<Intent> mOnAddNoteActivityResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Timber.d("onAddNoteActivityResult: resultCode=%d", result.getResultCode());
if (result.getResultCode() == DeckPicker.RESULT_DB_ERROR) {
closeCardBrowser(DeckPicker.RESULT_DB_ERROR);
}
if (result.getResultCode() == RESULT_OK) {
if (mSearchView != null) {
mSearchTerms = mSearchView.getQuery().toString();
searchCards();
} else {
Timber.w("Note was added from browser and on return mSearchView == null");
}
}
invalidateOptionsMenu(); // maybe the availability of undo changed
});
ActivityResultLauncher<Intent> mOnPreviewCardsActivityResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), result -> {
Timber.d("onPreviewCardsActivityResult: resultCode=%d", result.getResultCode());
@ -808,10 +846,10 @@ public class CardBrowser extends NavigationDrawerActivity implements
mCurrentCardId = cardId;
sCardBrowserCard = getCol().getCard(mCurrentCardId);
// start note editor using the card we just loaded
Intent editCard = new Intent(this, NoteEditor.class);
editCard.putExtra(NoteEditor.EXTRA_CALLER, NoteEditor.CALLER_CARDBROWSER_EDIT);
editCard.putExtra(NoteEditor.EXTRA_CARD_ID, sCardBrowserCard.getId());
startActivityForResultWithAnimation(editCard, EDIT_CARD, START);
Intent editCard = new Intent(this, NoteEditor.class)
.putExtra(NoteEditor.EXTRA_CALLER, NoteEditor.CALLER_CARDBROWSER_EDIT)
.putExtra(NoteEditor.EXTRA_CARD_ID, sCardBrowserCard.getId());
this.launchActivityForResultWithAnimation(editCard, mOnEditCardActivityResult, START);
//#6432 - FIXME - onCreateOptionsMenu crashes if receiving an activity result from edit card when in multiselect
endMultiSelectMode();
}
@ -1362,46 +1400,7 @@ public class CardBrowser extends NavigationDrawerActivity implements
}
private void addNoteFromCardBrowser() {
startActivityForResultWithAnimation(getAddNoteIntent(), ADD_NOTE, START);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// FIXME:
Timber.d("onActivityResult(requestCode=%d, resultCode=%d)", requestCode, resultCode);
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == DeckPicker.RESULT_DB_ERROR) {
closeCardBrowser(DeckPicker.RESULT_DB_ERROR);
}
if (requestCode == EDIT_CARD && resultCode != RESULT_CANCELED) {
Timber.i("CardBrowser:: CardBrowser: Saving card...");
TaskManager.launchCollectionTask(new CollectionTask.UpdateNote(sCardBrowserCard, false, false),
updateCardHandler());
} else if (requestCode == ADD_NOTE && resultCode == RESULT_OK) {
if (mSearchView != null) {
mSearchTerms = mSearchView.getQuery().toString();
searchCards();
} else {
Timber.w("Note was added from browser and on return mSearchView == null");
}
}
if (requestCode == EDIT_CARD && data != null &&
(data.getBooleanExtra("reloadRequired", false) ||
data.getBooleanExtra("noteChanged", false))) {
// if reloadRequired or noteChanged flag was sent from note editor then reload card list
searchCards();
mShouldRestoreScroll = true;
// in use by reviewer?
if (getReviewerCardId() == mCurrentCardId) {
mReloadRequired = true;
}
}
invalidateOptionsMenu(); // maybe the availability of undo changed
this.launchActivityForResultWithAnimation(getAddNoteIntent(), mOnAddNoteActivityResult, START);
}