mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-11-02 20:52:20 -07:00
Add Install Pending Updates button to Account popup
CURA-7473
This commit is contained in:
parent
f35ca0eb7d
commit
4f1a18f102
3 changed files with 64 additions and 12 deletions
|
|
@ -1,7 +1,7 @@
|
|||
# Copyright (c) 2018 Ultimaker B.V.
|
||||
# Cura is released under the terms of the LGPLv3 or higher.
|
||||
from datetime import datetime
|
||||
from typing import Optional, Dict, TYPE_CHECKING, Union
|
||||
from typing import Optional, Dict, TYPE_CHECKING, Callable
|
||||
|
||||
from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot, pyqtProperty, QTimer, Q_ENUMS
|
||||
|
||||
|
|
@ -56,6 +56,7 @@ class Account(QObject):
|
|||
lastSyncDateTimeChanged = pyqtSignal()
|
||||
syncStateChanged = pyqtSignal(int) # because SyncState is an int Enum
|
||||
manualSyncEnabledChanged = pyqtSignal(bool)
|
||||
updatePackagesEnabledChanged = pyqtSignal(bool)
|
||||
|
||||
def __init__(self, application: "CuraApplication", parent = None) -> None:
|
||||
super().__init__(parent)
|
||||
|
|
@ -66,6 +67,8 @@ class Account(QObject):
|
|||
self._logged_in = False
|
||||
self._sync_state = SyncState.IDLE
|
||||
self._manual_sync_enabled = False
|
||||
self._update_packages_enabled = False
|
||||
self._update_packages_action = None # type: Callable
|
||||
self._last_sync_str = "-"
|
||||
|
||||
self._callback_port = 32118
|
||||
|
|
@ -143,6 +146,18 @@ class Account(QObject):
|
|||
if not self._update_timer.isActive():
|
||||
self._update_timer.start()
|
||||
|
||||
def setUpdatePackagesAction(self, action: Callable):
|
||||
""" Set the callback which will be invoked when the user clicks the update packages button
|
||||
|
||||
Should be invoked after your service sets the sync state to SYNCING and before setting the
|
||||
sync state to SUCCESS.
|
||||
|
||||
Action will be reset to None when the next sync starts
|
||||
"""
|
||||
self._update_packages_action = action
|
||||
self._update_packages_enabled = True
|
||||
self.updatePackagesEnabledChanged.emit(self._update_packages_enabled)
|
||||
|
||||
def _onAccessTokenChanged(self):
|
||||
self.accessTokenChanged.emit()
|
||||
|
||||
|
|
@ -185,6 +200,9 @@ class Account(QObject):
|
|||
sync is currently running, a sync will be requested.
|
||||
"""
|
||||
|
||||
self._update_packages_action = None
|
||||
self._update_packages_enabled = False
|
||||
self.updatePackagesEnabledChanged.emit(self._update_packages_enabled)
|
||||
if self._update_timer.isActive():
|
||||
self._update_timer.stop()
|
||||
elif self._sync_state == SyncState.SYNCING:
|
||||
|
|
@ -251,6 +269,10 @@ class Account(QObject):
|
|||
def manualSyncEnabled(self) -> bool:
|
||||
return self._manual_sync_enabled
|
||||
|
||||
@pyqtProperty(bool, notify=updatePackagesEnabledChanged)
|
||||
def updatePackagesEnabled(self) -> bool:
|
||||
return self._update_packages_enabled
|
||||
|
||||
@pyqtSlot()
|
||||
@pyqtSlot(bool)
|
||||
def sync(self, user_initiated: bool = False) -> None:
|
||||
|
|
@ -259,11 +281,14 @@ class Account(QObject):
|
|||
|
||||
self._sync()
|
||||
|
||||
@pyqtSlot()
|
||||
def update_packages(self):
|
||||
if self._update_packages_action is not None:
|
||||
self._update_packages_action()
|
||||
|
||||
@pyqtSlot()
|
||||
def popupOpened(self) -> None:
|
||||
self._setManualSyncEnabled(True)
|
||||
self._sync_state = SyncState.IDLE
|
||||
self.syncStateChanged.emit(self._sync_state)
|
||||
|
||||
@pyqtSlot()
|
||||
def logout(self) -> None:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue