SearchField.qml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. // Copyright (C) 2025 The Qt Company Ltd.
  2. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
  3. // Qt-Security score:significant reason:default
  4. pragma ComponentBehavior: Bound
  5. import QtQuick
  6. import QtQuick.Controls.impl
  7. import QtQuick.Templates as T
  8. import QtQuick.NativeStyle as NativeStyle
  9. import QtQuick.Controls.Windows.impl
  10. NativeStyle.DefaultSearchField {
  11. id: control
  12. readonly property bool __nativeSearchIndicator: searchIndicator.indicator.hasOwnProperty("_qt_default")
  13. readonly property bool __nativeClearIndicator: clearIndicator.indicator.hasOwnProperty("_qt_default")
  14. implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
  15. implicitContentWidth + leftPadding + rightPadding,
  16. 90 /* minimum */ )
  17. implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
  18. implicitContentHeight + topPadding + bottomPadding,
  19. searchIndicator.implicitIndicatorHeight + topPadding + bottomPadding,
  20. clearIndicator.implicitIndicatorHeight + topPadding + bottomPadding)
  21. contentItem: T.TextField {
  22. text: control.text
  23. color: control.palette.text
  24. selectionColor: control.palette.highlight
  25. selectedTextColor: control.palette.highlightedText
  26. verticalAlignment: Text.AlignVCenter
  27. readonly property bool __ignoreNotCustomizable: true
  28. ContextMenu.menu: TextEditingContextMenu {
  29. editor: parent
  30. }
  31. }
  32. NativeStyle.SearchField {
  33. id: search
  34. visible: control.__nativeSearchIndicator
  35. control: control
  36. subControl: NativeStyle.SearchField.Search
  37. x: searchIndicator.indicator.x
  38. y: searchIndicator.indicator.y
  39. useNinePatchImage: false
  40. }
  41. searchIndicator.indicator: Item {
  42. x: 3
  43. y: control.topPadding + (control.availableHeight - height) / 2
  44. implicitWidth: search.width
  45. implicitHeight: search.height
  46. property bool _qt_default
  47. readonly property bool __ignoreNotCustomizable: true
  48. ColorImage {
  49. x: (parent.width - width) / 2
  50. y: (parent.height - height) / 2
  51. width: 12
  52. height: 12
  53. source: Qt.resolvedUrl("images/search-magnifier")
  54. color: control.palette.buttonText
  55. opacity: control.searchIndicator.pressed ? 0.7 : 1
  56. }
  57. }
  58. NativeStyle.SearchField {
  59. id: clear
  60. visible: control.__nativeClearIndicator && control.text.length > 0
  61. control: control
  62. subControl: NativeStyle.SearchField.Clear
  63. x: clearIndicator.indicator.x
  64. y: clearIndicator.indicator.y
  65. useNinePatchImage: false
  66. }
  67. clearIndicator.indicator: Item {
  68. x: control.width - width - 3
  69. y: control.topPadding + (control.availableHeight - height) / 2
  70. implicitWidth: clear.width
  71. implicitHeight: clear.height
  72. property bool _qt_default
  73. readonly property bool __ignoreNotCustomizable: true
  74. ColorImage {
  75. x: (parent.width - width) / 2
  76. y: (parent.height - height) / 2
  77. width: 12
  78. height: 12
  79. source: Qt.resolvedUrl("images/close_big")
  80. visible: control.text.length > 0
  81. color: control.palette.buttonText
  82. opacity: control.clearIndicator.pressed ? 0.7 : 1
  83. }
  84. }
  85. background: NativeStyle.SearchField {
  86. control: control
  87. subControl: NativeStyle.SearchField.Frame
  88. contentWidth: contentItem.implicitWidth
  89. contentHeight: contentItem.implicitHeight
  90. readonly property bool __ignoreNotCustomizable: true
  91. }
  92. }