72 lines
1.9 KiB
QML
72 lines
1.9 KiB
QML
import QtQuick
|
|
import QtQuick.Controls
|
|
|
|
Item {
|
|
id: d
|
|
property var entryObj
|
|
property bool focused: false
|
|
signal clicked()
|
|
|
|
height: 74
|
|
|
|
Rectangle {
|
|
id: card
|
|
anchors.fill: parent
|
|
radius: 16
|
|
color: focused ? "#1a3b66" : "#0d1a33"
|
|
opacity: focused ? 0.95 : 0.75
|
|
border.color: focused ? "#7fb6ff" : "transparent"
|
|
border.width: focused ? 2 : 0
|
|
|
|
Behavior on opacity { NumberAnimation { duration: 140 } }
|
|
Behavior on color { ColorAnimation { duration: 140 } }
|
|
Behavior on border.width { NumberAnimation { duration: 140 } }
|
|
|
|
GlowFocus {
|
|
anchors.fill: parent
|
|
visible: focused
|
|
}
|
|
|
|
Row {
|
|
anchors.fill: parent
|
|
anchors.margins: 14
|
|
spacing: 14
|
|
|
|
Image {
|
|
width: 46
|
|
height: 46
|
|
source: entryObj.icon
|
|
fillMode: Image.PreserveAspectFit
|
|
smooth: true
|
|
}
|
|
|
|
Column {
|
|
spacing: 2
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
|
|
Text {
|
|
text: entryObj.title
|
|
color: "white"
|
|
font.pixelSize: focused ? 22 : 20
|
|
Behavior on font.pixelSize { NumberAnimation { duration: 140 } }
|
|
}
|
|
Text {
|
|
text: entryObj.subtitle ? entryObj.subtitle : ""
|
|
visible: text.length > 0
|
|
color: "#cfe3ff"
|
|
opacity: 0.75
|
|
font.pixelSize: 14
|
|
}
|
|
}
|
|
}
|
|
|
|
scale: focused ? 1.03 : 1.0
|
|
Behavior on scale { NumberAnimation { duration: 160; easing.type: Easing.OutCubic } }
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: d.clicked()
|
|
}
|
|
}
|