You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
nheko/resources/qml/TimelineMetadata.qml

92 lines
3.0 KiB

// SPDX-FileCopyrightText: Nheko Contributors
//
// SPDX-License-Identifier: GPL-3.0-or-later
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import QtQuick.Window
import im.nheko
RowLayout {
id: metadata
required property string eventId
property int iconSize: Math.floor(fontMetrics.ascent * scaling)
required property bool isEdited
required property bool isEncrypted
required property Room room
required property double scaling
required property int status
required property string threadId
required property date timestamp
required property int trustlevel
spacing: 2
StatusIndicator {
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
Layout.preferredHeight: parent.iconSize
Layout.preferredWidth: parent.iconSize
eventId: metadata.eventId
status: metadata.status
}
Image {
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
Layout.preferredHeight: parent.iconSize
Layout.preferredWidth: parent.iconSize
ToolTip.delay: Nheko.tooltipDelay
ToolTip.text: qsTr("Edited")
ToolTip.visible: editHovered.hovered
source: "image://colorimage/:/icons/icons/ui/edit.svg?" + ((metadata.eventId == metadata.room.edit) ? palette.highlight : palette.buttonText)
sourceSize.height: parent.iconSize * Screen.devicePixelRatio
sourceSize.width: parent.iconSize * Screen.devicePixelRatio
visible: metadata.isEdited || metadata.eventId == metadata.room.edit
HoverHandler {
id: editHovered
}
}
ImageButton {
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
Layout.preferredHeight: parent.iconSize
Layout.preferredWidth: parent.iconSize
ToolTip.delay: Nheko.tooltipDelay
ToolTip.text: qsTr("Part of a thread")
ToolTip.visible: hovered
buttonTextColor: TimelineManager.userColor(metadata.threadId, palette.base)
image: ":/icons/icons/ui/thread.svg"
visible: metadata.threadId
onClicked: metadata.room.thread = threadId
}
EncryptionIndicator {
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
Layout.preferredHeight: parent.iconSize
Layout.preferredWidth: parent.iconSize
encrypted: metadata.isEncrypted
sourceSize.height: parent.iconSize * Screen.devicePixelRatio
sourceSize.width: parent.iconSize * Screen.devicePixelRatio
trust: metadata.trustlevel
visible: metadata.room.isEncrypted
}
Label {
id: ts
Layout.alignment: Qt.AlignRight | Qt.AlignTop
Layout.preferredWidth: implicitWidth
ToolTip.delay: Nheko.tooltipDelay
ToolTip.text: Qt.formatDateTime(metadata.timestamp, Qt.DefaultLocaleLongDate)
ToolTip.visible: ma.hovered
color: palette.inactive.text
font.pointSize: fontMetrics.font.pointSize * parent.scaling
text: metadata.timestamp.toLocaleTimeString(Locale.ShortFormat)
HoverHandler {
id: ma
}
}
}