Browse Source

Only show Footer when the packagelist is paginated

It doesn't make sense to show a footer when items are retrieved in one
go. Except when an error occurs.

Contributes to CURA-8558
j.spijker@ultimaker.com 3 years ago
parent
commit
3f700e5d0c

+ 2 - 0
plugins/Marketplace/LocalPackageList.py

@@ -5,6 +5,7 @@ from PyQt5.QtCore import pyqtSlot, Qt
 from typing import TYPE_CHECKING
 
 from UM.i18n import i18nCatalog
+from UM.Logger import Logger
 
 from cura.CuraApplication import CuraApplication
 
@@ -23,6 +24,7 @@ class LocalPackageList(PackageList):
     def __init__(self, parent: "QObject" = None) -> None:
         super().__init__(parent)
         self._application = CuraApplication.getInstance()
+        self._has_footer = False
 
     @pyqtSlot()
     def updatePackages(self) -> None:

+ 5 - 0
plugins/Marketplace/PackageList.py

@@ -22,6 +22,7 @@ class PackageList(ListModel):
         self.addRoleName(self.PackageRole, "package")
         self._is_loading = False
         self._has_more = False
+        self._has_footer = True
 
     @pyqtSlot()
     def updatePackages(self) -> None:
@@ -85,3 +86,7 @@ class PackageList(ListModel):
         :return: An error message, if any, or an empty string if everything went okay.
         """
         return self._error_message
+
+    @pyqtProperty(bool, constant = True)
+    def hasFooter(self) -> bool:
+        return self._has_footer

+ 2 - 1
plugins/Marketplace/resources/qml/Packages.qml

@@ -71,7 +71,8 @@ ScrollView
         footer: Item
         {
             width: parent.width
-            height: UM.Theme.getSize("card").height + packagesListview.spacing
+            height: model.hasFooter || packages.model.errorMessage != "" ? UM.Theme.getSize("card").height + packagesListview.spacing : 0
+            visible: model.hasFooter || packages.model.errorMessage != ""
             Button
             {
                 id: loadMoreButton