qtgrpc/examples/grpc/chat/client/ChatMessages/FileDelegate.qml

53 lines
1.5 KiB
QML

// Copyright (C) 2025 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Layouts
pragma ComponentBehavior: Bound
ColumnLayout {
id: root
required property var base
required property real maxMessageBoxWidth
readonly property real margin: 7.5
Rectangle {
implicitWidth: Math.min(childrenRect.width, root.maxMessageBoxWidth)
implicitHeight: childrenRect.height
color: root.base.darkColor
radius: 10
clip: true
RowLayout {
Image {
id: image
Layout.margins: root.margin
source: "../res/generic_file.svg"
sourceSize.width: 30
sourceSize.height: 30
smooth: true
antialiasing: true
asynchronous: true
}
Text {
Layout.margins: root.margin
Layout.leftMargin: 0
Layout.fillWidth: true
Layout.maximumWidth: root.maxMessageBoxWidth - image.width - 4 * root.margin
horizontalAlignment: Text.AlignLeft
text: root.base.display.file.name
color: hover.hovered? Qt.lighter(root.base.lightColor, 1.5) : root.base.lightColor
font.pointSize: 14
wrapMode: TextEdit.WrapAnywhere
}
clip: true
}
TapHandler { onTapped: ChatEngine.openUrl(root.base.display.file.content) }
HoverHandler { id: hover }
}
}