add "immediate" progress back

on ops which we know are going to take time, it makes the interface
look more responsive to pop up the progress more quickly
This commit is contained in:
Damien Elmes 2020-05-31 11:24:33 +10:00
parent 7e221f0acf
commit a8ad4abf37
9 changed files with 21 additions and 14 deletions

View file

@ -441,7 +441,7 @@ and have been disabled: %(found)s"
log = [] log = []
errs = [] errs = []
self.mw.progress.start(immediate=True, parent=parent) self.mw.progress.start(parent=parent)
try: try:
for path in paths: for path in paths:
base = os.path.basename(path) base = os.path.basename(path)

View file

@ -304,7 +304,7 @@ where id > ?""",
(_("Are you sure you wish to delete %s?") % deck["name"]) + extra (_("Are you sure you wish to delete %s?") % deck["name"]) + extra
) )
): ):
self.mw.progress.start(immediate=True) self.mw.progress.start()
self.mw.col.decks.rem(did, True) self.mw.col.decks.rem(did, True)
self.mw.progress.finish() self.mw.progress.finish()
self.show() self.show()

View file

@ -163,7 +163,7 @@ class ExportDialog(QDialog):
future.result() future.result()
self.on_export_finished() self.on_export_finished()
self.mw.progress.start(immediate=True) self.mw.progress.start()
hooks.media_files_did_export.append(exported_media) hooks.media_files_did_export.append(exported_media)
self.mw.taskman.run_in_background(do_export, on_done) self.mw.taskman.run_in_background(do_export, on_done)

View file

@ -192,7 +192,7 @@ you can enter it here. Use \\t to represent tab."""
self.importer.model["did"] = did self.importer.model["did"] = did
self.mw.col.models.save(self.importer.model, updateReqs=False) self.mw.col.models.save(self.importer.model, updateReqs=False)
self.mw.col.decks.select(did) self.mw.col.decks.select(did)
self.mw.progress.start(immediate=True) self.mw.progress.start()
self.mw.checkpoint(_("Import")) self.mw.checkpoint(_("Import"))
def on_done(future: Future): def on_done(future: Future):

View file

@ -532,7 +532,7 @@ close the profile or restart Anki."""
label = _("Closing...") label = _("Closing...")
else: else:
label = _("Backing Up...") label = _("Backing Up...")
self.progress.start(label=label, immediate=True) self.progress.start(label=label)
corrupt = False corrupt = False
try: try:
self.maybeOptimize() self.maybeOptimize()
@ -618,7 +618,7 @@ from the profile screen."
# have two weeks passed? # have two weeks passed?
if (intTime() - self.pm.profile["lastOptimize"]) < 86400 * 14: if (intTime() - self.pm.profile["lastOptimize"]) < 86400 * 14:
return return
self.progress.start(label=_("Optimizing..."), immediate=True) self.progress.start(label=_("Optimizing..."))
self.col.optimize() self.col.optimize()
self.pm.profile["lastOptimize"] = intTime() self.pm.profile["lastOptimize"] = intTime()
self.pm.save() self.pm.save()
@ -902,14 +902,17 @@ title="%s" %s>%s</button>""" % (
self.media_syncer.start() self.media_syncer.start()
def can_auto_sync(self) -> bool: def can_auto_sync(self) -> bool:
return (self.pm.auto_syncing_enabled() return (
self.pm.auto_syncing_enabled()
and self.pm.sync_auth() and self.pm.sync_auth()
and not self.safeMode and not self.safeMode
and not self.restoringBackup) and not self.restoringBackup
)
# legacy # legacy
def _sync(self): def _sync(self):
pass pass
onSync = on_sync_button_clicked onSync = on_sync_button_clicked
# Tools # Tools

View file

@ -52,7 +52,6 @@ class ProgressManager:
# Creating progress dialogs # Creating progress dialogs
########################################################################## ##########################################################################
# note: immediate is no longer used
def start( def start(
self, max=0, min=0, label=None, parent=None, immediate=False self, max=0, min=0, label=None, parent=None, immediate=False
) -> Optional[ProgressDialog]: ) -> Optional[ProgressDialog]:
@ -83,7 +82,7 @@ class ProgressManager:
self._updating = False self._updating = False
self._show_timer = QTimer(self.mw) self._show_timer = QTimer(self.mw)
self._show_timer.setSingleShot(True) self._show_timer.setSingleShot(True)
self._show_timer.start(600) self._show_timer.start(immediate and 100 or 600)
qconnect(self._show_timer.timeout, self._on_show_timer) qconnect(self._show_timer.timeout, self._on_show_timer)
return self._win return self._win

View file

@ -95,7 +95,7 @@ class DeckStats(QDialog):
self.refresh() self.refresh()
def refresh(self): def refresh(self):
self.mw.progress.start(immediate=True, parent=self) self.mw.progress.start(parent=self)
stats = self.mw.col.stats() stats = self.mw.col.stats()
stats.wholeCollection = self.wholeCollection stats.wholeCollection = self.wholeCollection
self.report = stats.report(type=self.period) self.report = stats.report(type=self.period)

View file

@ -31,7 +31,7 @@ from aqt.utils import askUser, askUserDialog, showText, showWarning, tr
# fixme: catch auth error in other routines, clear sync auth # fixme: catch auth error in other routines, clear sync auth
# fixme: sync progress # fixme: sync progress
# fixme: curDeck marking collection modified # fixme: curDeck marking collection modified
# fixme: show progress immediately
class FullSyncChoice(enum.Enum): class FullSyncChoice(enum.Enum):
CANCEL = 0 CANCEL = 0
@ -47,7 +47,9 @@ def get_sync_status(mw: aqt.main.AnkiQt, callback: Callable[[SyncOutput], None])
def on_future_done(fut): def on_future_done(fut):
callback(fut.result()) callback(fut.result())
mw.taskman.run_in_background(lambda: mw.col.backend.sync_status(auth), on_future_done) mw.taskman.run_in_background(
lambda: mw.col.backend.sync_status(auth), on_future_done
)
def sync_collection(mw: aqt.main.AnkiQt, on_done: Callable[[], None]) -> None: def sync_collection(mw: aqt.main.AnkiQt, on_done: Callable[[], None]) -> None:
@ -84,6 +86,7 @@ def sync_collection(mw: aqt.main.AnkiQt, on_done: Callable[[], None]) -> None:
lambda: mw.col.backend.sync_collection(auth), lambda: mw.col.backend.sync_collection(auth),
on_future_done, on_future_done,
label=tr(TR.SYNC_CHECKING), label=tr(TR.SYNC_CHECKING),
immediate=True,
) )
@ -180,6 +183,7 @@ def full_upload(mw: aqt.main.AnkiQt, on_done: Callable[[], None]) -> None:
label=tr(TR.SYNC_UPLOADING_TO_ANKIWEB), label=tr(TR.SYNC_UPLOADING_TO_ANKIWEB),
) )
def sync_login( def sync_login(
mw: aqt.main.AnkiQt, on_success: Callable[[], None], username="", password="" mw: aqt.main.AnkiQt, on_success: Callable[[], None], username="", password=""
) -> None: ) -> None:

View file

@ -67,8 +67,9 @@ class TaskManager(QObject):
on_done: Optional[Callable[[Future], None]] = None, on_done: Optional[Callable[[Future], None]] = None,
parent: Optional[QWidget] = None, parent: Optional[QWidget] = None,
label: Optional[str] = None, label: Optional[str] = None,
immediate: Bool = False,
): ):
self.mw.progress.start(parent=parent, label=label) self.mw.progress.start(parent=parent, label=label, immediate=immediate)
def wrapped_done(fut): def wrapped_done(fut):
self.mw.progress.finish() self.mw.progress.finish()