ukui-menu/qml/AppControls2/IconLabel.qml

74 lines
2.1 KiB
QML
Raw Normal View History

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: ""
// 上下布局spacing0 左右布局spacing12
property int spacing: 2
2023-02-20 17:23:08 +08:00
property bool textTruncated: iconText.truncated
state: root.display
states: [
State {
name: Display.TextBesideIcon
2023-02-20 17:23:08 +08:00
PropertyChanges {
target: iconImage
anchors.verticalCenter: root.verticalCenter
2023-02-20 17:23:08 +08:00
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
}
}
}