forked from github_mirror/framelesshelper
69 lines
1.9 KiB
QML
69 lines
1.9 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Controls 2.15
|
|
|
|
Slider {
|
|
id: control
|
|
topPadding: 0
|
|
bottomPadding: 0
|
|
leftPadding: 0
|
|
rightPadding: 0
|
|
|
|
property int progressDuration: 200
|
|
property int heightDuration: 100
|
|
property int hoveredHeight: 10
|
|
property int normalHeight: 4
|
|
property color backgroundColor: "#bdbebf"
|
|
property color foregroundColor: "#21be2b"
|
|
property color handleColor: "#f0f0f0"
|
|
property int handleWidth: 14
|
|
property int handleBorderWidth: 0
|
|
property color handleBorderColor: "transparent"
|
|
property bool handleVisibility: true
|
|
|
|
background: Rectangle {
|
|
x: 0
|
|
y: control.availableHeight / 2 - height / 2
|
|
implicitWidth: 200
|
|
implicitHeight: control.hovered ? control.hoveredHeight : control.normalHeight
|
|
width: control.availableWidth
|
|
height: implicitHeight
|
|
color: control.backgroundColor
|
|
|
|
Behavior on implicitHeight {
|
|
NumberAnimation {
|
|
duration: control.heightDuration
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
width: control.visualPosition * parent.width
|
|
height: parent.height
|
|
color: control.foregroundColor
|
|
|
|
Behavior on width {
|
|
NumberAnimation {
|
|
duration: control.progressDuration
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
handle: Rectangle {
|
|
visible: control.handleVisibility
|
|
x: control.visualPosition * (control.availableWidth - width)
|
|
y: control.availableHeight / 2 - height / 2
|
|
implicitWidth: control.handleWidth
|
|
implicitHeight: implicitWidth
|
|
radius: implicitHeight / 2
|
|
color: control.handleColor
|
|
border.width: control.handleBorderWidth
|
|
border.color: control.handleBorderColor
|
|
|
|
Behavior on x {
|
|
NumberAnimation {
|
|
duration: control.progressDuration
|
|
}
|
|
}
|
|
}
|
|
}
|