From b03a688e1cafdb5b97ed9eccf31355a8dec08bf9 Mon Sep 17 00:00:00 2001 From: Tasuku Suzuki Date: Mon, 25 Dec 2017 13:30:10 +0900 Subject: Improve ProgressBar and Slider style The position of stop 1.0 was set to the positoin of "value" in both controls. Due to this, gradiation was changed/re-drawn whenever value was changed. This commit sets the position of stop 1.0 to the end of the control. Now gradiation itself is fixed, not changed by its value. Change-Id: I84e1b30a18af6a0af2d5b867a288b0d3501e565e Signed-off-by: Tasuku Suzuki --- imports/qtquickcontrols2aglstyle/ProgressBar.qml | 36 ++++++++++++++++++------ imports/qtquickcontrols2aglstyle/Slider.qml | 22 +++++++++------ 2 files changed, 41 insertions(+), 17 deletions(-) diff --git a/imports/qtquickcontrols2aglstyle/ProgressBar.qml b/imports/qtquickcontrols2aglstyle/ProgressBar.qml index b44538c..6d5e3ae 100644 --- a/imports/qtquickcontrols2aglstyle/ProgressBar.qml +++ b/imports/qtquickcontrols2aglstyle/ProgressBar.qml @@ -16,6 +16,7 @@ import QtQuick 2.6 import QtQuick.Templates 2.0 as T +import QtGraphicalEffects 1.0 T.ProgressBar { id: control @@ -36,15 +37,34 @@ T.ProgressBar { implicitHeight: background.implicitHeight Rectangle { - rotation: -90 - transformOrigin: Item.TopLeft - y: 10 - width: parent.height - height: control.visualPosition * background.width - radius: width / 2 + width: control.visualPosition * background.width + height: background.height + radius: background.radius + visible: !control.indeterminate + } + + Rectangle { + visible: control.indeterminate + width: background.width * 0.1 + height: background.height + radius: background.radius + NumberAnimation on x { + from: 0 + to: background.width * 0.9 + duration: 2000 + loops: Animation.Infinite + running: control.indeterminate + easing.type: Easing.SineCurve + } + } + + layer.enabled: true + layer.effect: LinearGradient { + start: Qt.point(0, 0) + end: Qt.point(background.width, 0) gradient: Gradient { - GradientStop { position: 0.0; color: '#00ADDC' } - GradientStop { position: 1.0; color: '#6BFBFF' } + GradientStop { position: 0.0; color: "#00ADDC" } + GradientStop { position: 1.0; color: "#6BFBFF" } } } } diff --git a/imports/qtquickcontrols2aglstyle/Slider.qml b/imports/qtquickcontrols2aglstyle/Slider.qml index 6c9863b..5b6a495 100644 --- a/imports/qtquickcontrols2aglstyle/Slider.qml +++ b/imports/qtquickcontrols2aglstyle/Slider.qml @@ -16,6 +16,7 @@ import QtQuick 2.6 import QtQuick.Templates 2.0 as T +import QtGraphicalEffects 1.0 T.Slider { id: root @@ -31,15 +32,18 @@ T.Slider { color: "#666666" Rectangle { - rotation: -90 - transformOrigin: Item.TopLeft - y: parent.height - width: parent.height - height: handle.x + handle.width - radius: width / 2 - gradient: Gradient { - GradientStop { position: 0.0; color: '#59FF7F' } - GradientStop { position: 1.0; color: '#6BFBFF' } + height: parent.height + width: handle.x + handle.width + radius: height / 2 + + layer.enabled: true + layer.effect: LinearGradient { + start: Qt.point(0, 0) + end: Qt.point(background.width, 0) + gradient: Gradient { + GradientStop { position: 0.0; color: "#00ADDC" } + GradientStop { position: 1.0; color: "#6BFBFF" } + } } } } -- cgit 1.2.3-korg