Browse Source

CURA-5137 Adding a loading page while the data is not yet ready.

Diego Prado Gesto 7 years ago
parent
commit
2fe2c71754
2 changed files with 17 additions and 9 deletions
  1. 9 3
      plugins/Toolbox/resources/qml/Toolbox.qml
  2. 8 6
      plugins/Toolbox/src/Toolbox.py

+ 9 - 3
plugins/Toolbox/resources/qml/Toolbox.qml

@@ -14,6 +14,7 @@ import UM 1.1 as UM
 Window
 {
     id: base
+    property bool dataReady: manager.dataReady
     title: catalog.i18nc("@title:tab", "Toolbox");
     modality: Qt.ApplicationModal
     width: 800 * screenScaleFactor
@@ -40,20 +41,25 @@ Window
                 top: topBar.bottom
                 bottom: bottomBar.top
             }
+            ToolboxLoading
+            {
+                id: loading
+                visible: !dataReady && manager.currentView != "installed"
+            }
             ToolboxDownloadsPage
             {
                 id: viewDownloads
-                visible: manager.currentView != "installed" && manager.detailView == ""
+                visible: dataReady && manager.currentView != "installed" && manager.detailView == ""
             }
             ToolboxDetailsPage
             {
                 id: viewDetail
-                visible: manager.currentView != "installed" && manager.detailView != ""
+                visible: dataReady && manager.currentView != "installed" && manager.detailView != ""
             }
             ToolboxInstalledPage
             {
                 id: installedPluginList
-                visible: manager.currentView == "installed"
+                visible: dataReady && manager.currentView == "installed"
             }
         }
         ToolboxShadow

+ 8 - 6
plugins/Toolbox/src/Toolbox.py

@@ -48,7 +48,7 @@ class Toolbox(QObject, Extension):
 
         # Nowadays can be 'plugins', 'materials' or 'installed'
         self._current_view = "plugins"
-        self._detail_view = False
+        self._detail_view = ""
 
         self._restart_required = False
 
@@ -291,18 +291,17 @@ class Toolbox(QObject, Extension):
 
     def setCurrentView(self, view = "plugins"):
         self._current_view = view
-        self._detail_view = False
         self.viewChanged.emit()
 
     @pyqtProperty(str, fset = setCurrentView, notify = viewChanged)
     def currentView(self):
         return self._current_view
 
-    def setDetailView(self, item = False):
-        self._detail_view = item
+    def setDetailView(self, detail_view = ""):
+        self._detail_view = detail_view
         self.detailViewChanged.emit()
 
-    @pyqtProperty(bool, fset = setDetailView, notify = detailViewChanged)
+    @pyqtProperty(str, fset = setDetailView, notify = detailViewChanged)
     def detailView(self):
         return self._detail_view
 
@@ -328,6 +327,10 @@ class Toolbox(QObject, Extension):
     def packagesModel(self):
         return self._packages_model
 
+    @pyqtProperty(bool, notify = packagesMetadataChanged)
+    def dataReady(self):
+        return self._packages_model is not None
+
     def _checkCanUpgrade(self, id, version):
 
         # TODO: This could maybe be done more efficiently using a dictionary...
@@ -392,7 +395,6 @@ class Toolbox(QObject, Extension):
                     if not self._packages_model:
                         self._packages_model = CuraPackageModel()
                     self._packages_model.setPackagesMetaData(self._packages_metadata)
-                    # self._plugin_registry.addExternalPlugins(self._packages_metadata)
                     self.packagesMetadataChanged.emit()
                 except json.decoder.JSONDecodeError:
                     Logger.log("w", "Received an invalid print job state message: Not valid JSON.")