|
@@ -50,6 +50,7 @@ class Account(QObject):
|
|
|
"""
|
|
|
lastSyncDateTimeChanged = pyqtSignal()
|
|
|
syncStateChanged = pyqtSignal(int) # because SyncState is an int Enum
|
|
|
+ manualSyncEnabledChanged = pyqtSignal(bool)
|
|
|
|
|
|
def __init__(self, application: "CuraApplication", parent = None) -> None:
|
|
|
super().__init__(parent)
|
|
@@ -59,6 +60,7 @@ class Account(QObject):
|
|
|
self._error_message = None # type: Optional[Message]
|
|
|
self._logged_in = False
|
|
|
self._sync_state = SyncState.SUCCESS
|
|
|
+ self._manual_sync_enabled = False
|
|
|
self._last_sync_str = "-"
|
|
|
|
|
|
self._callback_port = 32118
|
|
@@ -157,11 +159,25 @@ class Account(QObject):
|
|
|
self._logged_in = logged_in
|
|
|
self.loginStateChanged.emit(logged_in)
|
|
|
if logged_in:
|
|
|
- self.sync()
|
|
|
+ self._sync()
|
|
|
else:
|
|
|
if self._update_timer.isActive():
|
|
|
self._update_timer.stop()
|
|
|
|
|
|
+ def _sync(self) -> None:
|
|
|
+ """Signals all sync services to start syncing
|
|
|
+
|
|
|
+ This can be considered a forced sync: even when a
|
|
|
+ sync is currently running, a sync will be requested.
|
|
|
+ """
|
|
|
+
|
|
|
+ if self._update_timer.isActive():
|
|
|
+ self._update_timer.stop()
|
|
|
+ elif self._sync_state == SyncState.SYNCING:
|
|
|
+ Logger.warning("Starting a new sync while previous sync was not completed\n{}", str(self._sync_services))
|
|
|
+
|
|
|
+ self.syncRequested.emit()
|
|
|
+
|
|
|
@pyqtSlot()
|
|
|
def login(self) -> None:
|
|
|
if self._logged_in:
|
|
@@ -200,20 +216,23 @@ class Account(QObject):
|
|
|
def lastSyncDateTime(self) -> str:
|
|
|
return self._last_sync_str
|
|
|
|
|
|
- @pyqtSlot()
|
|
|
- def sync(self) -> None:
|
|
|
- """Signals all sync services to start syncing
|
|
|
+ @pyqtProperty(bool, notify=manualSyncEnabledChanged)
|
|
|
+ def manualSyncEnabled(self) -> bool:
|
|
|
+ return self._manual_sync_enabled
|
|
|
|
|
|
- This can be considered a forced sync: even when a
|
|
|
- sync is currently running, a sync will be requested.
|
|
|
- """
|
|
|
+ @pyqtSlot()
|
|
|
+ @pyqtSlot(bool)
|
|
|
+ def sync(self, user_initiated=False):
|
|
|
+ if user_initiated:
|
|
|
+ self._manual_sync_enabled = False
|
|
|
+ self.manualSyncEnabledChanged.emit(self._manual_sync_enabled)
|
|
|
|
|
|
- if self._update_timer.isActive():
|
|
|
- self._update_timer.stop()
|
|
|
- elif self._sync_state == SyncState.SYNCING:
|
|
|
- Logger.warning("Starting a new sync while previous sync was not completed\n{}", str(self._sync_services))
|
|
|
+ self._sync()
|
|
|
|
|
|
- self.syncRequested.emit()
|
|
|
+ @pyqtSlot()
|
|
|
+ def popupClosed(self):
|
|
|
+ self._manual_sync_enabled = True
|
|
|
+ self.manualSyncEnabledChanged.emit(self._manual_sync_enabled)
|
|
|
|
|
|
@pyqtSlot()
|
|
|
def logout(self) -> None:
|