forked from Shinonome/dots-hyprland
62 lines
1.8 KiB
QML
62 lines
1.8 KiB
QML
import QtQuick
|
|
import QtQuick.Layouts
|
|
import qs.modules.common
|
|
import qs.modules.common.widgets
|
|
|
|
Item {
|
|
id: root
|
|
|
|
property bool shown: true
|
|
property alias icon: shapeWidget.text
|
|
property alias title: widgetNameText.text
|
|
property alias description: widgetDescriptionText.text
|
|
property alias shape: shapeWidget.shape
|
|
property alias descriptionHorizontalAlignment: widgetDescriptionText.horizontalAlignment
|
|
|
|
opacity: shown ? 1 : 0
|
|
visible: opacity > 0
|
|
anchors {
|
|
fill: parent
|
|
topMargin: -30 * (1 - opacity)
|
|
bottomMargin: 30 * (1 - opacity)
|
|
}
|
|
|
|
Behavior on opacity {
|
|
animation: Appearance.animation.elementMoveEnter.numberAnimation.createObject(this)
|
|
}
|
|
|
|
ColumnLayout {
|
|
anchors.centerIn: parent
|
|
spacing: 5
|
|
|
|
MaterialShapeWrappedMaterialSymbol {
|
|
id: shapeWidget
|
|
Layout.alignment: Qt.AlignHCenter
|
|
padding: 12
|
|
iconSize: 56
|
|
rotation: -30 * (1 - root.opacity)
|
|
}
|
|
StyledText {
|
|
id: widgetNameText
|
|
visible: title !== ""
|
|
Layout.alignment: Qt.AlignHCenter
|
|
font {
|
|
family: Appearance.font.family.title
|
|
pixelSize: Appearance.font.pixelSize.larger
|
|
variableAxes: Appearance.font.variableAxes.title
|
|
}
|
|
color: Appearance.m3colors.m3outline
|
|
horizontalAlignment: Text.AlignHCenter
|
|
}
|
|
StyledText {
|
|
id: widgetDescriptionText
|
|
visible: description !== ""
|
|
Layout.fillWidth: true
|
|
font.pixelSize: Appearance.font.pixelSize.small
|
|
color: Appearance.m3colors.m3outline
|
|
horizontalAlignment: Text.AlignLeft
|
|
wrapMode: Text.Wrap
|
|
}
|
|
}
|
|
}
|