summary refs log tree commit diff
path: root/resources/qml/TimelineMetadata.qml
diff options
context:
space:
mode:
Diffstat (limited to 'resources/qml/TimelineMetadata.qml')
-rw-r--r--resources/qml/TimelineMetadata.qml101
1 files changed, 101 insertions, 0 deletions
diff --git a/resources/qml/TimelineMetadata.qml b/resources/qml/TimelineMetadata.qml
new file mode 100644

index 00000000..d57c56d9 --- /dev/null +++ b/resources/qml/TimelineMetadata.qml
@@ -0,0 +1,101 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import "./components" +import "./delegates" +import "./emoji" +import "./ui" +import "./dialogs" +import Qt.labs.platform 1.1 as Platform +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import QtQuick.Window +import im.nheko + +RowLayout { + id: metadata + + property int iconSize: Math.floor(fontMetrics.ascent * scaling) + required property double scaling + + required property string eventId + required property int status + required property int trustlevel + required property bool isEdited + required property bool isEncrypted + required property string threadId + required property date timestamp + required property Room room + + spacing: 2 + + StatusIndicator { + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + eventId: metadata.eventId + height: parent.iconSize + status: metadata.status + width: parent.iconSize + } + Image { + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: qsTr("Edited") + ToolTip.visible: editHovered.hovered + height: parent.iconSize + 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 + width: parent.iconSize + Layout.preferredWidth: parent.iconSize + Layout.preferredHeight: parent.iconSize + HoverHandler { + id: editHovered + + } + } + ImageButton { + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + ToolTip.delay: Nheko.tooltipDelay + ToolTip.text: qsTr("Part of a thread") + ToolTip.visible: hovered + buttonTextColor: TimelineManager.userColor(metadata.threadId, palette.base) + height: parent.iconSize + image: ":/icons/icons/ui/thread.svg" + visible: metadata.threadId + width: parent.iconSize + + onClicked: metadata.room.thread = threadId + } + EncryptionIndicator { + Layout.alignment: Qt.AlignRight | Qt.AlignVCenter + encrypted: metadata.isEncrypted + height: parent.iconSize + sourceSize.height: parent.iconSize * Screen.devicePixelRatio + sourceSize.width: parent.iconSize * Screen.devicePixelRatio + trust: metadata.trustlevel + visible: metadata.room.isEncrypted + width: parent.iconSize + Layout.preferredWidth: parent.iconSize + Layout.preferredHeight: parent.iconSize + } + 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 + + } + } +}