From 853f915f2a1fabfeb8dbe4fce2edcc1bd1c063ad Mon Sep 17 00:00:00 2001 From: casper Date: Fri, 26 Nov 2021 10:06:50 +0100 Subject: [PATCH 01/25] Add basic onboarding banner to the market place --- .../Marketplace/resources/qml/Marketplace.qml | 4 + .../resources/qml/OnboardBanner.qml | 79 +++++++++++++++++++ 2 files changed, 83 insertions(+) create mode 100644 plugins/Marketplace/resources/qml/OnboardBanner.qml diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index c04aa7eb6a..3fcc0bb3fd 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -48,6 +48,10 @@ Window spacing: UM.Theme.getSize("default_margin").height + OnboardBanner + { + } + // Page title. Item { diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml new file mode 100644 index 0000000000..b91a9a52f7 --- /dev/null +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -0,0 +1,79 @@ +// Copyright (c) 2021 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.15 +import QtQuick.Controls 2.15 +import QtQuick.Layouts 1.1 + +import UM 1.6 as UM +import Cura 1.6 as Cura + +// Onboarding banner. +Rectangle +{ + Layout.preferredHeight: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height + anchors + { + margins: UM.Theme.getSize("default_margin").width + left: parent.left + right: parent.right + top: parent.top + } + + color: UM.Theme.getColor("action_panel_secondary") + + // Icon + Rectangle + { + id: onboardingIcon + anchors + { + top: parent.top + left: parent.left + margins: UM.Theme.getSize("default_margin").width + } + width: UM.Theme.getSize("button_icon").width + height: UM.Theme.getSize("button_icon").height + color: "transparent" + UM.RecolorImage + { + anchors.fill: parent + color: UM.Theme.getColor("primary_text") + source: UM.Theme.getIcon("Shop") + } + } + + // Close button + UM.SimpleButton + { + id: onboardingClose + anchors + { + top: parent.top + right: parent.right + margins: UM.Theme.getSize("default_margin").width + } + width: UM.Theme.getSize("message_close").width + height: UM.Theme.getSize("message_close").height + color: UM.Theme.getColor("primary_text") + hoverColor: UM.Theme.getColor("primary_text_hover") + iconSource: UM.Theme.getIcon("Cancel") + onClicked: confirmDeleteDialog.visible = true + } + + // Body + Text { + anchors + { + top: parent.top + left: onboardingIcon.right + right: onboardingClose.left + margins: UM.Theme.getSize("default_margin").width + } + + font: UM.Theme.getFont("medium") + color: UM.Theme.getColor("primary_text") + wrapMode: Text.WordWrap + text: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") + } +} \ No newline at end of file From 20f94add47835ace7d5c16d37ff88ef1f6318d9f Mon Sep 17 00:00:00 2001 From: casper Date: Fri, 26 Nov 2021 10:10:09 +0100 Subject: [PATCH 02/25] Display different content on each of the marketplace onboarding banners --- .../resources/qml/ManagedPackages.qml | 1 + .../Marketplace/resources/qml/Marketplace.qml | 1 + .../Marketplace/resources/qml/Materials.qml | 1 + .../resources/qml/OnboardBanner.qml | 20 +++++++++++++++++-- .../Marketplace/resources/qml/Packages.qml | 2 ++ plugins/Marketplace/resources/qml/Plugins.qml | 1 + 6 files changed, 24 insertions(+), 2 deletions(-) diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index 243d5bf12e..c53384bf77 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -10,6 +10,7 @@ import UM 1.4 as UM Packages { pageTitle: catalog.i18nc("@header", "Manage packages") + bannerType: "__MANAGE_PACKAGES__" model: Marketplace.LocalPackageList { } diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 3fcc0bb3fd..7293a61a80 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -50,6 +50,7 @@ Window OnboardBanner { + bannerType: content.item && content.item.bannerType } // Page title. diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index 1d1572976a..dff63305bf 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -6,6 +6,7 @@ import Marketplace 1.0 as Marketplace Packages { pageTitle: catalog.i18nc("@header", "Install Materials") + bannerType: "__MATERIALS__" model: Marketplace.RemotePackageList { packageTypeFilter: "material" diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index b91a9a52f7..8a1048018c 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -11,6 +11,8 @@ import Cura 1.6 as Cura // Onboarding banner. Rectangle { + property var bannerType + Layout.preferredHeight: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height anchors { @@ -39,7 +41,14 @@ Rectangle { anchors.fill: parent color: UM.Theme.getColor("primary_text") - source: UM.Theme.getIcon("Shop") + source: { + switch (bannerType) { + case "__PLUGINS__" : return UM.Theme.getIcon("Shop"); + case "__MATERIALS__" : return UM.Theme.getIcon("Spool"); + case "__MANAGE_PACKAGES__" : return UM.Theme.getIcon("ArrowDoubleCircleRight"); + default: return ""; + } + } } } @@ -74,6 +83,13 @@ Rectangle font: UM.Theme.getFont("medium") color: UM.Theme.getColor("primary_text") wrapMode: Text.WordWrap - text: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") + text: { + switch (bannerType) { + case "__PLUGINS__" : return catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users."); + case "__MATERIALS__" : return catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers."); + case "__MANAGE_PACKAGES__" : return catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly."); + default: return ""; + } + } } } \ No newline at end of file diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml index 79b4bf23a5..345aecf822 100644 --- a/plugins/Marketplace/resources/qml/Packages.qml +++ b/plugins/Marketplace/resources/qml/Packages.qml @@ -11,6 +11,8 @@ ListView id: packages property string pageTitle + property string bannerType + width: parent.width clip: true diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index ef5d92c2e8..24381e3027 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -6,6 +6,7 @@ import Marketplace 1.0 as Marketplace Packages { pageTitle: catalog.i18nc("@header", "Install Plugins") + bannerType: "__PLUGINS__" model: Marketplace.RemotePackageList { packageTypeFilter: "plugin" From 3ddfa6486b3d45ba16be1e059c2d6613ce905bde Mon Sep 17 00:00:00 2001 From: casper Date: Fri, 26 Nov 2021 14:49:00 +0100 Subject: [PATCH 03/25] Remove banners when clicking close button --- cura/CuraApplication.py | 31 +++++++++++++++++++ .../resources/qml/ManagedPackages.qml | 10 +++++- .../Marketplace/resources/qml/Marketplace.qml | 5 ++- .../Marketplace/resources/qml/Materials.qml | 10 +++++- .../resources/qml/OnboardBanner.qml | 28 ++++++----------- .../Marketplace/resources/qml/Packages.qml | 5 ++- plugins/Marketplace/resources/qml/Plugins.qml | 10 +++++- 7 files changed, 76 insertions(+), 23 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 3d4ec1209f..6cf2593bbf 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -572,6 +572,10 @@ class CuraApplication(QtApplication): preferences.addPreference("general/accepted_user_agreement", False) + preferences.addPreference("cura/market_place_show_plugin_banner", True) + preferences.addPreference("cura/market_place_show_material_banner", True) + preferences.addPreference("cura/market_place_show_manage_packages_banner", True) + for key in [ "dialog_load_path", # dialog_save_path is in LocalFileOutputDevicePlugin "dialog_profile_path", @@ -2011,6 +2015,33 @@ class CuraApplication(QtApplication): show_whatsnew_only = has_active_machine and has_app_just_upgraded return show_whatsnew_only + @pyqtSlot(result = bool) + def shouldShowMarketPlacePluginBanner(self) -> bool: + return self._preferences.getValue("cura/market_place_show_plugin_banner") + + @pyqtSlot(result = bool) + def shouldShowMarketPlaceMaterialBanner(self) -> bool: + return self._preferences.getValue("cura/market_place_show_material_banner") + + @pyqtSlot(result = bool) + def shouldShowMarketPlaceManagePackagesBanner(self) -> bool: + return self._preferences.getValue("cura/market_place_show_manage_packages_banner") + + @pyqtSlot() + def closeMarketPlacePluginBanner(self) -> None: + Logger.log("i", "Close market place plugin banner") + self._preferences.setValue("cura/market_place_show_plugin_banner", False) + + @pyqtSlot() + def closeMarketPlaceMaterialBanner(self) -> None: + Logger.log("i", "Close market place material banner") + self._preferences.setValue("cura/market_place_show_material_banner", False) + + @pyqtSlot() + def closeMarketPlaceManagePackagesBanner(self) -> None: + Logger.log("i", "Close market place manage packages banner") + self._preferences.setValue("cura/market_place_show_manage_packages_banner", False) + @pyqtSlot(result = int) def appWidth(self) -> int: main_window = QtApplication.getInstance().getMainWindow() diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index c53384bf77..a329d992e5 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -10,7 +10,15 @@ import UM 1.4 as UM Packages { pageTitle: catalog.i18nc("@header", "Manage packages") - bannerType: "__MANAGE_PACKAGES__" + + bannerVisible: CuraApplication.shouldShowMarketPlaceManagePackagesBanner() + bannerIcon: "ArrowDoubleCircleRight" + bannerBody: catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly.") + onRemoveBanner: function() { + CuraApplication.closeMarketPlaceManagePackagesBanner(); + bannerVisible = false; + } + model: Marketplace.LocalPackageList { } diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 7293a61a80..14de458e95 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -50,7 +50,10 @@ Window OnboardBanner { - bannerType: content.item && content.item.bannerType + bannerVisible: content.item && content.item.bannerVisible + bannerBody: content.item && content.item.bannerBody + bannerIcon: content.item && content.item.bannerIcon + onRemoveBanner: content.item && content.item.onRemoveBanner } // Page title. diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index dff63305bf..32d2c2213a 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -6,7 +6,15 @@ import Marketplace 1.0 as Marketplace Packages { pageTitle: catalog.i18nc("@header", "Install Materials") - bannerType: "__MATERIALS__" + + bannerVisible: CuraApplication.shouldShowMarketPlaceMaterialBanner() + bannerIcon: "Spool" + bannerBody: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") + onRemoveBanner: function() { + CuraApplication.closeMarketPlaceMaterialBanner(); + bannerVisible = false; + } + model: Marketplace.RemotePackageList { packageTypeFilter: "material" diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 8a1048018c..8a29030514 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -11,7 +11,12 @@ import Cura 1.6 as Cura // Onboarding banner. Rectangle { - property var bannerType + property bool bannerVisible + property string bannerIcon + property string bannerBody + property var onRemoveBanner + + visible: bannerVisible Layout.preferredHeight: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height anchors @@ -41,14 +46,7 @@ Rectangle { anchors.fill: parent color: UM.Theme.getColor("primary_text") - source: { - switch (bannerType) { - case "__PLUGINS__" : return UM.Theme.getIcon("Shop"); - case "__MATERIALS__" : return UM.Theme.getIcon("Spool"); - case "__MANAGE_PACKAGES__" : return UM.Theme.getIcon("ArrowDoubleCircleRight"); - default: return ""; - } - } + source: UM.Theme.getIcon(bannerIcon) } } @@ -67,7 +65,8 @@ Rectangle color: UM.Theme.getColor("primary_text") hoverColor: UM.Theme.getColor("primary_text_hover") iconSource: UM.Theme.getIcon("Cancel") - onClicked: confirmDeleteDialog.visible = true + + onClicked: onRemoveBanner() } // Body @@ -83,13 +82,6 @@ Rectangle font: UM.Theme.getFont("medium") color: UM.Theme.getColor("primary_text") wrapMode: Text.WordWrap - text: { - switch (bannerType) { - case "__PLUGINS__" : return catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users."); - case "__MATERIALS__" : return catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers."); - case "__MANAGE_PACKAGES__" : return catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly."); - default: return ""; - } - } + text: bannerBody } } \ No newline at end of file diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml index 345aecf822..91f6448994 100644 --- a/plugins/Marketplace/resources/qml/Packages.qml +++ b/plugins/Marketplace/resources/qml/Packages.qml @@ -11,7 +11,10 @@ ListView id: packages property string pageTitle - property string bannerType + property bool bannerVisible + property string bannerIcon + property string bannerBody + property var onRemoveBanner width: parent.width diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index 24381e3027..b9d38c6e2b 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -6,7 +6,15 @@ import Marketplace 1.0 as Marketplace Packages { pageTitle: catalog.i18nc("@header", "Install Plugins") - bannerType: "__PLUGINS__" + + bannerVisible: CuraApplication.shouldShowMarketPlacePluginBanner() + bannerIcon: "Shop" + bannerBody: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") + onRemoveBanner: function() { + CuraApplication.closeMarketPlacePluginBanner(); + bannerVisible = false; + } + model: Marketplace.RemotePackageList { packageTypeFilter: "plugin" From feb3046eacb924bcb5290cfad5d0716f113f9f5b Mon Sep 17 00:00:00 2001 From: casper Date: Sat, 27 Nov 2021 13:31:34 +0100 Subject: [PATCH 04/25] Add "readmore" button --- .../resources/qml/OnboardBanner.qml | 55 ++++++++++++++++++- 1 file changed, 52 insertions(+), 3 deletions(-) diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 8a29030514..150377eaf3 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -70,7 +70,8 @@ Rectangle } // Body - Text { + Label { + id: infoText anchors { top: parent.top @@ -80,8 +81,56 @@ Rectangle } font: UM.Theme.getFont("medium") - color: UM.Theme.getColor("primary_text") - wrapMode: Text.WordWrap text: bannerBody + + renderType: Text.NativeRendering + color: "white" + wrapMode: Text.Wrap + elide: Text.ElideRight + + onLineLaidOut: + { + if(line.isLast) + { + // Check if read more button still fits after the body text + if (line.implicitWidth + readMoreButton.width + UM.Theme.getSize("default_margin").width > width) + { + // If it does place it after the body text + readMoreButton.anchors.left = infoText.left; + readMoreButton.anchors.bottom = infoText.bottom; + readMoreButton.anchors.bottomMargin = -(fontMetrics.height + UM.Theme.getSize("thin_margin").height); + readMoreButton.anchors.leftMargin = 0; + } + else + { + // Otherwise place it under the text + readMoreButton.anchors.left = infoText.left; + readMoreButton.anchors.bottom = infoText.bottom; + readMoreButton.anchors.leftMargin = line.implicitWidth + UM.Theme.getSize("default_margin").width; + readMoreButton.anchors.bottomMargin = 0; + } + } + } + } + + FontMetrics + { + id: fontMetrics + font: UM.Theme.getFont("default") + } + + Cura.TertiaryButton + { + id: readMoreButton + text: "Learn More" + textFont: UM.Theme.getFont("default") + textColor: infoText.color + leftPadding: 0 + rightPadding: 0 + iconSource: UM.Theme.getIcon("LinkExternal") + isIconOnRightSide: true + height: fontMetrics.height + + onClicked: print("TODO") } } \ No newline at end of file From 964de6c7fbe3cc229a5608de110d3c691f7f04d0 Mon Sep 17 00:00:00 2001 From: casper Date: Sat, 27 Nov 2021 13:31:47 +0100 Subject: [PATCH 05/25] Change font size in banner --- plugins/Marketplace/resources/qml/OnboardBanner.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 150377eaf3..cbd151bed2 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -80,7 +80,7 @@ Rectangle margins: UM.Theme.getSize("default_margin").width } - font: UM.Theme.getFont("medium") + font: UM.Theme.getFont("default") text: bannerBody renderType: Text.NativeRendering From f1ef1c283ea7283c269ec3c13af47420d7fcd4e6 Mon Sep 17 00:00:00 2001 From: casper Date: Sat, 27 Nov 2021 13:48:38 +0100 Subject: [PATCH 06/25] Add links to read me support pages Note that since the support pages are not yet ready the "read more" buttons are hidden. Once the correct link is added they become visible again. --- plugins/Marketplace/resources/qml/ManagedPackages.qml | 1 + plugins/Marketplace/resources/qml/Marketplace.qml | 1 + plugins/Marketplace/resources/qml/Materials.qml | 1 + plugins/Marketplace/resources/qml/OnboardBanner.qml | 4 +++- plugins/Marketplace/resources/qml/Packages.qml | 1 + plugins/Marketplace/resources/qml/Plugins.qml | 1 + 6 files changed, 8 insertions(+), 1 deletion(-) diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index a329d992e5..e8e54d77b5 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -14,6 +14,7 @@ Packages bannerVisible: CuraApplication.shouldShowMarketPlaceManagePackagesBanner() bannerIcon: "ArrowDoubleCircleRight" bannerBody: catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly.") + readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { CuraApplication.closeMarketPlaceManagePackagesBanner(); bannerVisible = false; diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 14de458e95..2bdd0a509d 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -54,6 +54,7 @@ Window bannerBody: content.item && content.item.bannerBody bannerIcon: content.item && content.item.bannerIcon onRemoveBanner: content.item && content.item.onRemoveBanner + readMoreUrl: content.item.readMoreUrl && content.item.readMoreUrl } // Page title. diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index 32d2c2213a..fc4869dac5 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -10,6 +10,7 @@ Packages bannerVisible: CuraApplication.shouldShowMarketPlaceMaterialBanner() bannerIcon: "Spool" bannerBody: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") + readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { CuraApplication.closeMarketPlaceMaterialBanner(); bannerVisible = false; diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index cbd151bed2..4b5e494be5 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -15,6 +15,7 @@ Rectangle property string bannerIcon property string bannerBody property var onRemoveBanner + property string readMoreUrl visible: bannerVisible @@ -121,6 +122,7 @@ Rectangle Cura.TertiaryButton { + visible: readMoreUrl !== "" id: readMoreButton text: "Learn More" textFont: UM.Theme.getFont("default") @@ -131,6 +133,6 @@ Rectangle isIconOnRightSide: true height: fontMetrics.height - onClicked: print("TODO") + onClicked: Qt.openUrlExternally(readMoreUrl) } } \ No newline at end of file diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml index 91f6448994..9ef35a31b3 100644 --- a/plugins/Marketplace/resources/qml/Packages.qml +++ b/plugins/Marketplace/resources/qml/Packages.qml @@ -14,6 +14,7 @@ ListView property bool bannerVisible property string bannerIcon property string bannerBody + property string readMoreUrl property var onRemoveBanner width: parent.width diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index b9d38c6e2b..f0c101153c 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -10,6 +10,7 @@ Packages bannerVisible: CuraApplication.shouldShowMarketPlacePluginBanner() bannerIcon: "Shop" bannerBody: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") + readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { CuraApplication.closeMarketPlacePluginBanner(); bannerVisible = false; From e5c8d5456de7e288905ccb92d7673ac6f13590ff Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 11:50:52 +0100 Subject: [PATCH 07/25] Directly use bindings in banner pages CURA-8564 --- cura/CuraApplication.py | 27 ------------------- .../resources/qml/ManagedPackages.qml | 4 +-- .../Marketplace/resources/qml/Materials.qml | 5 ++-- plugins/Marketplace/resources/qml/Plugins.qml | 5 ++-- 4 files changed, 8 insertions(+), 33 deletions(-) diff --git a/cura/CuraApplication.py b/cura/CuraApplication.py index 6cf2593bbf..21924a2680 100755 --- a/cura/CuraApplication.py +++ b/cura/CuraApplication.py @@ -2015,33 +2015,6 @@ class CuraApplication(QtApplication): show_whatsnew_only = has_active_machine and has_app_just_upgraded return show_whatsnew_only - @pyqtSlot(result = bool) - def shouldShowMarketPlacePluginBanner(self) -> bool: - return self._preferences.getValue("cura/market_place_show_plugin_banner") - - @pyqtSlot(result = bool) - def shouldShowMarketPlaceMaterialBanner(self) -> bool: - return self._preferences.getValue("cura/market_place_show_material_banner") - - @pyqtSlot(result = bool) - def shouldShowMarketPlaceManagePackagesBanner(self) -> bool: - return self._preferences.getValue("cura/market_place_show_manage_packages_banner") - - @pyqtSlot() - def closeMarketPlacePluginBanner(self) -> None: - Logger.log("i", "Close market place plugin banner") - self._preferences.setValue("cura/market_place_show_plugin_banner", False) - - @pyqtSlot() - def closeMarketPlaceMaterialBanner(self) -> None: - Logger.log("i", "Close market place material banner") - self._preferences.setValue("cura/market_place_show_material_banner", False) - - @pyqtSlot() - def closeMarketPlaceManagePackagesBanner(self) -> None: - Logger.log("i", "Close market place manage packages banner") - self._preferences.setValue("cura/market_place_show_manage_packages_banner", False) - @pyqtSlot(result = int) def appWidth(self) -> int: main_window = QtApplication.getInstance().getMainWindow() diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index e8e54d77b5..677a9ee574 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -11,12 +11,12 @@ Packages { pageTitle: catalog.i18nc("@header", "Manage packages") - bannerVisible: CuraApplication.shouldShowMarketPlaceManagePackagesBanner() + bannerVisible: UM.Preferences.getValue("cura/market_place_show_manage_packages_banner"); bannerIcon: "ArrowDoubleCircleRight" bannerBody: catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { - CuraApplication.closeMarketPlaceManagePackagesBanner(); + UM.Preferences.setValue("cura/market_place_show_manage_packages_banner", false); bannerVisible = false; } diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index fc4869dac5..e4cd554334 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -2,17 +2,18 @@ // Cura is released under the terms of the LGPLv3 or higher. import Marketplace 1.0 as Marketplace +import UM 1.4 as UM Packages { pageTitle: catalog.i18nc("@header", "Install Materials") - bannerVisible: CuraApplication.shouldShowMarketPlaceMaterialBanner() + bannerVisible: UM.Preferences.getValue("cura/market_place_show_material_banner") bannerIcon: "Spool" bannerBody: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { - CuraApplication.closeMarketPlaceMaterialBanner(); + UM.Preferences.setValue("cura/market_place_show_material_banner", false); bannerVisible = false; } diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index f0c101153c..11aabedb85 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -2,17 +2,18 @@ // Cura is released under the terms of the LGPLv3 or higher. import Marketplace 1.0 as Marketplace +import UM 1.4 as UM Packages { pageTitle: catalog.i18nc("@header", "Install Plugins") - bannerVisible: CuraApplication.shouldShowMarketPlacePluginBanner() + bannerVisible: UM.Preferences.getValue("cura/market_place_show_plugin_banner") bannerIcon: "Shop" bannerBody: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { - CuraApplication.closeMarketPlacePluginBanner(); + UM.Preferences.setValue("cura/market_place_show_plugin_banner", false) bannerVisible = false; } From 00135e574dc464f1562c277ea389511dbc6735fb Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 11:53:35 +0100 Subject: [PATCH 08/25] Rename property `bannerBody` to `bannerText` CURA-8564 --- plugins/Marketplace/resources/qml/ManagedPackages.qml | 2 +- plugins/Marketplace/resources/qml/Marketplace.qml | 2 +- plugins/Marketplace/resources/qml/Materials.qml | 2 +- plugins/Marketplace/resources/qml/OnboardBanner.qml | 4 ++-- plugins/Marketplace/resources/qml/Packages.qml | 2 +- plugins/Marketplace/resources/qml/Plugins.qml | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index 677a9ee574..0d1472bb6a 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -13,7 +13,7 @@ Packages bannerVisible: UM.Preferences.getValue("cura/market_place_show_manage_packages_banner"); bannerIcon: "ArrowDoubleCircleRight" - bannerBody: catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly.") + bannerText: catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { UM.Preferences.setValue("cura/market_place_show_manage_packages_banner", false); diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 2bdd0a509d..fe1c967a42 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -51,7 +51,7 @@ Window OnboardBanner { bannerVisible: content.item && content.item.bannerVisible - bannerBody: content.item && content.item.bannerBody + bannerText: content.item && content.item.bannerText bannerIcon: content.item && content.item.bannerIcon onRemoveBanner: content.item && content.item.onRemoveBanner readMoreUrl: content.item.readMoreUrl && content.item.readMoreUrl diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index e4cd554334..a1d6d91f8c 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -10,7 +10,7 @@ Packages bannerVisible: UM.Preferences.getValue("cura/market_place_show_material_banner") bannerIcon: "Spool" - bannerBody: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") + bannerText: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { UM.Preferences.setValue("cura/market_place_show_material_banner", false); diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 4b5e494be5..8d68512878 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -13,7 +13,7 @@ Rectangle { property bool bannerVisible property string bannerIcon - property string bannerBody + property string bannerText property var onRemoveBanner property string readMoreUrl @@ -82,7 +82,7 @@ Rectangle } font: UM.Theme.getFont("default") - text: bannerBody + text: bannerText renderType: Text.NativeRendering color: "white" diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml index 9ef35a31b3..e98818299c 100644 --- a/plugins/Marketplace/resources/qml/Packages.qml +++ b/plugins/Marketplace/resources/qml/Packages.qml @@ -13,7 +13,7 @@ ListView property string pageTitle property bool bannerVisible property string bannerIcon - property string bannerBody + property string bannerText property string readMoreUrl property var onRemoveBanner diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index 11aabedb85..884529c3e0 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -10,7 +10,7 @@ Packages bannerVisible: UM.Preferences.getValue("cura/market_place_show_plugin_banner") bannerIcon: "Shop" - bannerBody: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") + bannerText: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { UM.Preferences.setValue("cura/market_place_show_plugin_banner", false) From f8d9f1e39c98546a31705d4b6fe489427f750810 Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 11:55:33 +0100 Subject: [PATCH 09/25] Use `visible` property of `Rectangle` rather than defining a separate property CURA-8564 --- plugins/Marketplace/resources/qml/Marketplace.qml | 2 +- plugins/Marketplace/resources/qml/OnboardBanner.qml | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index fe1c967a42..1ae82adfff 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -50,7 +50,7 @@ Window OnboardBanner { - bannerVisible: content.item && content.item.bannerVisible + visible: content.item && content.item.bannerVisible bannerText: content.item && content.item.bannerText bannerIcon: content.item && content.item.bannerIcon onRemoveBanner: content.item && content.item.onRemoveBanner diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 8d68512878..4a65297816 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -11,14 +11,11 @@ import Cura 1.6 as Cura // Onboarding banner. Rectangle { - property bool bannerVisible property string bannerIcon property string bannerText property var onRemoveBanner property string readMoreUrl - visible: bannerVisible - Layout.preferredHeight: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height anchors { From f1a9bbd7914b3dbdce17e0e2ec4d02b779c6acf1 Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 12:01:42 +0100 Subject: [PATCH 10/25] Use the `Item` element instead of `Rectangle` for banner icon To prevent un-necessary draw checks as the background is transparent CURA-8564 --- plugins/Marketplace/resources/qml/OnboardBanner.qml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 4a65297816..982bc0f501 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -28,7 +28,7 @@ Rectangle color: UM.Theme.getColor("action_panel_secondary") // Icon - Rectangle + Item { id: onboardingIcon anchors @@ -39,7 +39,6 @@ Rectangle } width: UM.Theme.getSize("button_icon").width height: UM.Theme.getSize("button_icon").height - color: "transparent" UM.RecolorImage { anchors.fill: parent From 0ca20e9b3d0f6716cb3fff68442661375bc712e3 Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 12:16:52 +0100 Subject: [PATCH 11/25] Use an `alias` property for the banner icon CURA-8564 --- plugins/Marketplace/resources/qml/ManagedPackages.qml | 2 +- plugins/Marketplace/resources/qml/Materials.qml | 2 +- plugins/Marketplace/resources/qml/OnboardBanner.qml | 10 ++-------- plugins/Marketplace/resources/qml/Packages.qml | 2 +- plugins/Marketplace/resources/qml/Plugins.qml | 2 +- 5 files changed, 6 insertions(+), 12 deletions(-) diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index 0d1472bb6a..9ce8408f8e 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -12,7 +12,7 @@ Packages pageTitle: catalog.i18nc("@header", "Manage packages") bannerVisible: UM.Preferences.getValue("cura/market_place_show_manage_packages_banner"); - bannerIcon: "ArrowDoubleCircleRight" + bannerIcon: UM.Theme.getIcon("ArrowDoubleCircleRight") bannerText: catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index a1d6d91f8c..de075af031 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -9,7 +9,7 @@ Packages pageTitle: catalog.i18nc("@header", "Install Materials") bannerVisible: UM.Preferences.getValue("cura/market_place_show_material_banner") - bannerIcon: "Spool" + bannerIcon: UM.Theme.getIcon("Spool") bannerText: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 982bc0f501..b44295c90a 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -11,7 +11,7 @@ import Cura 1.6 as Cura // Onboarding banner. Rectangle { - property string bannerIcon + property alias bannerIcon: onboardingIcon.source; property string bannerText property var onRemoveBanner property string readMoreUrl @@ -28,7 +28,7 @@ Rectangle color: UM.Theme.getColor("action_panel_secondary") // Icon - Item + UM.RecolorImage { id: onboardingIcon anchors @@ -39,12 +39,6 @@ Rectangle } width: UM.Theme.getSize("button_icon").width height: UM.Theme.getSize("button_icon").height - UM.RecolorImage - { - anchors.fill: parent - color: UM.Theme.getColor("primary_text") - source: UM.Theme.getIcon(bannerIcon) - } } // Close button diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml index e98818299c..722ad0ccda 100644 --- a/plugins/Marketplace/resources/qml/Packages.qml +++ b/plugins/Marketplace/resources/qml/Packages.qml @@ -12,7 +12,7 @@ ListView property string pageTitle property bool bannerVisible - property string bannerIcon + property var bannerIcon property string bannerText property string readMoreUrl property var onRemoveBanner diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index 884529c3e0..2922a39c9b 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -9,7 +9,7 @@ Packages pageTitle: catalog.i18nc("@header", "Install Plugins") bannerVisible: UM.Preferences.getValue("cura/market_place_show_plugin_banner") - bannerIcon: "Shop" + bannerIcon: UM.Theme.getIcon("Shop") bannerText: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") readMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { From 6909085733a46bda1e99fe36c2eaba07ae6ed32d Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 12:26:48 +0100 Subject: [PATCH 12/25] Use color from theme for the market place banner banner text CURA-8564 --- plugins/Marketplace/resources/qml/OnboardBanner.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index b44295c90a..148a279cd2 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -75,7 +75,7 @@ Rectangle text: bannerText renderType: Text.NativeRendering - color: "white" + color: UM.Theme.getColor("primary_text") wrapMode: Text.Wrap elide: Text.ElideRight From b53c1ba3061b4fc3dbeb46e161f7f186fa399ceb Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 12:34:25 +0100 Subject: [PATCH 13/25] Move static anchor properties inside the `TertiaryButton` element CURA-8564 --- plugins/Marketplace/resources/qml/OnboardBanner.qml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 148a279cd2..62f6b96356 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -87,16 +87,12 @@ Rectangle if (line.implicitWidth + readMoreButton.width + UM.Theme.getSize("default_margin").width > width) { // If it does place it after the body text - readMoreButton.anchors.left = infoText.left; - readMoreButton.anchors.bottom = infoText.bottom; readMoreButton.anchors.bottomMargin = -(fontMetrics.height + UM.Theme.getSize("thin_margin").height); readMoreButton.anchors.leftMargin = 0; } else { // Otherwise place it under the text - readMoreButton.anchors.left = infoText.left; - readMoreButton.anchors.bottom = infoText.bottom; readMoreButton.anchors.leftMargin = line.implicitWidth + UM.Theme.getSize("default_margin").width; readMoreButton.anchors.bottomMargin = 0; } @@ -114,6 +110,8 @@ Rectangle { visible: readMoreUrl !== "" id: readMoreButton + anchors.left: infoText.left + anchors.bottom: infoText.bottom text: "Learn More" textFont: UM.Theme.getFont("default") textColor: infoText.color From c136deb430b1a0f9a82195eea28e6fbc0bcf2c3e Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 14:34:15 +0100 Subject: [PATCH 14/25] Remove top anchor from an element used in ColumnLayout This element did need additional margins at the top. Added margins to the ColumnLayout element instead. CURA-8564 --- plugins/Marketplace/resources/qml/Marketplace.qml | 4 ++-- plugins/Marketplace/resources/qml/OnboardBanner.qml | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 1ae82adfff..e1936d6e44 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -40,6 +40,7 @@ Window Rectangle { anchors.fill: parent + anchors.topMargin: UM.Theme.getSize("default_margin").height color: UM.Theme.getColor("main_background") ColumnLayout @@ -61,7 +62,7 @@ Window Item { Layout.preferredWidth: parent.width - Layout.preferredHeight: childrenRect.height + UM.Theme.getSize("default_margin").height + Layout.preferredHeight: childrenRect.height Label { @@ -72,7 +73,6 @@ Window leftMargin: UM.Theme.getSize("default_margin").width right: parent.right rightMargin: UM.Theme.getSize("default_margin").width - bottom: parent.bottom } font: UM.Theme.getFont("large") diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 62f6b96356..0107d6d816 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -22,7 +22,6 @@ Rectangle margins: UM.Theme.getSize("default_margin").width left: parent.left right: parent.right - top: parent.top } color: UM.Theme.getColor("action_panel_secondary") From 6ca20ba863a71cc81e0f477d89a88ad04189d1db Mon Sep 17 00:00:00 2001 From: casper Date: Mon, 29 Nov 2021 15:09:33 +0100 Subject: [PATCH 15/25] Rename properties in marketplace onboarding banner CURA-8564 --- plugins/Marketplace/resources/qml/ManagedPackages.qml | 2 +- plugins/Marketplace/resources/qml/Marketplace.qml | 8 ++++---- plugins/Marketplace/resources/qml/Materials.qml | 2 +- plugins/Marketplace/resources/qml/OnboardBanner.qml | 9 ++++----- plugins/Marketplace/resources/qml/Packages.qml | 2 +- plugins/Marketplace/resources/qml/Plugins.qml | 2 +- 6 files changed, 12 insertions(+), 13 deletions(-) diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index 9ce8408f8e..2610f7cd9d 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -14,7 +14,7 @@ Packages bannerVisible: UM.Preferences.getValue("cura/market_place_show_manage_packages_banner"); bannerIcon: UM.Theme.getIcon("ArrowDoubleCircleRight") bannerText: catalog.i18nc("@text", "Manage your Ultimaker Cura plugins and material profiles here. Make sure to keep your plugins up to date and backup your setup regularly.") - readMoreUrl: "" // TODO add when support page is ready + bannerReadMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { UM.Preferences.setValue("cura/market_place_show_manage_packages_banner", false); bannerVisible = false; diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index e1936d6e44..1866d7512d 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -52,10 +52,10 @@ Window OnboardBanner { visible: content.item && content.item.bannerVisible - bannerText: content.item && content.item.bannerText - bannerIcon: content.item && content.item.bannerIcon - onRemoveBanner: content.item && content.item.onRemoveBanner - readMoreUrl: content.item.readMoreUrl && content.item.readMoreUrl + text: content.item && content.item.bannerText + icon: content.item && content.item.bannerIcon + onRemove: content.item && content.item.onRemoveBanner + readMoreUrl: content.item && content.item.bannerReadMoreUrl } // Page title. diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index de075af031..2634f7b328 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -11,7 +11,7 @@ Packages bannerVisible: UM.Preferences.getValue("cura/market_place_show_material_banner") bannerIcon: UM.Theme.getIcon("Spool") bannerText: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") - readMoreUrl: "" // TODO add when support page is ready + bannerReadMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { UM.Preferences.setValue("cura/market_place_show_material_banner", false); bannerVisible = false; diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 0107d6d816..0dbe2cb897 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -11,9 +11,9 @@ import Cura 1.6 as Cura // Onboarding banner. Rectangle { - property alias bannerIcon: onboardingIcon.source; - property string bannerText - property var onRemoveBanner + property alias icon: onboardingIcon.source + property alias text: infoText.text + property var onRemove property string readMoreUrl Layout.preferredHeight: childrenRect.height + 2 * UM.Theme.getSize("default_margin").height @@ -56,7 +56,7 @@ Rectangle hoverColor: UM.Theme.getColor("primary_text_hover") iconSource: UM.Theme.getIcon("Cancel") - onClicked: onRemoveBanner() + onClicked: onRemove() } // Body @@ -71,7 +71,6 @@ Rectangle } font: UM.Theme.getFont("default") - text: bannerText renderType: Text.NativeRendering color: UM.Theme.getColor("primary_text") diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml index 722ad0ccda..46ebe8a661 100644 --- a/plugins/Marketplace/resources/qml/Packages.qml +++ b/plugins/Marketplace/resources/qml/Packages.qml @@ -14,7 +14,7 @@ ListView property bool bannerVisible property var bannerIcon property string bannerText - property string readMoreUrl + property string bannerReadMoreUrl property var onRemoveBanner width: parent.width diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index 2922a39c9b..29b264c702 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -11,7 +11,7 @@ Packages bannerVisible: UM.Preferences.getValue("cura/market_place_show_plugin_banner") bannerIcon: UM.Theme.getIcon("Shop") bannerText: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") - readMoreUrl: "" // TODO add when support page is ready + bannerReadMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { UM.Preferences.setValue("cura/market_place_show_plugin_banner", false) bannerVisible = false; From d96ba0dcf35f1270d4dfadc7112799090b85fd35 Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 10:51:43 +0100 Subject: [PATCH 16/25] Easy navigation to Cloud marketplace CURA-8563 --- plugins/Marketplace/resources/qml/ManagedPackages.qml | 1 + plugins/Marketplace/resources/qml/Marketplace.qml | 11 +++++++++++ plugins/Marketplace/resources/qml/Materials.qml | 1 + plugins/Marketplace/resources/qml/Packages.qml | 1 + plugins/Marketplace/resources/qml/Plugins.qml | 1 + 5 files changed, 15 insertions(+) diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index 2610f7cd9d..b90bffd723 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -19,6 +19,7 @@ Packages UM.Preferences.setValue("cura/market_place_show_manage_packages_banner", false); bannerVisible = false; } + searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins" model: Marketplace.LocalPackageList { diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 1866d7512d..4fd8c9e999 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -162,6 +162,17 @@ Window } } + Cura.TertiaryButton + { + text: catalog.i18nc("@info", "Search in the browser") + iconSource: UM.Theme.getIcon("LinkExternal") + + isIconOnRightSide: true + font: UM.Theme.getFont("default") + + onClicked: content.item && Qt.openUrlExternally(content.item.searchInBrowserUrl) + } + // Page contents. Rectangle { diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index 2634f7b328..3afe7b412a 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -16,6 +16,7 @@ Packages UM.Preferences.setValue("cura/market_place_show_material_banner", false); bannerVisible = false; } + searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/materials" model: Marketplace.RemotePackageList { diff --git a/plugins/Marketplace/resources/qml/Packages.qml b/plugins/Marketplace/resources/qml/Packages.qml index 46ebe8a661..c192cc5dd9 100644 --- a/plugins/Marketplace/resources/qml/Packages.qml +++ b/plugins/Marketplace/resources/qml/Packages.qml @@ -11,6 +11,7 @@ ListView id: packages property string pageTitle + property string searchInBrowserUrl property bool bannerVisible property var bannerIcon property string bannerText diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index 29b264c702..c473a3a48e 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -16,6 +16,7 @@ Packages UM.Preferences.setValue("cura/market_place_show_plugin_banner", false) bannerVisible = false; } + searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins" model: Marketplace.RemotePackageList { From 49db5be3aa731f8c9be6fe39f77ccbb8ee26f622 Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 10:52:15 +0100 Subject: [PATCH 17/25] Decrease margin sizes They were way bigger compared to the UX design CURA-8563 --- plugins/Marketplace/resources/qml/Marketplace.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 4fd8c9e999..a825e712f7 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -47,7 +47,7 @@ Window { anchors.fill: parent - spacing: UM.Theme.getSize("default_margin").height + spacing: UM.Theme.getSize("thin_margin").height OnboardBanner { @@ -89,7 +89,7 @@ Window RowLayout { width: parent.width - height: UM.Theme.getSize("button_icon").height + UM.Theme.getSize("default_margin").height + height: UM.Theme.getSize("button_icon").height + UM.Theme.getSize("thin_margin").height spacing: UM.Theme.getSize("thin_margin").width Rectangle From 82d148d0773ad2ec11041a2b0139f74b1193685c Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 12:08:09 +0100 Subject: [PATCH 18/25] Add correct text to material and plugins onboarding banners CURA-8564 --- plugins/Marketplace/resources/qml/Materials.qml | 2 +- plugins/Marketplace/resources/qml/Plugins.qml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index 2634f7b328..cbab3a354e 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -10,7 +10,7 @@ Packages bannerVisible: UM.Preferences.getValue("cura/market_place_show_material_banner") bannerIcon: UM.Theme.getIcon("Spool") - bannerText: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") + bannerText: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") bannerReadMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { UM.Preferences.setValue("cura/market_place_show_material_banner", false); diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index 29b264c702..635c0a8d22 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -10,7 +10,7 @@ Packages bannerVisible: UM.Preferences.getValue("cura/market_place_show_plugin_banner") bannerIcon: UM.Theme.getIcon("Shop") - bannerText: catalog.i18nc("@text", "Select and install material profiles optimised for your Ultimaker 3D printers.") + bannerText: catalog.i18nc("@text", "Streamline your workflow and customize your Ultimaker Cura experience with plugins contributed by our amazing community of users.") bannerReadMoreUrl: "" // TODO add when support page is ready onRemoveBanner: function() { UM.Preferences.setValue("cura/market_place_show_plugin_banner", false) From ca602067284f48a4b84157d7dc9f2c803f5bd109 Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 12:10:55 +0100 Subject: [PATCH 19/25] Always show read more button in on boarding banner Even if there is no link CURA-8564 --- plugins/Marketplace/resources/qml/OnboardBanner.qml | 1 - 1 file changed, 1 deletion(-) diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 0dbe2cb897..90af5f9b4f 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -106,7 +106,6 @@ Rectangle Cura.TertiaryButton { - visible: readMoreUrl !== "" id: readMoreButton anchors.left: infoText.left anchors.bottom: infoText.bottom From 8e6210fb2cb87425221baba7a53d24154a6dbba0 Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 12:11:32 +0100 Subject: [PATCH 20/25] Change margins of read more button in marketplace onboarding banner To comply with UX design CURA-8564 --- plugins/Marketplace/resources/qml/OnboardBanner.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index 90af5f9b4f..a2c1613bcb 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -85,8 +85,8 @@ Rectangle if (line.implicitWidth + readMoreButton.width + UM.Theme.getSize("default_margin").width > width) { // If it does place it after the body text - readMoreButton.anchors.bottomMargin = -(fontMetrics.height + UM.Theme.getSize("thin_margin").height); - readMoreButton.anchors.leftMargin = 0; + readMoreButton.anchors.bottomMargin = -(fontMetrics.height); + readMoreButton.anchors.leftMargin = UM.Theme.getSize("thin_margin").width; } else { From 5a148e459f7c5a8284ad592d8079bd5b191fd124 Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 12:19:32 +0100 Subject: [PATCH 21/25] Decrease size of the icons in the marketplace onboarding banners CURA-8564 --- plugins/Marketplace/resources/qml/OnboardBanner.qml | 4 ++-- resources/themes/cura-light/theme.json | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/plugins/Marketplace/resources/qml/OnboardBanner.qml b/plugins/Marketplace/resources/qml/OnboardBanner.qml index a2c1613bcb..f77f8bee97 100644 --- a/plugins/Marketplace/resources/qml/OnboardBanner.qml +++ b/plugins/Marketplace/resources/qml/OnboardBanner.qml @@ -36,8 +36,8 @@ Rectangle left: parent.left margins: UM.Theme.getSize("default_margin").width } - width: UM.Theme.getSize("button_icon").width - height: UM.Theme.getSize("button_icon").height + width: UM.Theme.getSize("banner_icon_size").width + height: UM.Theme.getSize("banner_icon_size").height } // Close button diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 81885faaf0..c29ddc2a86 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -683,6 +683,8 @@ "table_row": [2.0, 2.0], "welcome_wizard_content_image_big": [18, 15], - "welcome_wizard_cloud_content_image": [4, 4] + "welcome_wizard_cloud_content_image": [4, 4], + + "banner_icon_size": [2.0, 2.0] } } From d291ea85a28ff5bea76c7a0fea4f78655d34cbdb Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 12:20:21 +0100 Subject: [PATCH 22/25] Place the on boarding banners in the correct place in the marketplace To comply with the UX design CURA-8564 --- .../Marketplace/resources/qml/Marketplace.qml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 1866d7512d..53a1f189bc 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -49,15 +49,6 @@ Window spacing: UM.Theme.getSize("default_margin").height - OnboardBanner - { - visible: content.item && content.item.bannerVisible - text: content.item && content.item.bannerText - icon: content.item && content.item.bannerIcon - onRemove: content.item && content.item.onRemoveBanner - readMoreUrl: content.item && content.item.bannerReadMoreUrl - } - // Page title. Item { @@ -81,6 +72,15 @@ Window } } + OnboardBanner + { + visible: content.item && content.item.bannerVisible + text: content.item && content.item.bannerText + icon: content.item && content.item.bannerIcon + onRemove: content.item && content.item.onRemoveBanner + readMoreUrl: content.item && content.item.bannerReadMoreUrl + } + // Search & Top-Level Tabs Item { From c62b21ad44b5c9adb4619f949a7876d226d74957 Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 12:57:22 +0100 Subject: [PATCH 23/25] Revert "Decrease margin sizes" This reverts commit 49db5be3aa731f8c9be6fe39f77ccbb8ee26f622. --- plugins/Marketplace/resources/qml/Marketplace.qml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index a825e712f7..4fd8c9e999 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -47,7 +47,7 @@ Window { anchors.fill: parent - spacing: UM.Theme.getSize("thin_margin").height + spacing: UM.Theme.getSize("default_margin").height OnboardBanner { @@ -89,7 +89,7 @@ Window RowLayout { width: parent.width - height: UM.Theme.getSize("button_icon").height + UM.Theme.getSize("thin_margin").height + height: UM.Theme.getSize("button_icon").height + UM.Theme.getSize("default_margin").height spacing: UM.Theme.getSize("thin_margin").width Rectangle From 97ba4489ffc47360be7c51a0ac96c5b3915be1ed Mon Sep 17 00:00:00 2001 From: casper Date: Tue, 30 Nov 2021 13:01:45 +0100 Subject: [PATCH 24/25] Remove unneeded margin from search bar Cura 8563 --- plugins/Marketplace/resources/qml/Marketplace.qml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/Marketplace/resources/qml/Marketplace.qml b/plugins/Marketplace/resources/qml/Marketplace.qml index 4fd8c9e999..7b975e1c2f 100644 --- a/plugins/Marketplace/resources/qml/Marketplace.qml +++ b/plugins/Marketplace/resources/qml/Marketplace.qml @@ -89,7 +89,7 @@ Window RowLayout { width: parent.width - height: UM.Theme.getSize("button_icon").height + UM.Theme.getSize("default_margin").height + height: UM.Theme.getSize("button_icon").height spacing: UM.Theme.getSize("thin_margin").width Rectangle From b0275cfba9e9150adc6af952f4c40a0a39774d5c Mon Sep 17 00:00:00 2001 From: Jaime van Kessel Date: Tue, 30 Nov 2021 14:17:40 +0100 Subject: [PATCH 25/25] Add campaign links CURA-8563 --- plugins/Marketplace/resources/qml/ManagedPackages.qml | 2 +- plugins/Marketplace/resources/qml/Materials.qml | 2 +- plugins/Marketplace/resources/qml/Plugins.qml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/plugins/Marketplace/resources/qml/ManagedPackages.qml b/plugins/Marketplace/resources/qml/ManagedPackages.qml index b90bffd723..f44fbd0a9b 100644 --- a/plugins/Marketplace/resources/qml/ManagedPackages.qml +++ b/plugins/Marketplace/resources/qml/ManagedPackages.qml @@ -19,7 +19,7 @@ Packages UM.Preferences.setValue("cura/market_place_show_manage_packages_banner", false); bannerVisible = false; } - searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins" + searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-plugins-browser" model: Marketplace.LocalPackageList { diff --git a/plugins/Marketplace/resources/qml/Materials.qml b/plugins/Marketplace/resources/qml/Materials.qml index 3afe7b412a..489915aa10 100644 --- a/plugins/Marketplace/resources/qml/Materials.qml +++ b/plugins/Marketplace/resources/qml/Materials.qml @@ -16,7 +16,7 @@ Packages UM.Preferences.setValue("cura/market_place_show_material_banner", false); bannerVisible = false; } - searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/materials" + searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/materials?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-materials-browser" model: Marketplace.RemotePackageList { diff --git a/plugins/Marketplace/resources/qml/Plugins.qml b/plugins/Marketplace/resources/qml/Plugins.qml index c473a3a48e..3b0b5d7c23 100644 --- a/plugins/Marketplace/resources/qml/Plugins.qml +++ b/plugins/Marketplace/resources/qml/Plugins.qml @@ -16,7 +16,7 @@ Packages UM.Preferences.setValue("cura/market_place_show_plugin_banner", false) bannerVisible = false; } - searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins" + searchInBrowserUrl: "https://marketplace.ultimaker.com/app/cura/plugins?utm_source=cura&utm_medium=software&utm_campaign=marketplace-search-plugins-browser" model: Marketplace.RemotePackageList {