note updated counts when returning to deck browser

This commit is contained in:
Damien Elmes 2011-03-24 16:54:55 +09:00
parent b2a0398220
commit 90002a3073
3 changed files with 33 additions and 44 deletions

View file

@ -38,19 +38,24 @@ class DeckBrowser(object):
self._renderPage()
def _onClose(self):
print "onClose"
return
if deck.finishScheduler:
self.deck.finishScheduler()
self.deck.reset()
# update counts
for d in self.browserDecks:
if d['path'] == self.deck.path:
d['due'] = self.deck.failedSoonCount + self.deck.revCount
d['new'] = self.deck.newCount
d['mod'] = self.deck.modified
d['time'] = self.deck._dailyStats.reviewTime
d['reps'] = self.deck._dailyStats.reps
# update counts
deck = self.mw.deck
def add(d):
counts = deck.sched.counts()
d['due'] = counts[1]+counts[2]
d['new'] = counts[0]
d['mod'] = deck.mod
d['time'] = deck.sched.timeToday()
d['reps'] = deck.sched.repsToday()
d['name'] = deck.name()
for d in self._decks:
if d['path'] == deck.path:
add(d)
return
# not found; add new
d = {'path': deck.path, 'state': 'ok'}
add(d)
self._decks.append(d)
# Toolbar
##########################################################################

View file

@ -545,15 +545,19 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
##########################################################################
def onClose(self):
if self.inMainWindow() or not self.app.activeWindow():
aw = self.app.activeWindow()
if not aw or aw == self:
self.close()
else:
self.app.activeWindow().close()
aw.close()
def close(self, showBrowser=True):
"(Auto)save and close. Prompt if necessary. True if okay to proceed."
if not self.deck:
return
# if we were cramming, restore the standard scheduler
if self.deck.stdSched():
self.deck.reset()
runHook("deckClosing")
print "focusOut() should be handled with deckClosing now"
self.closeAllDeckWindows()
@ -562,16 +566,14 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
if showBrowser:
self.moveToState("deckBrowser")
def inMainWindow(self):
def raiseMain(self):
if not self.app.activeWindow():
# make sure window is shown
self.setWindowState(self.windowState() & ~Qt.WindowMinimized)
return True
# FIXME: no longer necessary?
return self.app.activeWindow() == self
def onNew(self, path=None, prompt=None):
if not self.inMainWindow() and not path: return
self.raiseMain()
self.close()
register = not path
bad = ":/\\"
@ -605,13 +607,9 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
else:
self.moveToState("deckBrowser")
return
self.deck = DeckStorage.Deck(path)
self.deck.initUndo()
self.deck.save()
self.loadDeck(path)
if register:
self.updateRecentFiles(self.deck.path)
self.browserLastRefreshed = 0
self.moveToState("initial")
def ensureSyncParams(self):
if not self.config['syncUsername'] or not self.config['syncPassword']:
@ -646,7 +644,7 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
self.config['syncPassword'] = unicode(passwd.text())
def onOpenOnline(self):
if not self.inMainWindow(): return
self.raiseMain()
self.ensureSyncParams()
self.close()
# we need a disk-backed file for syncing
@ -666,16 +664,16 @@ Debug info:\n%s""") % traceback.format_exc(), help="DeckErrors")
self.moveToState("initial")
def onGetSharedDeck(self):
if not self.inMainWindow(): return
self.raiseMain()
aqt.getshared.GetShared(self, 0)
self.browserLastRefreshed = 0
def onGetSharedPlugin(self):
if not self.inMainWindow(): return
self.raiseMain()
aqt.getshared.GetShared(self, 1)
def onOpen(self):
if not self.inMainWindow(): return
self.raiseMain()
key = _("Deck files (*.anki)")
defaultDir = self.getDefaultDir()
file = QFileDialog.getOpenFileName(self, _("Open deck"),
@ -1504,7 +1502,7 @@ it to your friends.
def syncDeck(self, interactive=True, onlyMerge=False, reload=True):
"Synchronise a deck with the server."
if not self.inMainWindow() and interactive and interactive!=-1: return
self.raiseMain()
#self.setNotice()
# vet input
if interactive:

View file

@ -128,7 +128,6 @@ $(".ansbut").focus();
def _showQuestion(self):
self.state = "question"
# fixme: timeboxing
# fixme: q/a separation
# fixme: prevent audio from repeating
# fixme: include placeholder for type answer result
c = self.card
@ -161,22 +160,9 @@ $(".ansbut").focus();
# render
runHook('showAnswer')
# Review buttons
# Ease buttons
##########################################################################
def _reviewButtons(self):
# type answer area
buf = self.typeAnsInput()
# show answer button
buf += """
<a id=ansbut class="but ansbut" href=ans onclick="showans();">
<div class=ansbut>%s</div>
</a>
""" % _("Show Answer")
# ease buttons
buf += self._answerButtons()
return buf
def _defaultEase(self):
if self.mw.deck.sched.answerButtons(self.card) == 4:
return 3