mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 12:02:16 +02:00
Proper suspension of card
This commit is contained in:
parent
44531ff430
commit
e4c6021e4a
@ -58,6 +58,7 @@ import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
import android.widget.ToggleButton;
|
||||
|
||||
import com.ichi2.anki.DeckTask.TaskData;
|
||||
import com.ichi2.utils.DiffEngine;
|
||||
import com.tomgibara.android.veecheck.util.PrefSettings;
|
||||
|
||||
@ -415,7 +416,10 @@ public class Ankidroid extends Activity
|
||||
startActivity( opts );
|
||||
return true;
|
||||
case MENU_SUSPEND:
|
||||
currentCard.suspend();
|
||||
mFlipCard.setChecked(true);
|
||||
DeckTask.launchDeckTask(DeckTask.TASK_TYPE_SUSPEND_CARD,
|
||||
mAnswerCardHandler,
|
||||
new DeckTask.TaskData(0, AnkidroidApp.deck(), currentCard));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
@ -476,10 +476,4 @@ public class Card {
|
||||
AnkiDb.database.execSQL("UPDATE cards SET priority = 0, isDue = 0 WHERE id = " + id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Suspend this card.
|
||||
*/
|
||||
public void suspend() {
|
||||
isDue = 0;
|
||||
}
|
||||
}
|
||||
|
@ -1130,7 +1130,44 @@ public class Deck
|
||||
|
||||
/* Priorities
|
||||
***********************************************************/
|
||||
|
||||
public void suspendCard(long cardId)
|
||||
{
|
||||
long[] ids = new long[1];
|
||||
ids[0] = cardId;
|
||||
suspendCards(ids);
|
||||
}
|
||||
|
||||
public void suspendCards(long[] ids)
|
||||
{
|
||||
AnkiDb.database.execSQL(
|
||||
"UPDATE cards SET " +
|
||||
"isDue = 0, " +
|
||||
"priority = -3, " +
|
||||
"modified = " + String.format("%f", (double) (System.currentTimeMillis() / 1000.0)) +
|
||||
" WHERE id IN " + ids2str(ids));
|
||||
rebuildCounts(false);
|
||||
flushMod();
|
||||
}
|
||||
|
||||
public void unsuspendCard(long cardId)
|
||||
{
|
||||
long[] ids = new long[1];
|
||||
ids[0] = cardId;
|
||||
unsuspendCards(ids);
|
||||
}
|
||||
|
||||
public void unsuspendCards(long[] ids)
|
||||
{
|
||||
AnkiDb.database.execSQL(
|
||||
"UPDATE cards SET " +
|
||||
"priority = 0, " +
|
||||
"modified = " + String.format("%f", (double) (System.currentTimeMillis() / 1000.0)) +
|
||||
" WHERE id IN " + ids2str(ids));
|
||||
updatePriorities(ids);
|
||||
rebuildCounts(false);
|
||||
flushMod();
|
||||
}
|
||||
|
||||
private void updatePriorities(long[] cardIds) {
|
||||
updatePriorities(cardIds, null, true);
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ public class DeckTask extends AsyncTask<DeckTask.TaskData, DeckTask.TaskData, De
|
||||
|
||||
public static final int TASK_TYPE_LOAD_DECK = 0;
|
||||
public static final int TASK_TYPE_ANSWER_CARD = 1;
|
||||
public static final int TASK_TYPE_SUSPEND_CARD = 2;
|
||||
|
||||
private static DeckTask instance;
|
||||
|
||||
@ -67,6 +68,8 @@ public class DeckTask extends AsyncTask<DeckTask.TaskData, DeckTask.TaskData, De
|
||||
return doInBackgroundLoadDeck(params);
|
||||
case TASK_TYPE_ANSWER_CARD:
|
||||
return doInBackgroundAnswerCard(params);
|
||||
case TASK_TYPE_SUSPEND_CARD:
|
||||
return doInBackgroundSuspendCard(params);
|
||||
default:
|
||||
return null;
|
||||
}
|
||||
@ -149,6 +152,30 @@ public class DeckTask extends AsyncTask<DeckTask.TaskData, DeckTask.TaskData, De
|
||||
return new TaskData(Ankidroid.DECK_EMPTY);
|
||||
}
|
||||
}
|
||||
|
||||
private TaskData doInBackgroundSuspendCard(TaskData... params)
|
||||
{
|
||||
long start, stop;
|
||||
Deck deck = params[0].getDeck();
|
||||
Card oldCard = params[0].getCard();
|
||||
Card newCard;
|
||||
|
||||
if (oldCard != null)
|
||||
{
|
||||
start = System.currentTimeMillis();
|
||||
deck.suspendCard(oldCard.id);
|
||||
stop = System.currentTimeMillis();
|
||||
Log.v(TAG, "doInBackgroundSuspendCard - Suspended card in " + (stop - start) + " ms.");
|
||||
}
|
||||
|
||||
start = System.currentTimeMillis();
|
||||
newCard = deck.getCard();
|
||||
stop = System.currentTimeMillis();
|
||||
Log.v(TAG, "doInBackgroundSuspendCard - Loaded new card in " + (stop - start) + " ms.");
|
||||
publishProgress(new TaskData(newCard));
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public static interface TaskListener
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user