/** Update relative delays based on current time. */ private void rebuildQueue() { Cursor cursor = null; Log.i(TAG, "rebuildQueue - Rebuilding query..."); // Setup global/daily stats globalStats = Stats.globalStats(this); dailyStats = Stats.dailyStats(this); // Mark due cards and update counts checkDue(); // Invalid card count // Determine new card distribution if (newCardSpacing == NEW_CARDS_DISTRIBUTE) { if (newCountToday > 0) { newCardModulus = (newCountToday + revCount) / newCountToday; // If there are cards to review, ensure modulo >= 2 if (revCount > 0) newCardModulus = Math.max(2, newCardModulus); } else { newCardModulus = 0; } } else newCardModulus = 0; Log.i(TAG, "newCardModulus set to " + newCardModulus); try { cursor = AnkiDb.database.rawQuery("SELECT avg(factor) " + "FROM cards " + "WHERE type = 1", null); if (!cursor.moveToFirst()) averageFactor = Deck.initialFactor; else averageFactor = cursor.getDouble(0); } finally { if (cursor != null) cursor.close(); } averageFactor = Math.max(averageFactor, minimumAverage); // Recache CSS // rebuildCSS(); }