forked from Shinonome/dots-hyprland
135 lines
5.0 KiB
QML
135 lines
5.0 KiB
QML
pragma ComponentBehavior: Bound
|
|
|
|
import qs
|
|
import qs.services
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
import qs.modules.common.functions
|
|
import QtQuick
|
|
|
|
Item {
|
|
Repeater {
|
|
model: 12
|
|
Item {
|
|
required property int index
|
|
opacity: Config.options.background.clock.cookie.dialNumberStyle === "dots" ? 1.0 : 0
|
|
rotation: 360 / 12 * index
|
|
anchors.fill: parent
|
|
Behavior on opacity {
|
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
|
}
|
|
Rectangle {
|
|
anchors {
|
|
left: parent.left
|
|
verticalCenter: parent.verticalCenter
|
|
leftMargin: Config.options.background.clock.cookie.dialNumberStyle === "dots" ? 10 : 50
|
|
}
|
|
Behavior on anchors.leftMargin {
|
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
|
}
|
|
implicitWidth: root.hourDotSize
|
|
implicitHeight: implicitWidth
|
|
radius: implicitWidth / 2
|
|
color: root.colOnBackground
|
|
opacity: 0.5
|
|
}
|
|
}
|
|
}
|
|
|
|
// Hour Indicator numbers (3-6-9-12)
|
|
Repeater {
|
|
model: 4
|
|
Item {
|
|
required property int index
|
|
opacity: Config.options.background.clock.cookie.dialNumberStyle === "numbers" ? 1.0 : 0
|
|
rotation: 360 / 4 * index
|
|
anchors.fill: parent
|
|
Behavior on opacity {
|
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
|
}
|
|
Rectangle {
|
|
color: "transparent"
|
|
implicitWidth: root.hourNumberSize
|
|
implicitHeight: implicitWidth
|
|
anchors {
|
|
left: parent.left
|
|
verticalCenter: parent.verticalCenter
|
|
leftMargin: Config.options.background.clock.cookie.dialNumberStyle === "numbers" ? 32 : 96
|
|
}
|
|
Behavior on anchors.leftMargin {
|
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
|
}
|
|
StyledText {
|
|
color: root.colOnBackground
|
|
anchors.centerIn: parent
|
|
text: index === 0 ? "9" :
|
|
index === 1 ? "12" :
|
|
index === 2 ? "3" : "6"
|
|
rotation: index % 2 === 0 ? index * 90 : -index * 90 //A better way can be found to show texts on right angle
|
|
font {
|
|
family: Appearance.font.family.reading
|
|
pixelSize: 80
|
|
weight: 1000
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// Full dial style hour lines
|
|
Repeater {
|
|
model: 12
|
|
Item {
|
|
required property int index
|
|
rotation: 360 / 12 * index
|
|
anchors.fill: parent
|
|
opacity: Config.options.background.clock.cookie.dialNumberStyle === "full" ? 1.0 : 0
|
|
Behavior on opacity {
|
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
|
}
|
|
Rectangle {
|
|
implicitWidth: root.hourLineSize * 3.5
|
|
implicitHeight: root.hourLineSize
|
|
radius: implicitWidth / 2
|
|
color: root.colOnBackground
|
|
anchors {
|
|
left: parent.left
|
|
verticalCenter: parent.verticalCenter
|
|
leftMargin: Config.options.background.clock.cookie.dialNumberStyle === "full" ? 10 : 50
|
|
}
|
|
Behavior on anchors.leftMargin {
|
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
// Full dial style minute lines
|
|
Repeater {
|
|
model: 60
|
|
Item {
|
|
required property int index
|
|
rotation: 360 / 60 * index
|
|
anchors.fill: parent
|
|
opacity: Config.options.background.clock.cookie.dialNumberStyle === "full" ? 1.0 : 0
|
|
Behavior on opacity {
|
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
|
}
|
|
Rectangle {
|
|
implicitWidth: root.minuteLineSize * 3.5
|
|
implicitHeight: root.minuteLineSize
|
|
radius: implicitWidth / 2
|
|
color: root.colOnBackground
|
|
opacity: 0.5
|
|
anchors {
|
|
left: parent.left
|
|
verticalCenter: parent.verticalCenter
|
|
leftMargin: Config.options.background.clock.cookie.dialNumberStyle === "full" ? 10 : 50
|
|
}
|
|
Behavior on anchors.leftMargin {
|
|
animation: Appearance.animation.elementMoveFast.numberAnimation.createObject(this)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|