Remove the label(s) from the compatibility dialog if there are no packages

CURA-7038
This commit is contained in:
Dimitriovski 2020-01-07 14:19:31 +01:00
parent 0a495b3f6f
commit 75d2a72424
No known key found for this signature in database
GPG key ID: 4E62757E2B0D304D
3 changed files with 33 additions and 7 deletions

View file

@ -48,6 +48,7 @@ UM.Dialog{
{ {
font: UM.Theme.getFont("default") font: UM.Theme.getFont("default")
text: catalog.i18nc("@label", "The following packages will be added:") text: catalog.i18nc("@label", "The following packages will be added:")
visible: toolbox.has_compatible_packages
color: UM.Theme.getColor("text") color: UM.Theme.getColor("text")
height: contentHeight + UM.Theme.getSize("default_margin").height height: contentHeight + UM.Theme.getSize("default_margin").height
} }
@ -59,8 +60,8 @@ UM.Dialog{
Item Item
{ {
width: parent.width width: parent.width
property var lineHeight: 60 property int lineHeight: 60
visible: model.is_compatible == "True" ? true : false visible: model.is_compatible === "True" ? true : false
height: visible ? (lineHeight + UM.Theme.getSize("default_margin").height) : 0 // We only show the compatible packages here height: visible ? (lineHeight + UM.Theme.getSize("default_margin").height) : 0 // We only show the compatible packages here
Image Image
{ {
@ -90,6 +91,7 @@ UM.Dialog{
{ {
font: UM.Theme.getFont("default") font: UM.Theme.getFont("default")
text: catalog.i18nc("@label", "The following packages can not be installed because of incompatible Cura version:") text: catalog.i18nc("@label", "The following packages can not be installed because of incompatible Cura version:")
visible: toolbox.has_incompatible_packages
color: UM.Theme.getColor("text") color: UM.Theme.getColor("text")
height: contentHeight + UM.Theme.getSize("default_margin").height height: contentHeight + UM.Theme.getSize("default_margin").height
} }
@ -101,8 +103,8 @@ UM.Dialog{
Item Item
{ {
width: parent.width width: parent.width
property var lineHeight: 60 property int lineHeight: 60
visible: model.is_compatible == "True" ? false : true visible: model.is_compatible === "True" ? false : true
height: visible ? (lineHeight + UM.Theme.getSize("default_margin").height) : 0 // We only show the incompatible packages here height: visible ? (lineHeight + UM.Theme.getSize("default_margin").height) : 0 // We only show the incompatible packages here
Image Image
{ {

View file

@ -10,6 +10,7 @@ class SubscribedPackagesModel(ListModel):
def __init__(self, parent = None): def __init__(self, parent = None):
super().__init__(parent) super().__init__(parent)
self._items = []
self._metadata = None self._metadata = None
self._discrepancies = None self._discrepancies = None
self._sdk_version = ApplicationMetadata.CuraSDKVersion self._sdk_version = ApplicationMetadata.CuraSDKVersion
@ -27,7 +28,7 @@ class SubscribedPackagesModel(ListModel):
self._discrepancies = discrepancy self._discrepancies = discrepancy
def update(self): def update(self):
items = [] self._items.clear()
for item in self._metadata: for item in self._metadata:
if item["package_id"] not in self._discrepancies: if item["package_id"] not in self._discrepancies:
@ -42,5 +43,20 @@ class SubscribedPackagesModel(ListModel):
except KeyError: # There is no 'icon_url" in the response payload for this package except KeyError: # There is no 'icon_url" in the response payload for this package
package.update({"icon_url": ""}) package.update({"icon_url": ""})
items.append(package) self._items.append(package)
self.setItems(items) self.setItems(self._items)
print(self._items)
def has_compatible_packages(self):
has_compatible_items = False
for item in self._items:
if item['is_compatible'] == 'True':
has_compatible_items = True
return has_compatible_items
def has_incompatible_packages(self):
has_incompatible_items = False
for item in self._items:
if item['is_compatible'] == 'False':
has_incompatible_items = True
return has_incompatible_items

View file

@ -792,6 +792,14 @@ class Toolbox(QObject, Extension):
def subscribedPackagesModel(self) -> SubscribedPackagesModel: def subscribedPackagesModel(self) -> SubscribedPackagesModel:
return cast(SubscribedPackagesModel, self._models["subscribed_packages"]) return cast(SubscribedPackagesModel, self._models["subscribed_packages"])
@pyqtProperty(bool, constant=True)
def has_compatible_packages(self) -> str:
return self._models["subscribed_packages"].has_compatible_packages()
@pyqtProperty(bool, constant=True)
def has_incompatible_packages(self) -> str:
return self._models["subscribed_packages"].has_incompatible_packages()
@pyqtProperty(QObject, constant = True) @pyqtProperty(QObject, constant = True)
def packagesModel(self) -> PackagesModel: def packagesModel(self) -> PackagesModel:
return cast(PackagesModel, self._models["packages"]) return cast(PackagesModel, self._models["packages"])