Skip to content

Commit d127e55

Browse files
authored
Merge branch 'master' into js-api-version
2 parents 870f155 + a16a795 commit d127e55

342 files changed

Lines changed: 1773 additions & 1370 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.travis.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ env:
1818
- ANDROID_TOOLS_URL="https://dl.google.com/android/repository/sdk-tools-linux-4333796.zip"
1919
- EMU_FLAVOR=default # use google_apis flavor if no default flavor emulator
2020
- LOCALE="NONE"
21-
- GRAVIS_REPO="https://github.com/mikehardy/Gravis-CI.git"
21+
- GRAVIS_REPO="https://github.com/DanySK/Gravis-CI.git"
2222
- GRAVIS="$HOME/gravis"
2323
- JDK="1.8"
2424
- TOOLS=${ANDROID_HOME}/tools
@@ -87,7 +87,7 @@ before_install:
8787
# It should not make assumptions about os platform or desired tool installation
8888

8989
# Set up JDK 8 for Android SDK - Java is universally needed: codacy, unit tests, emulators
90-
- travis_retry git clone --single-branch --branch resilience --depth 1 $GRAVIS_REPO $GRAVIS
90+
- travis_retry git clone --depth 1 $GRAVIS_REPO $GRAVIS
9191
- export TARGET_JDK="${JDK}"
9292
- JDK="1.8"
9393
- source $GRAVIS/install-jdk

AnkiDroid/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ android {
4141
//
4242
// This ensures the correct ordering between the various types of releases (dev < alpha < beta < release) which is
4343
// needed for upgrades to be offered correctly.
44-
versionCode=21200120
45-
versionName="2.12alpha20"
44+
versionCode=21300100
45+
versionName="2.13alpha00"
4646
minSdkVersion 16
4747
//noinspection OldTargetApi - also performed in api/build.fradle
4848
targetSdkVersion 28

AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/DBTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ public void testDBCorruption() throws Exception {
7171

7272

7373
// Test fixture that lets us inspect corruption handler status
74-
public class TestDB extends DB {
74+
public static class TestDB extends DB {
7575

7676
private boolean databaseIsCorrupt = false;
7777

AnkiDroid/src/androidTest/java/com/ichi2/anki/tests/libanki/HttpTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void testLogin() {
6868
}
6969

7070

71-
public class TestTaskListener implements Connection.TaskListener {
71+
public static class TestTaskListener implements Connection.TaskListener {
7272

7373
private Connection.Payload mPayload;
7474
private boolean mDisconnectedCalled = false;

AnkiDroid/src/main/java/com/ichi2/anki/AbstractFlashcardViewer.java

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@
140140
import static com.ichi2.anki.cardviewer.CardAppearance.calculateDynamicFontSize;
141141
import static com.ichi2.anki.cardviewer.ViewerCommand.*;
142142
import static com.ichi2.anki.reviewer.CardMarker.*;
143+
import static com.ichi2.async.CollectionTask.TASK_TYPE.*;
143144

144145
@SuppressWarnings({"PMD.AvoidThrowingRawExceptionTypes","PMD.FieldDeclarationsShouldBeAtStartOfClass"})
145146
public abstract class AbstractFlashcardViewer extends NavigationDrawerActivity implements ReviewerUi, CommandProcessor {
@@ -1085,23 +1086,23 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
10851086
note type could have lead to the card being deleted */
10861087
if (data != null && data.hasExtra("reloadRequired")) {
10871088
getCol().getSched().deferReset();
1088-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_ANSWER_CARD, mAnswerCardHandler(false),
1089+
CollectionTask.launchCollectionTask(ANSWER_CARD, mAnswerCardHandler(false),
10891090
new CollectionTask.TaskData(null, 0));
10901091
}
10911092

10921093
if (requestCode == EDIT_CURRENT_CARD) {
10931094
if (resultCode == RESULT_OK) {
10941095
// content of note was changed so update the note and current card
10951096
Timber.i("AbstractFlashcardViewer:: Saving card...");
1096-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_UPDATE_NOTE, mUpdateCardHandler,
1097+
CollectionTask.launchCollectionTask(UPDATE_NOTE, mUpdateCardHandler,
10971098
new CollectionTask.TaskData(sEditorCard, true));
10981099
} else if (resultCode == RESULT_CANCELED && !(data!=null && data.hasExtra("reloadRequired"))) {
10991100
// nothing was changed by the note editor so just redraw the card
11001101
redrawCard();
11011102
}
11021103
} else if (requestCode == DECK_OPTIONS && resultCode == RESULT_OK) {
11031104
getCol().getSched().deferReset();
1104-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_ANSWER_CARD, mAnswerCardHandler(false),
1105+
CollectionTask.launchCollectionTask(ANSWER_CARD, mAnswerCardHandler(false),
11051106
new CollectionTask.TaskData(null, 0));
11061107
}
11071108
if (!mDisableClipboard) {
@@ -1191,7 +1192,7 @@ private void resumeTimer() {
11911192

11921193
protected void undo() {
11931194
if (isUndoAvailable()) {
1194-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_UNDO, mAnswerCardHandler(false));
1195+
CollectionTask.launchCollectionTask(UNDO, mAnswerCardHandler(false));
11951196
}
11961197
}
11971198

@@ -1344,7 +1345,7 @@ protected void answerCard(int ease) {
13441345
mSoundPlayer.stopSounds();
13451346
mCurrentEase = ease;
13461347

1347-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_ANSWER_CARD, mAnswerCardHandler(true),
1348+
CollectionTask.launchCollectionTask(ANSWER_CARD, mAnswerCardHandler(true),
13481349
new CollectionTask.TaskData(mCurrentCard, mCurrentEase));
13491350
}
13501351

@@ -2624,7 +2625,7 @@ protected boolean isUndoAvailable() {
26242625
/**
26252626
* Provides a hook for calling "alert" from javascript. Useful for debugging your javascript.
26262627
*/
2627-
public final class AnkiDroidWebChromeClient extends WebChromeClient {
2628+
public static final class AnkiDroidWebChromeClient extends WebChromeClient {
26282629
@Override
26292630
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
26302631
Timber.i("AbstractFlashcardViewer:: onJsAlert: %s", message);
@@ -3057,7 +3058,7 @@ protected void onFlag(Card card, @FlagDef int flag) {
30573058

30583059
protected void dismiss(Collection.DismissType type) {
30593060
blockControls(false);
3060-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS, mDismissCardHandler,
3061+
CollectionTask.launchCollectionTask(DISMISS, mDismissCardHandler,
30613062
new CollectionTask.TaskData(new Object[]{mCurrentCard, type}));
30623063
}
30633064

@@ -3451,7 +3452,7 @@ void handleUrlFromJavascript(String url) {
34513452

34523453
@VisibleForTesting
34533454
void loadInitialCard() {
3454-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_ANSWER_CARD, mAnswerCardHandler(false),
3455+
CollectionTask.launchCollectionTask(ANSWER_CARD, mAnswerCardHandler(false),
34553456
new CollectionTask.TaskData(null, 0));
34563457
}
34573458

@@ -3551,6 +3552,7 @@ public int ankiGetCardInterval() {
35513552
}
35523553

35533554
@JavascriptInterface
3555+
@Consts.CARD_QUEUE
35543556
public int ankiGetCardQueue() {
35553557
return mCurrentCard.getQueue();
35563558
}

AnkiDroid/src/main/java/com/ichi2/anki/AnkiDroidApp.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,8 @@ public void onCreate() {
239239
}
240240
Timber.tag(TAG);
241241

242+
Timber.d("Startup - Application Start");
243+
242244
// analytics after ACRA, they both install UncaughtExceptionHandlers but Analytics chains while ACRA does not
243245
UsageAnalytics.initialize(this);
244246
if (BuildConfig.DEBUG) {

AnkiDroid/src/main/java/com/ichi2/anki/CardBrowser.java

Lines changed: 23 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@
102102
import java.util.regex.Pattern;
103103

104104
import timber.log.Timber;
105+
import static com.ichi2.async.CollectionTask.TASK_TYPE.*;
105106

106107
public class CardBrowser extends NavigationDrawerActivity implements
107108
DeckDropDownAdapter.SubtitleListener {
@@ -676,8 +677,8 @@ private void openNoteEditorForCurrentlySelectedNote() {
676677
protected void onStop() {
677678
Timber.d("onStop()");
678679
// cancel rendering the question and answer, which has shared access to mCards
679-
CollectionTask.cancelTask(CollectionTask.TASK_TYPE_SEARCH_CARDS);
680-
CollectionTask.cancelTask(CollectionTask.TASK_TYPE_RENDER_BROWSER_QA);
680+
CollectionTask.cancelTask(SEARCH_CARDS);
681+
CollectionTask.cancelTask(RENDER_BROWSER_QA);
681682
super.onStop();
682683
if (!isFinishing()) {
683684
WidgetStatus.update(this);
@@ -862,7 +863,7 @@ private void updateMultiselectMenu() {
862863
}
863864

864865
if (!mCheckedCardPositions.isEmpty()) {
865-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_CHECK_CARD_SELECTION,
866+
CollectionTask.launchCollectionTask(CHECK_CARD_SELECTION,
866867
mCheckSelectedCardsHandler,
867868
new CollectionTask.TaskData(new Object[]{mCheckedCardPositions, getCards()}));
868869
}
@@ -884,7 +885,7 @@ private boolean hasSelectedAllCards() {
884885

885886

886887
private void flagTask (int flag) {
887-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS_MULTI,
888+
CollectionTask.launchCollectionTask(DISMISS_MULTI,
888889
mFlagCardHandler,
889890
new CollectionTask.TaskData(new Object[]{getSelectedCardIds(), Collection.DismissType.FLAG, new Integer (flag)}));
890891
}
@@ -978,7 +979,7 @@ public boolean onOptionsItemSelected(MenuItem item) {
978979

979980
case R.id.action_delete_card:
980981
if (mInMultiSelectMode) {
981-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS_MULTI,
982+
CollectionTask.launchCollectionTask(DISMISS_MULTI,
982983
mDeleteNoteHandler,
983984
new CollectionTask.TaskData(new Object[]{getSelectedCardIds(), Collection.DismissType.DELETE_NOTE_MULTI}));
984985

@@ -989,15 +990,15 @@ public boolean onOptionsItemSelected(MenuItem item) {
989990
return true;
990991

991992
case R.id.action_mark_card:
992-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS_MULTI,
993+
CollectionTask.launchCollectionTask(DISMISS_MULTI,
993994
mMarkCardHandler,
994995
new CollectionTask.TaskData(new Object[]{getSelectedCardIds(), Collection.DismissType.MARK_NOTE_MULTI}));
995996

996997
return true;
997998

998999

9991000
case R.id.action_suspend_card:
1000-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS_MULTI,
1001+
CollectionTask.launchCollectionTask(DISMISS_MULTI,
10011002
mSuspendCardHandler,
10021003
new CollectionTask.TaskData(new Object[]{getSelectedCardIds(), Collection.DismissType.SUSPEND_CARD_MULTI}));
10031004

@@ -1037,7 +1038,7 @@ public void onClick(DialogInterface dialog, int which) {
10371038

10381039
case R.id.action_undo:
10391040
if (getCol().undoAvailable()) {
1040-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_UNDO, mUndoHandler);
1041+
CollectionTask.launchCollectionTask(UNDO, mUndoHandler);
10411042
}
10421043
return true;
10431044
case R.id.action_select_none:
@@ -1073,7 +1074,7 @@ public void onClick(DialogInterface dialog, int which) {
10731074
dialog.setArgs(title, message);
10741075
Runnable confirm = () -> {
10751076
Timber.i("CardBrowser:: ResetProgress button pressed");
1076-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS_MULTI, mResetProgressCardHandler,
1077+
CollectionTask.launchCollectionTask(DISMISS_MULTI, mResetProgressCardHandler,
10771078
new CollectionTask.TaskData(new Object[]{getSelectedCardIds(), Collection.DismissType.RESET_CARDS}));
10781079
};
10791080
dialog.setConfirm(confirm);
@@ -1085,7 +1086,7 @@ public void onClick(DialogInterface dialog, int which) {
10851086

10861087
long[] selectedCardIds = getSelectedCardIds();
10871088
FunctionalInterfaces.Consumer<Integer> consumer = newDays ->
1088-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS_MULTI,
1089+
CollectionTask.launchCollectionTask(DISMISS_MULTI,
10891090
mRescheduleCardHandler,
10901091
new TaskData(new Object[]{selectedCardIds, Collection.DismissType.RESCHEDULE_CARDS, newDays}));
10911092

@@ -1124,7 +1125,7 @@ public void onClick(DialogInterface dialog, int which) {
11241125
getString(R.string.reposition_card_dialog_message),
11251126
5);
11261127
repositionDialog.setCallbackRunnable(days ->
1127-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS_MULTI, mRepositionCardHandler,
1128+
CollectionTask.launchCollectionTask(DISMISS_MULTI, mRepositionCardHandler,
11281129
new CollectionTask.TaskData(new Object[] {cardIds, Collection.DismissType.REPOSITION_CARDS, days}))
11291130
);
11301131
showDialogFragment(repositionDialog);
@@ -1153,7 +1154,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
11531154

11541155
if (requestCode == EDIT_CARD && resultCode != RESULT_CANCELED) {
11551156
Timber.i("CardBrowser:: CardBrowser: Saving card...");
1156-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_UPDATE_NOTE, mUpdateCardHandler,
1157+
CollectionTask.launchCollectionTask(UPDATE_NOTE, mUpdateCardHandler,
11571158
new CollectionTask.TaskData(sCardBrowserCard, false));
11581159
} else if (requestCode == ADD_NOTE && resultCode == RESULT_OK) {
11591160
if (mSearchView != null) {
@@ -1239,8 +1240,8 @@ public void onRestoreInstanceState(Bundle savedInstanceState) {
12391240

12401241
private void searchCards() {
12411242
// cancel the previous search & render tasks if still running
1242-
CollectionTask.cancelTask(CollectionTask.TASK_TYPE_SEARCH_CARDS);
1243-
CollectionTask.cancelTask(CollectionTask.TASK_TYPE_RENDER_BROWSER_QA);
1243+
CollectionTask.cancelTask(SEARCH_CARDS);
1244+
CollectionTask.cancelTask(RENDER_BROWSER_QA);
12441245
String searchText;
12451246
if (mSearchTerms == null) {
12461247
mSearchTerms = "";
@@ -1262,7 +1263,7 @@ private void searchCards() {
12621263
int numCardsToRender = (int) Math.ceil(mCardsListView.getHeight()/
12631264
TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, getResources().getDisplayMetrics())) + 5;
12641265
// Perform database query to get all card ids
1265-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_SEARCH_CARDS, mSearchCardsHandler, new CollectionTask.TaskData(
1266+
CollectionTask.launchCollectionTask(SEARCH_CARDS, mSearchCardsHandler, new CollectionTask.TaskData(
12661267
new Object[] {searchText, ((mOrder != CARD_ORDER_NONE)), numCardsToRender}));
12671268
}
12681269
}
@@ -1465,7 +1466,7 @@ protected void actualPostExecute(CollectionTask.TaskData result) {
14651466
mUndoSnackbar = UIUtils.showSnackbar(CardBrowser.this, String.format(getString(R.string.changed_deck_message), deckName), SNACKBAR_DURATION, R.string.undo, new View.OnClickListener() {
14661467
@Override
14671468
public void onClick(View v) {
1468-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_UNDO, mUndoHandler);
1469+
CollectionTask.launchCollectionTask(UNDO, mUndoHandler);
14691470
}
14701471
}, mCardsListView, null);
14711472
}
@@ -1647,7 +1648,7 @@ protected void actualPostExecute(CollectionTask.TaskData result) {
16471648
mUndoSnackbar = UIUtils.showSnackbar(CardBrowser.this, getString(R.string.deleted_message), SNACKBAR_DURATION, R.string.undo, new View.OnClickListener() {
16481649
@Override
16491650
public void onClick(View v) {
1650-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_UNDO, mUndoHandler);
1651+
CollectionTask.launchCollectionTask(UNDO, mUndoHandler);
16511652
}
16521653
}, mCardsListView, null);
16531654
}
@@ -1860,8 +1861,8 @@ public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCoun
18601861
long currentTime = SystemClock.elapsedRealtime ();
18611862
if ((currentTime - mLastRenderStart > 300 || lastVisibleItem >= totalItemCount)) {
18621863
mLastRenderStart = currentTime;
1863-
CollectionTask.cancelTask(CollectionTask.TASK_TYPE_RENDER_BROWSER_QA);
1864-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_RENDER_BROWSER_QA, mRenderQAHandler,
1864+
CollectionTask.cancelTask(RENDER_BROWSER_QA);
1865+
CollectionTask.launchCollectionTask(RENDER_BROWSER_QA, mRenderQAHandler,
18651866
new CollectionTask.TaskData(new Object[]{getCards(), firstVisibleItem, visibleItemCount}));
18661867
}
18671868
}
@@ -1875,7 +1876,7 @@ public void onScrollStateChanged(AbsListView listView, int scrollState) {
18751876
if (scrollState == SCROLL_STATE_IDLE) {
18761877
int startIdx = listView.getFirstVisiblePosition();
18771878
int numVisible = listView.getLastVisiblePosition() - startIdx;
1878-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_RENDER_BROWSER_QA, mRenderQAHandler,
1879+
CollectionTask.launchCollectionTask(RENDER_BROWSER_QA, mRenderQAHandler,
18791880
new CollectionTask.TaskData(new Object[]{getCards(), startIdx - 5, 2 * numVisible + 5}));
18801881
}
18811882
}
@@ -2237,7 +2238,7 @@ void clearCardData(int position) {
22372238

22382239
@VisibleForTesting(otherwise = VisibleForTesting.NONE)
22392240
void rerenderAllCards() {
2240-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_RENDER_BROWSER_QA, mRenderQAHandler,
2241+
CollectionTask.launchCollectionTask(RENDER_BROWSER_QA, mRenderQAHandler,
22412242
new CollectionTask.TaskData(new Object[]{getCards(), 0, mCards.size()-1}));
22422243
}
22432244

@@ -2296,7 +2297,7 @@ public List<Long> getCheckedCardIds() {
22962297
@VisibleForTesting(otherwise = VisibleForTesting.NONE) //should only be called from changeDeck()
22972298
void executeChangeCollectionTask(long[] ids, long newDid) {
22982299
mNewDid = newDid; //line required for unit tests, not necessary, but a noop in regular call.
2299-
CollectionTask.launchCollectionTask(CollectionTask.TASK_TYPE_DISMISS_MULTI, mChangeDeckHandler,
2300+
CollectionTask.launchCollectionTask(DISMISS_MULTI, mChangeDeckHandler,
23002301
new TaskData(new Object[]{ids, Collection.DismissType.CHANGE_DECK_MULTI, newDid}));
23012302
}
23022303

0 commit comments

Comments
 (0)