bulk media updater

This commit is contained in:
Damien Elmes 2008-10-16 03:06:36 +09:00
parent ff26b14e44
commit 0060dc553a
2 changed files with 38 additions and 1 deletions

View file

@ -1093,6 +1093,9 @@ class AnkiQt(QMainWindow):
self.connect(self.syncThread, SIGNAL("syncClockOff"), self.syncClockOff)
self.connect(self.syncThread, SIGNAL("cleanNewDeck"), self.cleanNewDeck)
self.connect(self.syncThread, SIGNAL("syncFinished"), self.syncFinished)
self.connect(self.syncThread, SIGNAL("openSyncProgress"), self.openSyncProgress)
self.connect(self.syncThread, SIGNAL("closeSyncProgress"), self.closeSyncProgress)
self.connect(self.syncThread, SIGNAL("updateSyncProgress"), self.updateSyncProgress)
self.syncThread.start()
self.setEnabled(False)
while not self.syncThread.isFinished():
@ -1149,6 +1152,23 @@ class AnkiQt(QMainWindow):
ui.utils.showWarning(text, self)
self.setStatus("")
def openSyncProgress(self):
self.syncProgressDialog = QProgressDialog(_("Syncing Media.."),
"", 0, 0, self)
self.syncProgressDialog.setCancelButton(None)
def closeSyncProgress(self):
self.syncProgressDialog.cancel()
def updateSyncProgress(self, args):
(type, x, y, fname) = args
self.syncProgressDialog.setMaximum(y)
self.syncProgressDialog.setValue(x)
if type == "up":
self.syncProgressDialog.setLabelText("Uploading %s.." % fname)
else:
self.syncProgressDialog.setLabelText("Downloading %s.." % fname)
# Menu, title bar & status
##########################################################################

View file

@ -6,7 +6,8 @@ from PyQt4.QtCore import *
import os, types, socket, time, traceback
import ankiqt
import anki
from anki.sync import SyncClient, HttpSyncServerProxy
from anki.sync import SyncClient, HttpSyncServerProxy, BulkMediaSyncerProxy
from anki.sync import BulkMediaSyncer
from anki.errors import *
from anki import DeckStorage
import ankiqt.forms
@ -107,6 +108,10 @@ class Sync(QThread):
# apply reply
self.setStatus(_("Applying reply.."), 0)
client.applyPayloadReply(res)
# bulk update?
if not client.bundleMedia:
# need to load bulk media fetcher now
self.doBulkDownload()
# finished. save deck, preserving mod time
self.setStatus(_("Sync complete."))
self.deck.lastLoaded = self.deck.modified
@ -151,6 +156,18 @@ class Sync(QThread):
time.sleep(3)
self.emit(SIGNAL("syncFinished"))
def doBulkDownload(self):
self.emit(SIGNAL("openSyncProgress"))
client = BulkMediaSyncer(self.deck)
client.server = BulkMediaSyncerProxy(self.user, self.pwd)
client.server.deckName = self.parent.syncName
client.progressCallback = self.bulkCallback
client.sync()
self.emit(SIGNAL("closeSyncProgress"))
def bulkCallback(self, *args):
self.emit(SIGNAL("updateSyncProgress"), args)
# Choosing a deck to sync to
##########################################################################