1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199
|
/*
* SPDX-FileCopyrightText: 2019 David Edmundson <kde@davidedmundson.co.uk>
* SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com>
* SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
*/
import QtQuick
import QtQuick.Layouts
import org.kde.plasma.components as PlasmaComponents
import org.kde.kirigami as Kirigami
ComponentBase {
id: root
title: "Plasma Components 3 ProgressBar"
property int progressBarWidth: testProgressBar.width
PlasmaComponents.ProgressBar {
id: testProgressBar
visible: false
}
contentItem: GridLayout {
columns: 6
columnSpacing: Kirigami.Units.gridUnit
rowSpacing: Kirigami.Units.gridUnit
ColumnLayout {
PlasmaComponents.Label {
text: "0%"
}
PlasmaComponents.ProgressBar {
from: 0
to: 100
value: 0
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "50%"
}
PlasmaComponents.ProgressBar {
from: 0
to: 100
value: 50
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "100%"
}
PlasmaComponents.ProgressBar {
from: 0
to: 100
value: 100
}
}
ColumnLayout {
PlasmaComponents.Label {
id: progressBarAndSliderLabel
text: "The progress bar and slider grooves should have the same visual width."
wrapMode: Text.WordWrap
Layout.preferredWidth: progressBarWidth
}
GridLayout {
id: progressBarAndSliderGrid
columns: 1
rows: 2
PlasmaComponents.ProgressBar {
id: progressBar
from: 0
to: 100
value: 50
}
PlasmaComponents.Slider {
Layout.preferredWidth: progressBar.width
Layout.preferredHeight: progressBar.height
from: 0
to: 100
value: 50
}
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "Min: 0; Max: 200; Value: 1\nMake sure the bar does not leak outside."
wrapMode: Text.WordWrap
Layout.preferredWidth: progressBarWidth
}
PlasmaComponents.ProgressBar {
from: 0
to: 200
value: 1
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "Min: 0; Max: 100; Value: 110\nThe progress bar should look like it is at 100%."
wrapMode: Text.WordWrap
Layout.preferredWidth: progressBarWidth
}
PlasmaComponents.ProgressBar {
from: 0
to: 100
value: 110
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "Min: -100; Max: 100; Value: 0\nThe progress bar should look like it is at 50%."
wrapMode: Text.WordWrap
Layout.preferredWidth: progressBarWidth
}
PlasmaComponents.ProgressBar {
from: -100
to: 100
value: 0
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "Min: 0; Max: 100; Value: -10\nThe progress bar should look like it is at 0%."
wrapMode: Text.WordWrap
Layout.preferredWidth: progressBarWidth
}
PlasmaComponents.ProgressBar {
from: 0
to: 100
value: -10
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "This should have a continuous movement from one end to the other and back."
wrapMode: Text.WordWrap
Layout.preferredWidth: progressBarWidth
}
PlasmaComponents.ProgressBar {
indeterminate: indeterminateCheckBox.checked
value: 0.5
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "Checking and unchecking should not break the layout. The progress bar should look like it is at 50% if unchecked."
wrapMode: Text.WordWrap
Layout.preferredWidth: progressBarWidth
}
PlasmaComponents.CheckBox {
id: indeterminateCheckBox
text: "Indeterminate"
checked: true
}
}
ColumnLayout {
PlasmaComponents.Label {
text: "This should do one 'indefinite' animation cycle and then continuously animate to 100% in chunks of 10%."
wrapMode: Text.WordWrap
Layout.preferredWidth: progressBarWidth
}
PlasmaComponents.ProgressBar {
id: animatingProgressBar
from: 0
to: 100
// Bug 430544: A ProgressBar that was indeterminate once will
// not update its bar size according to its value anymore
// Set to false again in the Timer below
indeterminate: true
Timer {
interval: 500
triggeredOnStart: true
running: true
repeat: true
onTriggered: {
animatingProgressBar.indeterminate = false;
// ProgressBar clamps "value" by "to" (100), so we can't
// just blindly increase and then check >= 100
if (animatingProgressBar.value === 100) {
animatingProgressBar.value = 0;
} else {
animatingProgressBar.value += 10;
}
}
}
}
}
}
}
|