SettingVisibilityPage.qml 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  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 int scrollToIndex: 0
  12. signal scrollToSection( string key )
  13. onScrollToSection:
  14. {
  15. settingsListView.positionViewAtIndex(definitionsModel.getIndex(key), ListView.Beginning)
  16. }
  17. function reset()
  18. {
  19. UM.Preferences.resetPreference("general/visible_settings")
  20. }
  21. resetEnabled: true;
  22. Item
  23. {
  24. id: base;
  25. anchors.fill: parent;
  26. CheckBox
  27. {
  28. id: toggleVisibleSettings
  29. anchors
  30. {
  31. verticalCenter: filter.verticalCenter;
  32. left: parent.left;
  33. leftMargin: UM.Theme.getSize("default_margin").width
  34. }
  35. text: catalog.i18nc("@label:textbox", "Check all")
  36. checkedState:
  37. {
  38. if(definitionsModel.visibleCount == definitionsModel.categoryCount)
  39. {
  40. return Qt.Unchecked
  41. }
  42. else if(definitionsModel.visibleCount == definitionsModel.rowCount(null))
  43. {
  44. return Qt.Checked
  45. }
  46. else
  47. {
  48. return Qt.PartiallyChecked
  49. }
  50. }
  51. partiallyCheckedEnabled: true
  52. MouseArea
  53. {
  54. anchors.fill: parent;
  55. onClicked:
  56. {
  57. if(parent.checkedState == Qt.Unchecked || parent.checkedState == Qt.PartiallyChecked)
  58. {
  59. definitionsModel.setAllVisible(true)
  60. }
  61. else
  62. {
  63. definitionsModel.setAllVisible(false)
  64. }
  65. }
  66. }
  67. }
  68. TextField
  69. {
  70. id: filter;
  71. anchors
  72. {
  73. top: parent.top
  74. left: toggleVisibleSettings.right
  75. leftMargin: UM.Theme.getSize("default_margin").width
  76. right: parent.right
  77. }
  78. placeholderText: catalog.i18nc("@label:textbox", "Filter...")
  79. onTextChanged: definitionsModel.filter = {"i18n_label": "*" + text}
  80. }
  81. ScrollView
  82. {
  83. id: scrollView
  84. frameVisible: true
  85. anchors
  86. {
  87. top: filter.bottom;
  88. topMargin: UM.Theme.getSize("default_margin").height
  89. left: parent.left;
  90. right: parent.right;
  91. bottom: parent.bottom;
  92. }
  93. ListView
  94. {
  95. id: settingsListView
  96. model: UM.SettingDefinitionsModel
  97. {
  98. id: definitionsModel
  99. containerId: Cura.MachineManager.activeDefinitionId
  100. showAll: true
  101. exclude: ["machine_settings", "command_line_settings"]
  102. showAncestors: true
  103. expanded: ["*"]
  104. visibilityHandler: UM.SettingPreferenceVisibilityHandler { }
  105. }
  106. delegate: Loader
  107. {
  108. id: loader
  109. width: parent.width
  110. height: model.type != undefined ? UM.Theme.getSize("section").height : 0
  111. property var definition: model
  112. property var settingDefinitionsModel: definitionsModel
  113. asynchronous: true
  114. active: model.type != undefined
  115. sourceComponent:
  116. {
  117. switch(model.type)
  118. {
  119. case "category":
  120. return settingVisibilityCategory
  121. default:
  122. return settingVisibilityItem
  123. }
  124. }
  125. }
  126. }
  127. }
  128. UM.I18nCatalog { name: "cura"; }
  129. SystemPalette { id: palette; }
  130. Component
  131. {
  132. id: settingVisibilityCategory;
  133. UM.SettingVisibilityCategory { }
  134. }
  135. Component
  136. {
  137. id: settingVisibilityItem;
  138. UM.SettingVisibilityItem { }
  139. }
  140. }
  141. }