SearchField.qml 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  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. NativeStyle.DefaultSearchField {
  10. id: control
  11. readonly property bool __nativeSearchIndicator: searchIndicator.indicator.hasOwnProperty("_qt_default")
  12. readonly property bool __nativeClearIndicator: clearIndicator.indicator.hasOwnProperty("_qt_default")
  13. readonly property bool __notCustomizable: true
  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. }
  29. NativeStyle.SearchField {
  30. id: search
  31. visible: control.__nativeSearchIndicator
  32. control: control
  33. subControl: NativeStyle.SearchField.Search
  34. x: searchIndicator.indicator.x
  35. y: searchIndicator.indicator.y
  36. useNinePatchImage: false
  37. }
  38. searchIndicator.indicator: Item {
  39. x: 3
  40. y: control.topPadding + (control.availableHeight - height) / 2
  41. implicitWidth: search.width
  42. implicitHeight: search.height
  43. property bool _qt_default
  44. readonly property bool __ignoreNotCustomizable: true
  45. ColorImage {
  46. x: (parent.width - width) / 2
  47. y: (parent.height - height) / 2
  48. width: 12
  49. height: 12
  50. source: Qt.resolvedUrl("images/search-magnifier")
  51. color: control.palette.buttonText
  52. opacity: control.searchIndicator.pressed ? 0.7 : 1
  53. }
  54. }
  55. NativeStyle.SearchField {
  56. id: clear
  57. visible: control.__nativeClearIndicator && control.text.length > 0
  58. control: control
  59. subControl: NativeStyle.SearchField.Clear
  60. x: clearIndicator.indicator.x
  61. y: clearIndicator.indicator.y
  62. useNinePatchImage: false
  63. }
  64. clearIndicator.indicator: Item {
  65. x: control.width - width - 3
  66. y: control.topPadding + (control.availableHeight - height) / 2
  67. implicitWidth: clear.width
  68. implicitHeight: clear.height
  69. property bool _qt_default
  70. readonly property bool __ignoreNotCustomizable: true
  71. ColorImage {
  72. x: (parent.width - width) / 2
  73. y: (parent.height - height) / 2
  74. width: 12
  75. height: 12
  76. source: Qt.resolvedUrl("images/close_big")
  77. visible: control.text.length > 0
  78. color: control.palette.buttonText
  79. opacity: control.clearIndicator.pressed ? 0.7 : 1
  80. }
  81. }
  82. background: NativeStyle.SearchField {
  83. control: control
  84. subControl: NativeStyle.SearchField.Frame
  85. contentWidth: contentItem.implicitWidth
  86. contentHeight: contentItem.implicitHeight
  87. readonly property bool __ignoreNotCustomizable: true
  88. }
  89. }