SettingVisibilityPage.qml 5.8 KB

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