74 lines
2.1 KiB
QML
74 lines
2.1 KiB
QML
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
|
||
property bool textTruncated: iconText.truncated
|
||
state: root.display
|
||
|
||
states: [
|
||
State {
|
||
name: Display.TextBesideIcon
|
||
PropertyChanges {
|
||
target: iconImage
|
||
anchors.verticalCenter: root.verticalCenter
|
||
anchors.left: root.left
|
||
anchors.leftMargin: root.spacing
|
||
}
|
||
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
|
||
}
|
||
}
|
||
}
|