Disable sync button while in progress

Need to show a bit more feedback I think. Let's see what the design said...

Contributes to issue CURA-8609.
This commit is contained in:
Ghostkeeper 2021-10-11 13:11:54 +02:00
parent 9729f4f3d2
commit e7b49ee551
No known key found for this signature in database
GPG key ID: D2A8871EE34EC59A
3 changed files with 30 additions and 5 deletions

View file

@ -2,7 +2,7 @@
# Cura is released under the terms of the LGPLv3 or higher.
import copy # To duplicate materials.
from PyQt5.QtCore import pyqtSignal, pyqtSlot, QObject, QUrl
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QUrl
from PyQt5.QtGui import QDesktopServices
from typing import Any, Dict, Optional, TYPE_CHECKING
import uuid # To generate new GUIDs for new materials.
@ -35,6 +35,7 @@ class MaterialManagementModel(QObject):
def __init__(self, parent: QObject = None):
super().__init__(parent)
self._sync_all_dialog = None # type: Optional[QObject]
self._export_upload_status = "idle"
self._checkIfNewMaterialsWereInstalled()
def _checkIfNewMaterialsWereInstalled(self) -> None:
@ -330,12 +331,11 @@ class MaterialManagementModel(QObject):
"""
if self._sync_all_dialog is None:
qml_path = Resources.getPath(cura.CuraApplication.CuraApplication.ResourceTypes.QmlFiles, "Preferences", "Materials", "MaterialsSyncDialog.qml")
self._sync_all_dialog = cura.CuraApplication.CuraApplication.getInstance().createQmlComponent(qml_path, {
"materialManagementModel": self,
"pageIndex": 0
})
self._sync_all_dialog = cura.CuraApplication.CuraApplication.getInstance().createQmlComponent(qml_path, {})
if self._sync_all_dialog is None: # Failed to load QML file.
return
self._sync_all_dialog.setProperty("materialManagementModel", self)
self._sync_all_dialog.setProperty("pageIndex", 0) # Return to first page.
self._sync_all_dialog.show()
@pyqtSlot(result = QUrl)
@ -388,10 +388,23 @@ class MaterialManagementModel(QObject):
except OSError as e:
Logger.log("e", f"An error has occurred while writing the material \'{metadata['id']}\' in the file \'{filename}\': {e}.")
exportUploadStatusChanged = pyqtSignal()
@pyqtProperty(str, notify = exportUploadStatusChanged)
def exportUploadStatus(self):
return self._export_upload_status
@pyqtSlot()
def exportUpload(self) -> None:
"""
Export all materials and upload them to the user's account.
"""
self._export_upload_status = "uploading"
self.exportUploadStatusChanged.emit()
job = UploadMaterialsJob()
job.uploadCompleted.connect(self.exportUploadCompleted)
job.start()
def exportUploadCompleted(self):
self._export_upload_status = "idle"
self.exportUploadStatusChanged.emit()