diff options
Diffstat (limited to 'raveos-hyprland-theme/theme-data/dms/Widgets/DankIcon.qml')
| -rw-r--r-- | raveos-hyprland-theme/theme-data/dms/Widgets/DankIcon.qml | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/raveos-hyprland-theme/theme-data/dms/Widgets/DankIcon.qml b/raveos-hyprland-theme/theme-data/dms/Widgets/DankIcon.qml new file mode 100644 index 0000000..e80b93a --- /dev/null +++ b/raveos-hyprland-theme/theme-data/dms/Widgets/DankIcon.qml @@ -0,0 +1,77 @@ +import QtQuick +import qs.Common + +Item { + id: root + + property alias name: icon.text + property alias size: icon.font.pixelSize + property alias color: icon.color + property bool filled: false + property real fill: filled ? 1.0 : 0.0 + property int grade: Theme.isLightMode ? 0 : -25 + property int weight: filled ? 500 : 400 + + implicitWidth: Math.round(size) + implicitHeight: Math.round(size) + + signal rotationCompleted + + FontLoader { + id: materialSymbolsFont + source: Qt.resolvedUrl("../assets/fonts/material-design-icons/variablefont/MaterialSymbolsRounded[FILL,GRAD,opsz,wght].ttf") + } + + StyledText { + id: icon + + anchors.fill: parent + + font.family: materialSymbolsFont.name + font.pixelSize: Theme.fontSizeMedium + font.weight: root.weight + color: Theme.surfaceText + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + antialiasing: true + + Behavior on color { + enabled: Theme.currentAnimationSpeed !== SettingsData.AnimationSpeed.None + DankColorAnim { + duration: Theme.shorterDuration + easing.bezierCurve: Theme.expressiveCurves.standard + } + } + font.variableAxes: { + "FILL": root.fill.toFixed(1), + "GRAD": root.grade, + "opsz": 24, + "wght": root.weight + } + + Behavior on font.weight { + NumberAnimation { + duration: Theme.shortDuration + easing.type: Theme.standardEasing + } + } + } + + Behavior on fill { + NumberAnimation { + duration: Theme.shortDuration + easing.type: Theme.standardEasing + } + } + + Timer { + id: rotationTimer + interval: 16 + repeat: false + onTriggered: root.rotationCompleted() + } + + onRotationChanged: { + rotationTimer.restart(); + } +} |