2022-12-21 10:22:48 +08:00
|
|
|
|
import QtQuick 2.0
|
|
|
|
|
import org.ukui.menu.core 1.0
|
|
|
|
|
|
|
|
|
|
Item {
|
|
|
|
|
id: root
|
|
|
|
|
|
|
|
|
|
property int display: Display.TextUnderIcon
|
|
|
|
|
// 上下布局icon大小为48*48 左右布局icon大小为32*32
|
|
|
|
|
property int iconHeight: 48
|
|
|
|
|
property int iconWidth: 48
|
|
|
|
|
property string appName: ""
|
|
|
|
|
property string appIcon: ""
|
|
|
|
|
// 上下布局spacing:0 左右布局spacing:12
|
|
|
|
|
property int spacing: 2
|
2023-02-20 17:23:08 +08:00
|
|
|
|
property bool textTruncated: iconText.truncated
|
2022-12-21 10:22:48 +08:00
|
|
|
|
state: root.display
|
|
|
|
|
|
|
|
|
|
states: [
|
|
|
|
|
State {
|
|
|
|
|
name: Display.TextBesideIcon
|
2023-02-20 17:23:08 +08:00
|
|
|
|
PropertyChanges {
|
2022-12-21 10:22:48 +08:00
|
|
|
|
target: iconImage
|
|
|
|
|
anchors.verticalCenter: root.verticalCenter
|
2023-02-20 17:23:08 +08:00
|
|
|
|
anchors.left: root.left
|
|
|
|
|
anchors.leftMargin: root.spacing
|
2022-12-21 10:22:48 +08:00
|
|
|
|
}
|
|
|
|
|
PropertyChanges {
|
|
|
|
|
target: iconText
|
|
|
|
|
textMaxWidth: root.width - iconImage.width - root.spacing
|
|
|
|
|
|
|
|
|
|
anchors.left: iconImage.right
|
|
|
|
|
anchors.leftMargin: root.spacing
|
|
|
|
|
anchors.verticalCenter: root.verticalCenter
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
State {
|
|
|
|
|
name: Display.TextUnderIcon
|
|
|
|
|
PropertyChanges {
|
|
|
|
|
target: iconImage
|
|
|
|
|
anchors.top: root.top
|
|
|
|
|
anchors.topMargin: (root.height - root.spacing -iconImage.height -iconText.height) / 2
|
|
|
|
|
anchors.horizontalCenter: root.horizontalCenter
|
|
|
|
|
}
|
|
|
|
|
PropertyChanges {
|
|
|
|
|
target: iconText
|
|
|
|
|
textMaxWidth: root.width
|
|
|
|
|
|
|
|
|
|
anchors.top: iconImage.bottom
|
|
|
|
|
anchors.topMargin: root.spacing
|
|
|
|
|
anchors.horizontalCenter: root.horizontalCenter
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
|
|
|
|
|
Image {
|
|
|
|
|
id: iconImage
|
|
|
|
|
height: root.iconHeight
|
|
|
|
|
width: root.iconWidth
|
|
|
|
|
source: root.appIcon
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
StyleText {
|
|
|
|
|
id: iconText
|
|
|
|
|
property int textMaxWidth: root.width
|
|
|
|
|
text: root.appName
|
|
|
|
|
font.pixelSize: 14
|
|
|
|
|
elide: Text.ElideRight
|
|
|
|
|
Component.onCompleted: {
|
|
|
|
|
var textWidth = contentWidth > textMaxWidth ? textMaxWidth : contentWidth
|
|
|
|
|
width = textWidth
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|