SettingExtruder.qml 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  1. // Copyright (c) 2016 Ultimaker B.V.
  2. // Uranium is released under the terms of the AGPLv3 or higher.
  3. import QtQuick 2.1
  4. import QtQuick.Controls 1.1
  5. import QtQuick.Controls.Styles 1.1
  6. import UM 1.1 as UM
  7. import Cura 1.0 as Cura
  8. SettingItem
  9. {
  10. id: base
  11. contents: ComboBox
  12. {
  13. id: control
  14. model: Cura.ExtrudersModel
  15. {
  16. id: extruders_model
  17. onModelChanged: control.color = extruders_model.getItem(control.currentIndex).color
  18. }
  19. property string color: extruders_model.getItem(control.currentIndex).color
  20. textRole: "name"
  21. anchors.fill: parent
  22. MouseArea
  23. {
  24. anchors.fill: parent
  25. acceptedButtons: Qt.NoButton
  26. onWheel: wheel.accepted = true;
  27. }
  28. style: ComboBoxStyle
  29. {
  30. background: Rectangle
  31. {
  32. color:
  33. {
  34. if (!enabled)
  35. {
  36. return UM.Theme.getColor("setting_control_disabled");
  37. }
  38. if(control.hovered || base.activeFocus)
  39. {
  40. return UM.Theme.getColor("setting_control_highlight");
  41. }
  42. else
  43. {
  44. return UM.Theme.getColor("setting_control");
  45. }
  46. }
  47. border.width: UM.Theme.getSize("default_lining").width
  48. border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : control.hovered ? UM.Theme.getColor("setting_control_border_highlight") : UM.Theme.getColor("setting_control_border")
  49. }
  50. label: Item
  51. {
  52. Rectangle
  53. {
  54. id: swatch
  55. height: UM.Theme.getSize("setting_control").height / 2
  56. width: height
  57. anchors.left: parent.left
  58. anchors.leftMargin: UM.Theme.getSize("default_lining").width
  59. anchors.verticalCenter: parent.verticalCenter
  60. color: control.color
  61. border.width: UM.Theme.getSize("default_lining").width
  62. border.color: !enabled ? UM.Theme.getColor("setting_control_disabled_border") : UM.Theme.getColor("setting_control_border")
  63. }
  64. Label
  65. {
  66. anchors.left: swatch.right
  67. anchors.leftMargin: UM.Theme.getSize("default_lining").width
  68. anchors.right: downArrow.left
  69. anchors.rightMargin: UM.Theme.getSize("default_lining").width
  70. anchors.verticalCenter: parent.verticalCenter
  71. text: control.currentText
  72. font: UM.Theme.getFont("default")
  73. color: !enabled ? UM.Theme.getColor("setting_control_disabled_text") : UM.Theme.getColor("setting_control_text")
  74. elide: Text.ElideRight
  75. verticalAlignment: Text.AlignVCenter
  76. }
  77. UM.RecolorImage
  78. {
  79. id: downArrow
  80. anchors.right: parent.right
  81. anchors.rightMargin: UM.Theme.getSize("default_lining").width * 2
  82. anchors.verticalCenter: parent.verticalCenter
  83. source: UM.Theme.getIcon("arrow_bottom")
  84. width: UM.Theme.getSize("standard_arrow").width
  85. height: UM.Theme.getSize("standard_arrow").height
  86. sourceSize.width: width + 5
  87. sourceSize.height: width + 5
  88. color: UM.Theme.getColor("setting_control_text")
  89. }
  90. }
  91. }
  92. onActivated:
  93. {
  94. forceActiveFocus();
  95. propertyProvider.setPropertyValue("value", extruders_model.getItem(index).index);
  96. control.color = extruders_model.getItem(index).color;
  97. }
  98. onModelChanged: updateCurrentIndex();
  99. Connections
  100. {
  101. target: propertyProvider
  102. onPropertiesChanged: control.updateCurrentIndex();
  103. }
  104. function updateCurrentIndex()
  105. {
  106. for(var i = 0; i < extruders_model.rowCount(); ++i)
  107. {
  108. if(extruders_model.getItem(i).index == propertyProvider.properties.value)
  109. {
  110. control.currentIndex = i;
  111. control.color = extruders_model.getItem(i).color;
  112. return;
  113. }
  114. }
  115. currentIndex = -1;
  116. }
  117. }
  118. }