Merge pull request #16626 from Ultimaker/CURA-10896_improve_add_printer_wizard

CURA-10896_improve_add_printer_wizard
This commit is contained in:
Saumya Jain 2023-09-04 11:51:25 +02:00 committed by GitHub
commit e27779564a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 97 additions and 84 deletions

View File

@ -822,12 +822,26 @@ UM.MainWindow
} }
} }
Cura.WizardDialog property var wizardDialog
Component
{ {
id: addMachineDialog id: addMachineDialogLoader
title: catalog.i18nc("@title:window", "Add Printer")
model: CuraApplication.getAddPrinterPagesModel() Cura.WizardDialog
progressBarVisible: false {
title: catalog.i18nc("@title:window", "Add Printer")
maximumWidth: Screen.width * 2
maximumHeight: Screen.height * 2
model: CuraApplication.getAddPrinterPagesModel()
progressBarVisible: false
onVisibleChanged:
{
if(!visible)
{
wizardDialog = null
}
}
}
} }
Cura.WizardDialog Cura.WizardDialog
@ -852,9 +866,8 @@ UM.MainWindow
target: Cura.Actions.addMachine target: Cura.Actions.addMachine
function onTriggered() function onTriggered()
{ {
// Make sure to show from the first page when the dialog shows up. wizardDialog = addMachineDialogLoader.createObject()
addMachineDialog.resetModelState() wizardDialog.show()
addMachineDialog.show()
} }
} }

View File

@ -55,6 +55,7 @@ UM.TooltipArea
} }
ScrollBar.vertical: UM.ScrollBar {} ScrollBar.vertical: UM.ScrollBar {}
clip: true
TextArea.flickable: TextArea TextArea.flickable: TextArea
{ {
@ -70,6 +71,7 @@ UM.TooltipArea
selectionColor: UM.Theme.getColor("text_selection") selectionColor: UM.Theme.getColor("text_selection")
selectedTextColor: UM.Theme.getColor("text") selectedTextColor: UM.Theme.getColor("text")
wrapMode: TextEdit.NoWrap wrapMode: TextEdit.NoWrap
padding: UM.Theme.getSize("narrow_margin").height + backgroundRectangle.border.width
onActiveFocusChanged: onActiveFocusChanged:
{ {
@ -81,8 +83,9 @@ UM.TooltipArea
background: Rectangle background: Rectangle
{ {
id: backgroundRectangle
anchors.fill: parent anchors.fill: parent
anchors.margins: -border.width //Wrap the border around the parent.
color: UM.Theme.getColor("detail_background") color: UM.Theme.getColor("detail_background")
border.color: border.color:

View File

@ -3,6 +3,7 @@
import QtQuick 2.10 import QtQuick 2.10
import QtQuick.Controls 2.3 import QtQuick.Controls 2.3
import QtQuick.Layouts 2.3
import UM 1.5 as UM import UM 1.5 as UM
import Cura 1.1 as Cura import Cura 1.1 as Cura
@ -15,9 +16,7 @@ import Cura 1.1 as Cura
Item Item
{ {
id: base id: base
height: networkPrinterInfo.height + controlsRectangle.height
property alias maxItemCountAtOnce: networkPrinterListView.maxItemCountAtOnce
property var currentItem: (networkPrinterListView.currentIndex >= 0) property var currentItem: (networkPrinterListView.currentIndex >= 0)
? networkPrinterListView.model[networkPrinterListView.currentIndex] ? networkPrinterListView.model[networkPrinterListView.currentIndex]
: null : null
@ -29,35 +28,32 @@ Item
Item Item
{ {
id: networkPrinterInfo id: networkPrinterInfo
height: networkPrinterListView.visible ? networkPrinterListView.height : noPrinterLabel.height
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.top: parent.top anchors.top: parent.top
anchors.bottom: separator.top
UM.Label UM.Label
{ {
id: noPrinterLabel id: noPrinterLabel
height: UM.Theme.getSize("setting_control").height + UM.Theme.getSize("default_margin").height height: UM.Theme.getSize("setting_control").height + UM.Theme.getSize("default_margin").height
anchors.left: parent.left anchors.fill: parent
anchors.leftMargin: UM.Theme.getSize("default_margin").width anchors.margins: UM.Theme.getSize("default_margin").width
text: catalog.i18nc("@label", "There is no printer found over your network.") text: catalog.i18nc("@label", "There is no printer found over your network.")
visible: networkPrinterListView.count == 0 // Do not show if there are discovered devices. visible: networkPrinterListView.count == 0 // Do not show if there are discovered devices.
verticalAlignment: Text.AlignTop
} }
ListView ListView
{ {
id: networkPrinterListView id: networkPrinterListView
anchors.top: parent.top anchors.fill: parent
anchors.left: parent.left
anchors.right: parent.right
height: Math.min(contentHeight, (maxItemCountAtOnce * UM.Theme.getSize("action_button").height) - UM.Theme.getSize("default_margin").height)
ScrollBar.vertical: UM.ScrollBar ScrollBar.vertical: UM.ScrollBar
{ {
id: networkPrinterScrollBar id: networkPrinterScrollBar
} }
clip: true clip: true
property int maxItemCountAtOnce: 8 // show at max 8 items at once, otherwise you need to scroll.
visible: networkPrinterListView.count > 0 visible: networkPrinterListView.count > 0
model: contentLoader.enabled ? CuraApplication.getDiscoveredPrintersModel().discoveredPrinters: undefined model: contentLoader.enabled ? CuraApplication.getDiscoveredPrintersModel().discoveredPrinters: undefined
@ -138,7 +134,7 @@ Item
{ {
id: separator id: separator
anchors.left: parent.left anchors.left: parent.left
anchors.top: networkPrinterInfo.bottom anchors.bottom: controlsRectangle.top
anchors.right: parent.right anchors.right: parent.right
height: UM.Theme.getSize("default_lining").height height: UM.Theme.getSize("default_lining").height
color: UM.Theme.getColor("lining") color: UM.Theme.getColor("lining")
@ -149,7 +145,7 @@ Item
id: controlsRectangle id: controlsRectangle
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.top: separator.bottom anchors.bottom: parent.bottom
height: UM.Theme.getSize("message_action_button").height + UM.Theme.getSize("default_margin").height height: UM.Theme.getSize("message_action_button").height + UM.Theme.getSize("default_margin").height

View File

@ -3,6 +3,7 @@
import QtQuick 2.10 import QtQuick 2.10
import QtQuick.Controls 2.3 import QtQuick.Controls 2.3
import QtQuick.Layouts 2.3
import UM 1.5 as UM import UM 1.5 as UM
import Cura 1.1 as Cura import Cura 1.1 as Cura
@ -17,79 +18,84 @@ Item
property var goToUltimakerPrinter property var goToUltimakerPrinter
DropDownWidget ColumnLayout
{ {
id: addNetworkPrinterDropDown
anchors.top: parent.top anchors.top: parent.top
anchors.topMargin: UM.Theme.getSize("wide_margin").height
anchors.bottom: backButton.top
anchors.bottomMargin: UM.Theme.getSize("default_margin").height
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
anchors.topMargin: UM.Theme.getSize("wide_margin").height
title: catalog.i18nc("@label", "Add a networked printer") spacing: UM.Theme.getSize("default_margin").height
contentShown: true // by default expand the network printer list
onClicked: DropDownWidget
{ {
addLocalPrinterDropDown.contentShown = !contentShown id: addNetworkPrinterDropDown
}
contentComponent: networkPrinterListComponent Layout.fillWidth: true
Component Layout.fillHeight: contentShown
{
id: networkPrinterListComponent title: catalog.i18nc("@label", "Add a networked printer")
AddNetworkPrinterScrollView contentShown: true // by default expand the network printer list
onClicked:
{ {
id: networkPrinterScrollView addLocalPrinterDropDown.contentShown = !contentShown
}
maxItemCountAtOnce: 9 // show at max 9 items at once, otherwise you need to scroll. contentComponent: networkPrinterListComponent
Component
onRefreshButtonClicked: {
id: networkPrinterListComponent
AddNetworkPrinterScrollView
{ {
UM.OutputDeviceManager.startDiscovery() id: networkPrinterScrollView
}
onAddByIpButtonClicked: onRefreshButtonClicked:
{
base.goToPage("add_printer_by_ip")
}
onAddCloudPrinterButtonClicked:
{
base.goToPage("add_cloud_printers")
if (!Cura.API.account.isLoggedIn)
{ {
Cura.API.account.login() UM.OutputDeviceManager.startDiscovery()
}
onAddByIpButtonClicked:
{
base.goToPage("add_printer_by_ip")
}
onAddCloudPrinterButtonClicked:
{
base.goToPage("add_cloud_printers")
if (!Cura.API.account.isLoggedIn)
{
Cura.API.account.login()
}
} }
} }
} }
} }
}
DropDownWidget DropDownWidget
{
id: addLocalPrinterDropDown
anchors.top: addNetworkPrinterDropDown.bottom
anchors.left: parent.left
anchors.right: parent.right
anchors.topMargin: UM.Theme.getSize("default_margin").height
title: catalog.i18nc("@label", "Add a non-networked printer")
onClicked:
{ {
addNetworkPrinterDropDown.contentShown = !contentShown id: addLocalPrinterDropDown
}
contentComponent: localPrinterListComponent Layout.fillWidth: true
Component Layout.fillHeight: contentShown
{
id: localPrinterListComponent title: catalog.i18nc("@label", "Add a non-networked printer")
AddLocalPrinterScrollView
onClicked:
{ {
id: localPrinterView addNetworkPrinterDropDown.contentShown = !contentShown
height: backButton.y - addLocalPrinterDropDown.y - UM.Theme.getSize("expandable_component_content_header").height - UM.Theme.getSize("default_margin").height }
contentComponent: localPrinterListComponent
Component
{
id: localPrinterListComponent
AddLocalPrinterScrollView
{
id: localPrinterView
}
} }
} }
} }

View File

@ -22,7 +22,7 @@ Item
id: base id: base
implicitWidth: 200 * screenScaleFactor implicitWidth: 200 * screenScaleFactor
height: header.contentShown ? (header.height + contentRectangle.height) : header.height implicitHeight: contentShown ? (header.height + contentRectangle.implicitHeight) : header.height
property var contentComponent: null property var contentComponent: null
property alias contentItem: contentLoader.item property alias contentItem: contentLoader.item
@ -56,12 +56,14 @@ Item
Cura.RoundedRectangle Cura.RoundedRectangle
{ {
id: contentRectangle id: contentRectangle
anchors.top: header.bottom
// Move up a bit (exactly the width of the border) to avoid double line // Move up a bit (exactly the width of the border) to avoid double line
y: header.height - UM.Theme.getSize("default_lining").width anchors.topMargin: -UM.Theme.getSize("default_lining").width
anchors.left: header.left anchors.left: header.left
anchors.right: header.right anchors.right: header.right
anchors.bottom: parent.bottom
// Add 2x lining, because it needs a bit of space on the top and the bottom. // Add 2x lining, because it needs a bit of space on the top and the bottom.
height: contentLoader.item ? contentLoader.item.height + 2 * UM.Theme.getSize("thick_lining").height : 0 anchors.bottomMargin: UM.Theme.getSize("thick_lining").height
border.width: UM.Theme.getSize("default_lining").width border.width: UM.Theme.getSize("default_lining").width
border.color: UM.Theme.getColor("lining") border.color: UM.Theme.getColor("lining")
@ -73,9 +75,7 @@ Item
Loader Loader
{ {
id: contentLoader id: contentLoader
anchors.top: parent.top anchors.fill: parent
anchors.left: parent.left
anchors.right: parent.right
// Keep a small margin with the Rectangle container so its content will not overlap with the Rectangle // Keep a small margin with the Rectangle container so its content will not overlap with the Rectangle
// border. // border.
anchors.margins: UM.Theme.getSize("default_lining").width anchors.margins: UM.Theme.getSize("default_lining").width

View File

@ -32,11 +32,6 @@ Window
property var model: null // Needs to be set by whoever is using this dialog. property var model: null // Needs to be set by whoever is using this dialog.
property alias progressBarVisible: wizardPanel.progressBarVisible property alias progressBarVisible: wizardPanel.progressBarVisible
function resetModelState()
{
model.resetState()
}
WizardPanel WizardPanel
{ {
id: wizardPanel id: wizardPanel