forked from Shinonome/dots-hyprland
71 lines
2.1 KiB
QML
71 lines
2.1 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
import QtQuick
|
|
|
|
Item {
|
|
id: root
|
|
anchors.fill: parent
|
|
|
|
required property int clockSecond
|
|
property real handWidth: 2
|
|
property real handLength: 100
|
|
property real dotSize: 20
|
|
property string style: "hide"
|
|
property color color: Appearance.colors.colSecondary
|
|
|
|
rotation: (360 / 60 * clockSecond) + 90
|
|
|
|
Behavior on rotation {
|
|
enabled: Config.options.background.clock.cookie.constantlyRotate // Animating every second is expensive...
|
|
animation: NumberAnimation {
|
|
duration: 1000 // 1 second
|
|
easing.type: Easing.InOutQuad
|
|
}
|
|
}
|
|
|
|
Rectangle {
|
|
anchors {
|
|
left: parent.left
|
|
verticalCenter: parent.verticalCenter
|
|
leftMargin: 10
|
|
}
|
|
implicitWidth: root.style === "dot" ? root.dotSize : root.handLength
|
|
implicitHeight: root.style === "dot" ? root.dotSize : root.handWidth
|
|
radius: Math.min(width, height) / 2
|
|
color: root.color
|
|
Behavior on implicitHeight {
|
|
animation: Appearance.animation.elementResize.numberAnimation.createObject(this)
|
|
}
|
|
Behavior on implicitWidth {
|
|
animation: Appearance.animation.elementResize.numberAnimation.createObject(this)
|
|
}
|
|
}
|
|
|
|
// Classic style dot in the middle of the hand
|
|
FadeLoader {
|
|
id: classicDotLoader
|
|
anchors {
|
|
left: parent.left
|
|
verticalCenter: parent.verticalCenter
|
|
}
|
|
shown: root.style === "classic"
|
|
Rectangle {
|
|
anchors {
|
|
left: parent.left
|
|
verticalCenter: parent.verticalCenter
|
|
leftMargin: 40
|
|
}
|
|
implicitWidth: root.style === "classic" ? 14 : 0
|
|
implicitHeight: implicitWidth
|
|
color: root.color
|
|
radius: Appearance.rounding.small
|
|
|
|
Behavior on implicitWidth {
|
|
animation: Appearance.animation.elementResize.numberAnimation.createObject(this)
|
|
}
|
|
}
|
|
}
|
|
}
|