diff --git a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml index ff64cdc33e..157a3262ec 100644 --- a/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml +++ b/resources/qml/WelcomePages/AddLocalPrinterScrollView.qml @@ -12,9 +12,12 @@ import Cura 1.0 as Cura // This is the scroll view widget for adding a (local) printer. This scroll view shows a list view with printers // categorized into 3 categories: "Ultimaker", "Custom", and "Other". // -ScrollView +Item { + UM.I18nCatalog { id: catalog; name: "cura" } + id: base + height: childrenRect.height // The currently selected machine item in the local machine list. property var currentItem: (machineList.currentIndex >= 0) @@ -25,12 +28,15 @@ ScrollView // By default (when this list shows up) we always expand the "Ultimaker" section. property string preferredCategory: "Ultimaker" - ScrollBar.horizontal.policy: ScrollBar.AlwaysOff - ScrollBar.vertical.policy: ScrollBar.AsNeeded property int maxItemCountAtOnce: 10 // show at max 10 items at once, otherwise you need to scroll. - height: maxItemCountAtOnce * UM.Theme.getSize("action_button").height - clip: true + // User-editable printer name + property alias printerName: printerNameTextField.text + + onCurrentItemChanged: + { + printerName = currentItem == null ? "" : currentItem.name + } function updateCurrentItemUponSectionChange() { @@ -51,103 +57,160 @@ ScrollView updateCurrentItemUponSectionChange() } - ListView + Item { - id: machineList + id: localPrinterSelectionItem + anchors.left: parent.left + anchors.right: parent.right + anchors.top: parent.top + height: childrenRect.height - model: UM.DefinitionContainersModel + // ScrollView + ListView for selecting a local printer to add + ScrollView { - id: machineDefinitionsModel - filter: { "visible": true } - sectionProperty: "category" - preferredSectionValue: preferredCategory - } - - section.property: "section" - section.delegate: sectionHeader - delegate: machineButton - } - - Component - { - id: sectionHeader - - Button - { - id: button - width: ListView.view.width - height: UM.Theme.getSize("action_button").height - text: section - - property bool isActive: base.currentSection == section - - background: Rectangle - { - anchors.fill: parent - color: isActive ? UM.Theme.getColor("setting_control_highlight") : "transparent" - } - - contentItem: Item - { - width: childrenRect.width - height: UM.Theme.getSize("action_button").height - - UM.RecolorImage - { - id: arrow - anchors.left: parent.left - width: UM.Theme.getSize("standard_arrow").width - height: UM.Theme.getSize("standard_arrow").height - sourceSize.width: width - sourceSize.height: height - color: UM.Theme.getColor("text") - source: base.currentSection == section ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_right") - } - - Label - { - id: label - anchors.left: arrow.right - anchors.leftMargin: UM.Theme.getSize("default_margin").width - verticalAlignment: Text.AlignVCenter - text: button.text - font.bold: true - renderType: Text.NativeRendering - } - } - - onClicked: - { - base.currentSection = section - base.updateCurrentItemUponSectionChange() - } - } - } - - Component - { - id: machineButton - - Cura.RadioButton - { - id: radioButton + id: scrollView anchors.left: parent.left - anchors.leftMargin: UM.Theme.getSize("standard_list_lineheight").width anchors.right: parent.right - anchors.rightMargin: UM.Theme.getSize("default_margin").width - height: visible ? UM.Theme.getSize("standard_list_lineheight").height : 0 + anchors.top: parent.top - checked: ListView.view.currentIndex == index - onCheckedChanged: + height: maxItemCountAtOnce * UM.Theme.getSize("action_button").height + + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + ScrollBar.vertical.policy: ScrollBar.AsNeeded + + clip: true + + ListView { - if(checked) + id: machineList + + model: UM.DefinitionContainersModel { - machineList.currentIndex = index + id: machineDefinitionsModel + filter: { "visible": true } + sectionProperty: "category" + preferredSectionValue: preferredCategory + } + + section.property: "section" + section.delegate: sectionHeader + delegate: machineButton + } + + Component + { + id: sectionHeader + + Button + { + id: button + width: ListView.view.width + height: UM.Theme.getSize("action_button").height + text: section + + property bool isActive: base.currentSection == section + + background: Rectangle + { + anchors.fill: parent + color: isActive ? UM.Theme.getColor("setting_control_highlight") : "transparent" + } + + contentItem: Item + { + width: childrenRect.width + height: UM.Theme.getSize("action_button").height + + UM.RecolorImage + { + id: arrow + anchors.left: parent.left + width: UM.Theme.getSize("standard_arrow").width + height: UM.Theme.getSize("standard_arrow").height + sourceSize.width: width + sourceSize.height: height + color: UM.Theme.getColor("text") + source: base.currentSection == section ? UM.Theme.getIcon("arrow_bottom") : UM.Theme.getIcon("arrow_right") + } + + Label + { + id: label + anchors.left: arrow.right + anchors.leftMargin: UM.Theme.getSize("default_margin").width + verticalAlignment: Text.AlignVCenter + text: button.text + font.bold: true + renderType: Text.NativeRendering + } + } + + onClicked: + { + base.currentSection = section + base.updateCurrentItemUponSectionChange() + } } } - text: name - visible: base.currentSection == section - onClicked: ListView.view.currentIndex = index + + Component + { + id: machineButton + + Cura.RadioButton + { + id: radioButton + anchors.left: parent.left + anchors.leftMargin: UM.Theme.getSize("standard_list_lineheight").width + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + height: visible ? UM.Theme.getSize("standard_list_lineheight").height : 0 + + checked: ListView.view.currentIndex == index + text: name + visible: base.currentSection == section + onClicked: ListView.view.currentIndex = index + } + } + } + } + + // Horizontal line + Rectangle + { + id: horizontalLine + anchors.top: localPrinterSelectionItem.bottom + anchors.left: parent.left + anchors.right: parent.right + height: UM.Theme.getSize("default_lining").height + color: UM.Theme.getColor("lining") + } + + // User-editable printer name row + Row + { + anchors.top: horizontalLine.bottom + anchors.left: parent.left + anchors.right: parent.right + anchors.topMargin: UM.Theme.getSize("default_lining").height + anchors.leftMargin: UM.Theme.getSize("default_margin").width + + spacing: UM.Theme.getSize("default_margin").width + + Label + { + text: catalog.i18nc("@label", "Printer Name") + anchors.verticalCenter: parent.verticalCenter + font: UM.Theme.getFont("medium") + verticalAlignment: Text.AlignVCenter + renderType: Text.NativeRendering + } + + Cura.TextField + { + id: printerNameTextField + anchors.verticalCenter: parent.verticalCenter + width: (parent.width / 2) | 0 } } } diff --git a/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml b/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml index 34e0a58d8f..b5484e9916 100644 --- a/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml +++ b/resources/qml/WelcomePages/AddNetworkOrLocalPrinterContent.qml @@ -139,7 +139,8 @@ Item { // Create a local printer const localPrinterItem = addLocalPrinterDropDown.contentItem.currentItem - Cura.MachineManager.addMachine(localPrinterItem.id) + const printerName = addLocalPrinterDropDown.contentItem.printerName + Cura.MachineManager.addMachine(localPrinterItem.id, printerName) base.showNextPage() }