nheko/resources/qml/delegates/ImageMessage.qml

85 lines
2.6 KiB
QML
Raw Normal View History

2021-03-05 00:35:15 +01:00
// SPDX-FileCopyrightText: 2021 Nheko Contributors
//
2021-03-05 00:35:15 +01:00
// SPDX-License-Identifier: GPL-3.0-or-later
2021-02-14 01:28:28 +01:00
import QtQuick 2.12
import im.nheko 1.0
2019-10-06 01:44:02 +02:00
Item {
2020-10-08 21:11:21 +02:00
property double tempWidth: Math.min(parent ? parent.width : undefined, model.data.width < 1 ? parent.width : model.data.width)
property double tempHeight: tempWidth * model.data.proportionalHeight
2021-04-29 19:09:16 +02:00
property double divisor: model.isReply ? 5 : 3
property bool tooHigh: tempHeight > timelineView.height / divisor
2020-10-08 21:11:21 +02:00
height: Math.round(tooHigh ? timelineView.height / divisor : tempHeight)
width: Math.round(tooHigh ? (timelineView.height / divisor) / model.data.proportionalHeight : tempWidth)
2020-10-08 21:11:21 +02:00
Image {
id: blurhash
anchors.fill: parent
visible: img.status != Image.Ready
2021-05-13 08:23:56 +02:00
source: model.data.blurhash ? ("image://blurhash/" + model.data.blurhash) : ("image://colorimage/:/icons/icons/ui/do-not-disturb-rounded-sign@2x.png?" + Nheko.colors.buttonText)
2020-10-08 21:11:21 +02:00
asynchronous: true
fillMode: Image.PreserveAspectFit
sourceSize.width: parent.width
sourceSize.height: parent.height
}
Image {
id: img
anchors.fill: parent
source: model.data.url.replace("mxc://", "image://MxcImage/")
asynchronous: true
fillMode: Image.PreserveAspectFit
2020-08-21 21:46:42 +02:00
smooth: true
mipmap: true
2020-10-08 21:11:21 +02:00
2021-02-14 01:28:28 +01:00
TapHandler {
2020-10-08 21:11:21 +02:00
enabled: model.data.type == MtxEvent.ImageMessage && img.status == Image.Ready
2021-04-11 22:24:39 +02:00
onSingleTapped: {
TimelineManager.openImageOverlay(model.data.url, model.data.id);
eventPoint.accepted = true;
}
gesturePolicy: TapHandler.ReleaseWithinBounds
2021-02-14 01:28:28 +01:00
}
HoverHandler {
id: mouseArea
2020-10-08 21:11:21 +02:00
}
2020-10-13 22:24:42 +02:00
Item {
id: overlay
2020-10-18 22:30:42 +02:00
2020-10-13 22:24:42 +02:00
anchors.fill: parent
2021-02-14 01:28:28 +01:00
visible: mouseArea.hovered
2020-10-13 22:24:42 +02:00
Rectangle {
id: container
2020-10-18 22:30:42 +02:00
2020-10-13 22:24:42 +02:00
width: parent.width
implicitHeight: imgcaption.implicitHeight
2020-10-18 22:30:42 +02:00
anchors.bottom: overlay.bottom
2021-05-13 08:23:56 +02:00
color: Nheko.colors.window
2020-10-13 22:24:42 +02:00
opacity: 0.75
}
2020-10-13 22:24:42 +02:00
Text {
id: imgcaption
2020-10-18 22:30:42 +02:00
anchors.fill: container
elide: Text.ElideMiddle
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
// See this MSC: https://github.com/matrix-org/matrix-doc/pull/2530
text: model.data.filename ? model.data.filename : model.data.body
2021-05-13 08:23:56 +02:00
color: Nheko.colors.text
2020-10-13 22:24:42 +02:00
}
2020-10-18 22:30:42 +02:00
2020-10-13 22:24:42 +02:00
}
2020-10-18 22:30:42 +02:00
2020-10-13 22:24:42 +02:00
}
2020-10-18 22:30:42 +02:00
}