SettingVisibilityPage.qml 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. // Copyright (c) 2016 Ultimaker B.V.
  2. // Cura is released under the terms of the LGPLv3 or higher.
  3. import QtQuick 2.1
  4. import QtQuick.Controls 1.1
  5. import QtQuick.Controls.Styles 1.1
  6. import QtQuick.Controls 2.3 as NewControls
  7. import UM 1.5 as UM
  8. import Cura 1.0 as Cura
  9. UM.PreferencesPage
  10. {
  11. title: catalog.i18nc("@title:tab", "Setting Visibility");
  12. property QtObject settingVisibilityPresetsModel: CuraApplication.getSettingVisibilityPresetsModel()
  13. property int scrollToIndex: 0
  14. signal scrollToSection( string key )
  15. onScrollToSection:
  16. {
  17. settingsListView.positionViewAtIndex(definitionsModel.getIndex(key), ListView.Beginning)
  18. }
  19. function reset()
  20. {
  21. settingVisibilityPresetsModel.setActivePreset("basic")
  22. }
  23. resetEnabled: true;
  24. Item
  25. {
  26. id: base;
  27. anchors.fill: parent;
  28. UM.CheckBox
  29. {
  30. id: toggleVisibleSettings
  31. anchors
  32. {
  33. verticalCenter: filter.verticalCenter;
  34. left: parent.left;
  35. leftMargin: UM.Theme.getSize("default_margin").width
  36. }
  37. text: catalog.i18nc("@label:textbox", "Check all")
  38. checkState:
  39. {
  40. if(definitionsModel.visibleCount == definitionsModel.categoryCount)
  41. {
  42. return Qt.Unchecked
  43. }
  44. else if(definitionsModel.visibleCount == definitionsModel.count)
  45. {
  46. return Qt.Checked
  47. }
  48. else
  49. {
  50. return Qt.PartiallyChecked
  51. }
  52. }
  53. MouseArea
  54. {
  55. anchors.fill: parent;
  56. onClicked:
  57. {
  58. if(parent.checkState == Qt.Unchecked || parent.checkState == Qt.PartiallyChecked)
  59. {
  60. definitionsModel.setAllExpandedVisible(true)
  61. }
  62. else
  63. {
  64. definitionsModel.setAllExpandedVisible(false)
  65. }
  66. }
  67. }
  68. }
  69. TextField
  70. {
  71. id: filter;
  72. anchors
  73. {
  74. top: parent.top
  75. left: toggleVisibleSettings.right
  76. leftMargin: UM.Theme.getSize("default_margin").width
  77. right: visibilityPreset.left
  78. rightMargin: UM.Theme.getSize("default_margin").width
  79. }
  80. placeholderText: catalog.i18nc("@label:textbox", "Filter...")
  81. onTextChanged: definitionsModel.filter = {"i18n_label|i18n_description": "*" + text}
  82. }
  83. NewControls.ComboBox
  84. {
  85. id: visibilityPreset
  86. width: 150 * screenScaleFactor
  87. anchors
  88. {
  89. top: parent.top
  90. right: parent.right
  91. bottom: scrollView.top
  92. }
  93. model: settingVisibilityPresetsModel.items
  94. textRole: "name"
  95. currentIndex:
  96. {
  97. var idx = -1;
  98. for(var i = 0; i < settingVisibilityPresetsModel.items.length; ++i)
  99. {
  100. if(settingVisibilityPresetsModel.items[i].presetId == settingVisibilityPresetsModel.activePreset)
  101. {
  102. idx = i;
  103. break;
  104. }
  105. }
  106. return idx;
  107. }
  108. onActivated:
  109. {
  110. var preset_id = settingVisibilityPresetsModel.items[index].presetId
  111. settingVisibilityPresetsModel.setActivePreset(preset_id)
  112. }
  113. }
  114. ScrollView
  115. {
  116. id: scrollView
  117. frameVisible: true
  118. anchors
  119. {
  120. top: filter.bottom;
  121. topMargin: UM.Theme.getSize("default_margin").height
  122. left: parent.left;
  123. right: parent.right;
  124. bottom: parent.bottom;
  125. }
  126. ListView
  127. {
  128. id: settingsListView
  129. model: UM.SettingDefinitionsModel
  130. {
  131. id: definitionsModel
  132. containerId: Cura.MachineManager.activeMachine != null ? Cura.MachineManager.activeMachine.definition.id: ""
  133. showAll: true
  134. exclude: ["machine_settings", "command_line_settings"]
  135. showAncestors: true
  136. expanded: ["*"]
  137. visibilityHandler: UM.SettingPreferenceVisibilityHandler {}
  138. }
  139. delegate: Loader
  140. {
  141. id: loader
  142. width: settingsListView.width
  143. height: model.type != undefined ? UM.Theme.getSize("section").height : 0
  144. property var definition: model
  145. property var settingDefinitionsModel: definitionsModel
  146. asynchronous: true
  147. active: model.type != undefined
  148. sourceComponent:
  149. {
  150. switch(model.type)
  151. {
  152. case "category":
  153. return settingVisibilityCategory
  154. default:
  155. return settingVisibilityItem
  156. }
  157. }
  158. }
  159. }
  160. }
  161. UM.I18nCatalog { name: "cura"; }
  162. SystemPalette { id: palette; }
  163. Component
  164. {
  165. id: settingVisibilityCategory;
  166. UM.SettingVisibilityCategory { }
  167. }
  168. Component
  169. {
  170. id: settingVisibilityItem;
  171. UM.SettingVisibilityItem { }
  172. }
  173. }
  174. }