ProgressBar.qml 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. // Copyright (C) 2017 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. import QtQuick
  5. import QtQuick.Templates as T
  6. import QtQuick.Controls.impl
  7. import QtQuick.Controls.Fusion
  8. import QtQuick.Controls.Fusion.impl
  9. T.ProgressBar {
  10. id: control
  11. implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
  12. implicitContentWidth + leftPadding + rightPadding)
  13. implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
  14. implicitContentHeight + topPadding + bottomPadding)
  15. contentItem: Item {
  16. implicitWidth: 120
  17. implicitHeight: 24
  18. scale: control.mirrored ? -1 : 1
  19. Rectangle {
  20. height: parent.height
  21. width: (control.indeterminate ? 1.0 : control.position) * parent.width
  22. radius: 2
  23. border.color: Fusion.highContrast ? Fusion.outline(control.palette) : Qt.darker(Fusion.highlight(control.palette), 1.4)
  24. gradient: Gradient {
  25. GradientStop {
  26. position: 0
  27. color: Qt.lighter(Fusion.highlight(control.palette), 1.2)
  28. }
  29. GradientStop {
  30. position: 1
  31. color: Fusion.highlight(control.palette)
  32. }
  33. }
  34. }
  35. Item {
  36. x: 1; y: 1
  37. width: parent.width - 2
  38. height: parent.height - 2
  39. visible: control.indeterminate
  40. clip: true
  41. ColorImage {
  42. width: Math.ceil(parent.width / implicitWidth + 1) * implicitWidth
  43. height: parent.height
  44. mirror: control.mirrored
  45. fillMode: Image.TileHorizontally
  46. source: "qrc:/qt-project.org/imports/QtQuick/Controls/Fusion/images/progressmask.png"
  47. color: Color.transparent(Qt.lighter(Fusion.highlight(control.palette), 1.2), 160 / 255)
  48. visible: control.indeterminate
  49. NumberAnimation on x {
  50. running: control.indeterminate && control.visible
  51. from: -31 // progressmask.png width
  52. to: 0
  53. loops: Animation.Infinite
  54. duration: 750
  55. }
  56. }
  57. }
  58. }
  59. background: Rectangle {
  60. implicitWidth: 120
  61. implicitHeight: 24
  62. radius: 2
  63. color: control.palette.base
  64. border.color: Fusion.outline(control.palette)
  65. Rectangle {
  66. x: 1; y: 1; height: 1
  67. width: parent.width - 2
  68. color: Fusion.topShadow
  69. }
  70. }
  71. }