AddNetworkOrLocalPrinterContent.qml 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. // Copyright (c) 2019 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 or higher.
  3. import QtQuick 2.10
  4. import QtQuick.Controls 2.3
  5. import UM 1.3 as UM
  6. import Cura 1.1 as Cura
  7. //
  8. // This component contains the content for the "Add a printer" (network) page of the welcome on-boarding process.
  9. //
  10. Item
  11. {
  12. UM.I18nCatalog { id: catalog; name: "cura" }
  13. Label
  14. {
  15. id: titleLabel
  16. anchors.top: parent.top
  17. anchors.horizontalCenter: parent.horizontalCenter
  18. horizontalAlignment: Text.AlignHCenter
  19. text: catalog.i18nc("@label", "Add a printer")
  20. color: UM.Theme.getColor("primary_button")
  21. font: UM.Theme.getFont("huge")
  22. renderType: Text.NativeRendering
  23. }
  24. DropDownWidget
  25. {
  26. id: addNetworkPrinterDropDown
  27. anchors.top: titleLabel.bottom
  28. anchors.left: parent.left
  29. anchors.right: parent.right
  30. anchors.topMargin: UM.Theme.getSize("wide_margin").height
  31. title: catalog.i18nc("@label", "Add a networked printer")
  32. contentShown: true // by default expand the network printer list
  33. onClicked:
  34. {
  35. addLocalPrinterDropDown.contentShown = !contentShown
  36. }
  37. contentComponent: networkPrinterListComponent
  38. Component
  39. {
  40. id: networkPrinterListComponent
  41. AddNetworkPrinterScrollView
  42. {
  43. id: networkPrinterScrollView
  44. maxItemCountAtOnce: 10 // show at max 10 items at once, otherwise you need to scroll.
  45. onRefreshButtonClicked:
  46. {
  47. UM.OutputDeviceManager.startDiscovery()
  48. }
  49. onAddByIpButtonClicked:
  50. {
  51. base.goToPage("add_printer_by_ip")
  52. }
  53. }
  54. }
  55. }
  56. DropDownWidget
  57. {
  58. id: addLocalPrinterDropDown
  59. anchors.top: addNetworkPrinterDropDown.bottom
  60. anchors.left: parent.left
  61. anchors.right: parent.right
  62. anchors.topMargin: UM.Theme.getSize("default_margin").height
  63. title: catalog.i18nc("@label", "Add a non-networked printer")
  64. onClicked:
  65. {
  66. addNetworkPrinterDropDown.contentShown = !contentShown
  67. }
  68. contentComponent: localPrinterListComponent
  69. Component
  70. {
  71. id: localPrinterListComponent
  72. AddLocalPrinterScrollView
  73. {
  74. id: localPrinterView
  75. }
  76. }
  77. }
  78. // This "Back" button only shows in the "Add Machine" dialog, which has "previous_page_button_text" set to "Cancel"
  79. Cura.SecondaryButton
  80. {
  81. id: backButton
  82. anchors.left: parent.left
  83. anchors.bottom: parent.bottom
  84. visible: base.currentItem.previous_page_button_text ? true : false
  85. text: base.currentItem.previous_page_button_text ? base.currentItem.previous_page_button_text : ""
  86. onClicked:
  87. {
  88. base.endWizard()
  89. }
  90. }
  91. Cura.PrimaryButton
  92. {
  93. id: nextButton
  94. anchors.right: parent.right
  95. anchors.bottom: parent.bottom
  96. enabled:
  97. {
  98. // If the network printer dropdown is expanded, make sure that there is a selected item
  99. if (addNetworkPrinterDropDown.contentShown)
  100. {
  101. return addNetworkPrinterDropDown.contentItem.currentItem != null
  102. }
  103. else
  104. {
  105. // Printer name cannot be empty
  106. const localPrinterItem = addLocalPrinterDropDown.contentItem.currentItem
  107. const isPrinterNameValid = addLocalPrinterDropDown.contentItem.isPrinterNameValid
  108. return localPrinterItem != null && isPrinterNameValid
  109. }
  110. }
  111. text: base.currentItem.next_page_button_text
  112. onClicked:
  113. {
  114. // Create a network printer or a local printer according to the selection
  115. if (addNetworkPrinterDropDown.contentShown)
  116. {
  117. // Create a network printer
  118. const networkPrinterItem = addNetworkPrinterDropDown.contentItem.currentItem
  119. CuraApplication.getDiscoveredPrintersModel().createMachineFromDiscoveredPrinter(networkPrinterItem)
  120. // If we have created a machine, go to the last page, which is the "cloud" page.
  121. base.goToPage("cloud")
  122. }
  123. else
  124. {
  125. // Create a local printer
  126. const localPrinterItem = addLocalPrinterDropDown.contentItem.currentItem
  127. const printerName = addLocalPrinterDropDown.contentItem.printerName
  128. Cura.MachineManager.addMachine(localPrinterItem.id, printerName)
  129. base.showNextPage()
  130. }
  131. }
  132. }
  133. }