@Override public void onProgressUpdate(DeckTask.TaskData... values) { mAllCards.clear(); ArrayList<String[]> allCards = values[0].getAllCards(); if (allCards == null) { Resources res = getResources(); StyledDialog.Builder builder = new StyledDialog.Builder(CardBrowser.this); builder.setTitle(res.getString(R.string.error)); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setMessage(res.getString(R.string.card_browser_cardloading_error)); builder.setPositiveButton( res.getString(R.string.ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { CardBrowser.this.finish(); } }); builder.setOnCancelListener( new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { CardBrowser.this.finish(); } }); builder.create().show(); } else { for (String[] item : allCards) { // reshape Arabic words if (mPrefFixArabic) { item[1] = ArabicUtilities.reshapeSentence(item[1]); item[2] = ArabicUtilities.reshapeSentence(item[2]); } HashMap<String, String> data = new HashMap<String, String>(); data.put("id", item[0]); data.put("question", item[1]); data.put("answer", item[2]); data.put("marSus", item[3]); data.put("tags", item[4]); mAllCards.add(data); } updateCardsList(); } // This verification would not be necessary if // onConfigurationChanged it's executed correctly (which seems // that emulator does not do) if (mProgressDialog.isShowing()) { try { mProgressDialog.dismiss(); } catch (Exception e) { Log.e( AnkiDroidApp.TAG, "onPostExecute - Dialog dismiss Exception = " + e.getMessage()); } } }
@Override public void onProgressUpdate(DeckTask.TaskData... values) { if (canceled) { return; } ArrayList<HashMap<String, String>> cards = values[0].getCards(); if (cards == null) { Resources res = getResources(); StyledDialog.Builder builder = new StyledDialog.Builder(CardBrowser.this); builder.setTitle(res.getString(R.string.error)); builder.setIcon(android.R.drawable.ic_dialog_alert); builder.setMessage(res.getString(R.string.card_browser_cardloading_error)); builder.setPositiveButton( res.getString(R.string.ok), new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { closeCardBrowser(); } }); builder.setOnCancelListener( new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { closeCardBrowser(); } }); builder.create().show(); } else { if (mPrefFixArabic) { for (HashMap<String, String> entry : cards) { entry.put("sfld", ArabicUtilities.reshapeSentence(entry.get("sfld"))); } } try { int field = AnkiDroidApp.getSharedPrefs(getBaseContext()).getInt("cardBrowserField", 0); Card tempCard = mCol.getCard( Long.parseLong( cards.get(0).get("id"))); // Long.parseLong(mCards.get(0).get("id")) ArrayList<String> uniqueFields = new ArrayList<String>(); if (field > 0 && (mFields != null)) { for (HashMap<String, String> entry : cards) { tempCard = mCol.getCard(Long.parseLong(entry.get("id"))); String item = tempCard.note().getitem(mFields[field]); entry.put("sfld", item); if (!uniqueFields.contains(item)) { uniqueFields.add(item); mAllCards.add(entry); mCards.add(entry); } } } else { mAllCards.addAll(cards); mCards.addAll(cards); } if (mOrder == CARD_ORDER_NONE) { updateCardsList(); mProgressDialog.dismiss(); } else { DeckTask.launchDeckTask( DeckTask.TASK_TYPE_UPDATE_CARD_BROWSER_LIST, mSortCardsHandler, new DeckTask.TaskData(mAllCards, new HashMapCompare())); } } catch (OutOfMemoryError e) { Log.e(AnkiDroidApp.TAG, "CardBrowser: mLoadCardsHandler: OutOfMemoryError: " + e); Themes.showThemedToast( CardBrowser.this, getResources().getString(R.string.error_insufficient_memory), false); closeCardBrowser(); } } }