forked from Shinonome/dots-hyprland
add slidefade text animation to some stuff
This commit is contained in:
@@ -1,12 +1,11 @@
|
||||
import qs.modules.common
|
||||
import QtQuick
|
||||
|
||||
Text {
|
||||
StyledText {
|
||||
id: root
|
||||
property real iconSize: Appearance?.font.pixelSize.small ?? 16
|
||||
property real fill: 0
|
||||
property real truncatedFill: Math.round(fill * 100) / 100 // Reduce memory consumption spikes from constant font remapping
|
||||
renderType: Text.NativeRendering
|
||||
font {
|
||||
hintingPreference: Font.PreferFullHinting
|
||||
family: Appearance?.font.family.iconMaterial ?? "Material Symbols Rounded"
|
||||
@@ -19,10 +18,8 @@ Text {
|
||||
"opsz": iconSize,
|
||||
}
|
||||
}
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
color: Appearance.m3colors.m3onBackground
|
||||
|
||||
// Behavior on fill {
|
||||
// Behavior on fill { // Leaky leaky, no good
|
||||
// NumberAnimation {
|
||||
// duration: Appearance?.animation.elementMoveFast.duration ?? 200
|
||||
// easing.type: Appearance?.animation.elementMoveFast.type ?? Easing.BezierSpline
|
||||
|
||||
@@ -3,6 +3,11 @@ import QtQuick
|
||||
import QtQuick.Layouts
|
||||
|
||||
Text {
|
||||
id: root
|
||||
property bool animateChange: false
|
||||
property real animationDistanceX: 0
|
||||
property real animationDistanceY: 6
|
||||
|
||||
renderType: Text.NativeRendering
|
||||
verticalAlignment: Text.AlignVCenter
|
||||
font {
|
||||
@@ -12,4 +17,73 @@ Text {
|
||||
}
|
||||
color: Appearance?.m3colors.m3onBackground ?? "black"
|
||||
linkColor: Appearance?.m3colors.m3primary
|
||||
|
||||
component Anim: NumberAnimation {
|
||||
target: root
|
||||
duration: 300 / 2
|
||||
easing.type: Easing.BezierSpline
|
||||
easing.bezierCurve: Appearance.animation.elementMoveFast.bezierCurve
|
||||
}
|
||||
|
||||
Behavior on text {
|
||||
id: textAnimationBehavior
|
||||
property real originalX: root.x
|
||||
property real originalY: root.y
|
||||
enabled: root.animateChange
|
||||
|
||||
SequentialAnimation {
|
||||
alwaysRunToEnd: true
|
||||
ScriptAction {
|
||||
script: textAnimationBehavior.originalX = root.x;
|
||||
}
|
||||
ScriptAction {
|
||||
script: textAnimationBehavior.originalY = root.y;
|
||||
}
|
||||
ParallelAnimation {
|
||||
Anim {
|
||||
property: "x"
|
||||
to: textAnimationBehavior.originalX - root.animationDistanceX
|
||||
easing.type: Easing.InSine
|
||||
}
|
||||
Anim {
|
||||
property: "y"
|
||||
to: textAnimationBehavior.originalY - root.animationDistanceY
|
||||
easing.type: Easing.InSine
|
||||
}
|
||||
Anim {
|
||||
property: "opacity"
|
||||
to: 0
|
||||
easing.type: Easing.InSine
|
||||
}
|
||||
}
|
||||
PropertyAction {} // Tie the text update to this point (we don't want it to happen during the first slide+fade)
|
||||
PropertyAction {
|
||||
target: root
|
||||
property: "x"
|
||||
value: textAnimationBehavior.originalX + root.animationDistanceX
|
||||
}
|
||||
PropertyAction {
|
||||
target: root
|
||||
property: "y"
|
||||
value: textAnimationBehavior.originalY + root.animationDistanceY
|
||||
}
|
||||
ParallelAnimation {
|
||||
Anim {
|
||||
property: "x"
|
||||
to: textAnimationBehavior.originalX
|
||||
easing.type: Easing.OutSine
|
||||
}
|
||||
Anim {
|
||||
property: "y"
|
||||
to: textAnimationBehavior.originalY
|
||||
easing.type: Easing.OutSine
|
||||
}
|
||||
Anim {
|
||||
property: "opacity"
|
||||
to: 1
|
||||
easing.type: Easing.OutSine
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user