Warning, /plasma/qqc2-breeze-style/style/qtquickcontrols/ProgressBar.qml is written in an unsupported language. File is not indexed.

0001 /* SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com>
0002  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0003  */
0004 
0005 import QtQuick
0006 import QtQuick.Templates as T
0007 import org.kde.kirigami as Kirigami
0008 import org.kde.breeze.impl as Impl
0009 
0010 T.ProgressBar {
0011     id: control
0012 
0013     implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
0014                             implicitContentWidth + leftPadding + rightPadding)
0015     implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
0016                              implicitContentHeight + topPadding + bottomPadding)
0017 
0018     Kirigami.Theme.colorSet: Kirigami.Theme.Button
0019     Kirigami.Theme.inherit: false
0020 
0021     contentItem: Item {
0022         implicitWidth: 200
0023         implicitHeight: Impl.Units.grooveHeight
0024         clip: true
0025         Rectangle {
0026             id: progressFill
0027             visible: !control.indeterminate && width > 0
0028             anchors {
0029                 left: parent.left
0030                 top: parent.top
0031                 bottom: parent.bottom
0032             }
0033             width: control.position * parent.width
0034 
0035             radius: Impl.Units.grooveHeight/2
0036             color: Kirigami.Theme.alternateBackgroundColor
0037             border {
0038                 width: Impl.Units.smallBorder
0039                 color: Kirigami.Theme.focusColor
0040             }
0041         }
0042 
0043         Item {
0044             id: indeterminateFill
0045 
0046             readonly property real __backgroundBorderWidth: control.background?.border?.width ?? 0
0047 
0048             anchors {
0049                 top: parent.top
0050                 bottom: parent.bottom
0051                 topMargin: __backgroundBorderWidth
0052                 bottomMargin: __backgroundBorderWidth
0053             }
0054             width: parent.width + 2 * __segmentLength
0055             x: - 2 * __segmentLength
0056 
0057             clip: true
0058             visible: control.indeterminate && width > 0
0059 
0060             readonly property real __segmentLength: 14
0061 
0062             Row {
0063                 anchors.fill: parent
0064                 spacing: indeterminateFill.__segmentLength
0065 
0066                 Repeater {
0067                     model: Math.round(parent.width / (2 * indeterminateFill.__segmentLength))
0068                     delegate: Rectangle {
0069                         anchors.top: parent.top
0070                         anchors.bottom: parent.bottom
0071                         implicitWidth: indeterminateFill.__segmentLength
0072                         radius: Impl.Units.grooveHeight/2
0073                         color: Kirigami.Theme.alternateBackgroundColor
0074                     }
0075                 }
0076             }
0077 
0078             XAnimator on x {
0079                 from: - 2 * indeterminateFill.__segmentLength
0080                 to: 0
0081                 duration: 3 * Kirigami.Units.veryLongDuration
0082                 loops: Animation.Infinite
0083                 running: true
0084             }
0085         }
0086     }
0087 
0088     background: Rectangle {
0089         implicitWidth: 200
0090         implicitHeight: Impl.Units.grooveHeight
0091 
0092         radius: Impl.Units.grooveHeight/2
0093         color: Kirigami.Theme.backgroundColor
0094         border {
0095             width: Impl.Units.smallBorder
0096             color: Impl.Theme.separatorColor()
0097         }
0098     }
0099 }