diff --git a/resources/qml/WelcomePages/AddPrinterScrollView.qml b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml similarity index 96% rename from resources/qml/WelcomePages/AddPrinterScrollView.qml rename to resources/qml/WelcomePages/AddLocalPrinterScrollView.qml index b56a0ea0c2..2e85117d5c 100644 --- a/resources/qml/WelcomePages/AddPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml @@ -16,7 +16,9 @@ ScrollView { id: base - property var currentItem: null + property var currentItem: (machineList.currentIndex >= 0) + ? machineList.model.getItem(machineList.currentIndex) + : null property string currentSection: preferredCategory property string preferredCategory: "Ultimaker" @@ -36,7 +38,6 @@ ScrollView var item = machineList.model.getItem(i) if (item.section == base.currentSection) { - base.currentItem = item machineList.currentIndex = i break } diff --git a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml index 68105b9a37..9fe1571dd2 100644 --- a/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddNetworkPrinterScrollView.qml @@ -21,7 +21,9 @@ Item height: networkPrinterScrollView.height + controlsRectangle.height property alias maxItemCountAtOnce: networkPrinterScrollView.maxItemCountAtOnce - property var selectedItem: networkPrinterListView.model[networkPrinterListView.currentIndex] + property var currentItem: (networkPrinterListView.currentIndex >= 0) + ? networkPrinterListView.model[networkPrinterListView.currentIndex] + : null signal refreshButtonClicked() signal addByIpButtonClicked() diff --git a/resources/qml/WelcomePages/AddPrinterBySelectionContent.qml b/resources/qml/WelcomePages/AddPrinterBySelectionContent.qml index 5d02cb1099..6440ed39c0 100644 --- a/resources/qml/WelcomePages/AddPrinterBySelectionContent.qml +++ b/resources/qml/WelcomePages/AddPrinterBySelectionContent.qml @@ -38,6 +38,7 @@ Item anchors.margins: 20 title: catalog.i18nc("@label", "Add a network printer") + contentShown: true // by default expand the network printer list onClicked: { @@ -97,7 +98,7 @@ Item { id: localPrinterListComponent - AddPrinterScrollView + AddLocalPrinterScrollView { id: localPrinterView @@ -112,10 +113,42 @@ Item anchors.right: parent.right anchors.bottom: parent.bottom anchors.margins: 40 - enabled: true // TODO + enabled: + { + // If the network printer dropdown is expanded, make sure that there is a selected item + if (addNetworkPrinterDropDown.contentShown) + { + return addNetworkPrinterDropDown.contentItem.currentItem != null + } + else + { + return addLocalPrinterDropDown.contentItem.currentItem != null + } + } + text: catalog.i18nc("@button", "Next") width: 140 fixedWidthMode: true - onClicked: base.showNextPage() + onClicked: + { + // Create a network printer or a local printer according to the selection + if (addNetworkPrinterDropDown.contentShown) + { + // Create a network printer + const networkPrinterItem = addNetworkPrinterDropDown.contentItem.currentItem + CuraApplication.getDiscoveredPrinterModel().createMachineFromDiscoveredPrinter(networkPrinterItem) + } + else + { + // Create a local printer + const localPrinterItem = addLocalPrinterDropDown.contentItem.currentItem + Cura.MachineManager.addMachine(localPrinterItem.id) + } + + // TODO: implement machine actions + + // If we have created a machine, go to the last page, which is the "cloud" page. + base.gotoPage("cloud") + } } } diff --git a/resources/qml/WelcomePages/DropDownHeader.qml b/resources/qml/WelcomePages/DropDownHeader.qml index 910efdefcd..a712382850 100644 --- a/resources/qml/WelcomePages/DropDownHeader.qml +++ b/resources/qml/WelcomePages/DropDownHeader.qml @@ -43,10 +43,7 @@ Cura.RoundedRectangle onEntered: base.hovered = true onExited: base.hovered = false - onClicked: { - base.contentShown = !base.contentShown - base.clicked() - } + onClicked: base.clicked() } Label diff --git a/resources/qml/WelcomePages/DropDownWidget.qml b/resources/qml/WelcomePages/DropDownWidget.qml index b075666314..cff9cf8ac1 100644 --- a/resources/qml/WelcomePages/DropDownWidget.qml +++ b/resources/qml/WelcomePages/DropDownWidget.qml @@ -25,16 +25,21 @@ Item height: header.contentShown ? (header.height + contentRectangle.height + 30) : header.height property var contentComponent: null + property alias contentItem: contentLoader.item property alias title: header.title - property alias contentShown: header.contentShown + property bool contentShown: false signal clicked() Connections { target: header - onClicked: base.clicked() + onClicked: + { + base.contentShown = !base.contentShown + clicked() + } } DropDownHeader @@ -45,7 +50,7 @@ Item anchors.right: parent.right height: UM.Theme.getSize("expandable_component_content_header").height rightIconSource: contentShown ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_right") - + contentShown: base.contentShown } Cura.RoundedRectangle