From e4c6021e4a87364c148e2a5fe0021bd2963314d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Daniel=20Sv=C3=A4rd?= Date: Fri, 5 Feb 2010 20:37:32 +0100 Subject: [PATCH] Proper suspension of card --- src/com/ichi2/anki/Ankidroid.java | 6 ++++- src/com/ichi2/anki/Card.java | 6 ----- src/com/ichi2/anki/Deck.java | 39 ++++++++++++++++++++++++++++++- src/com/ichi2/anki/DeckTask.java | 27 +++++++++++++++++++++ 4 files changed, 70 insertions(+), 8 deletions(-) diff --git a/src/com/ichi2/anki/Ankidroid.java b/src/com/ichi2/anki/Ankidroid.java index 43e305cd77..074ac2e679 100644 --- a/src/com/ichi2/anki/Ankidroid.java +++ b/src/com/ichi2/anki/Ankidroid.java @@ -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; diff --git a/src/com/ichi2/anki/Card.java b/src/com/ichi2/anki/Card.java index 61c35d67d6..1b857b65f3 100644 --- a/src/com/ichi2/anki/Card.java +++ b/src/com/ichi2/anki/Card.java @@ -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; - } } diff --git a/src/com/ichi2/anki/Deck.java b/src/com/ichi2/anki/Deck.java index 8f85d65e88..5e17488abf 100644 --- a/src/com/ichi2/anki/Deck.java +++ b/src/com/ichi2/anki/Deck.java @@ -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); } diff --git a/src/com/ichi2/anki/DeckTask.java b/src/com/ichi2/anki/DeckTask.java index 030cc62658..c02a172e42 100644 --- a/src/com/ichi2/anki/DeckTask.java +++ b/src/com/ichi2/anki/DeckTask.java @@ -34,6 +34,7 @@ public class DeckTask extends AsyncTask