summary refs log tree commit diff
path: root/resources/qml/TimelineRow.qml
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2019-10-27 22:01:40 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2019-11-23 20:06:15 +0100
commit2055c75f8ba710e8950a55aa3c41a9cec9f26ad7 (patch)
tree173665c5059b4c878b8c4dd451fd632275d96f36 /resources/qml/TimelineRow.qml
parentRemove unused Qt Module (diff)
downloadnheko-2055c75f8ba710e8950a55aa3c41a9cec9f26ad7.tar.xz
Organize qml files a bit
Diffstat (limited to 'resources/qml/TimelineRow.qml')
-rw-r--r--resources/qml/TimelineRow.qml144
1 files changed, 144 insertions, 0 deletions
diff --git a/resources/qml/TimelineRow.qml b/resources/qml/TimelineRow.qml
new file mode 100644
index 00000000..fdc2ec95
--- /dev/null
+++ b/resources/qml/TimelineRow.qml
@@ -0,0 +1,144 @@
+import QtQuick 2.6
+import QtQuick.Controls 2.3
+import QtQuick.Layouts 1.2
+import QtGraphicalEffects 1.0
+import QtQuick.Window 2.2
+
+import com.github.nheko 1.0
+
+import "./delegates"
+
+RowLayout {
+	property var view: chat
+
+	anchors.leftMargin: avatarSize + 4
+	anchors.rightMargin: scrollbar.width
+	anchors.left: parent.left
+	anchors.right: parent.right
+
+	height: contentItem.height
+
+	MessageDelegate {
+		Layout.fillWidth: true
+		Layout.alignment: Qt.AlignTop
+		id: contentItem
+	}
+
+	StatusIndicator {
+		state: model.state
+		Layout.alignment: Qt.AlignRight | Qt.AlignTop
+		Layout.preferredHeight: 16
+	}
+
+	EncryptionIndicator {
+		visible: model.isEncrypted
+		Layout.alignment: Qt.AlignRight | Qt.AlignTop
+		Layout.preferredHeight: 16
+	}
+
+	Button {
+		Layout.alignment: Qt.AlignRight | Qt.AlignTop
+		id: replyButton
+		flat: true
+		Layout.preferredHeight: 16
+
+		ToolTip {
+			visible: replyButton.hovered
+			text: qsTr("Reply")
+			palette: colors
+		}
+
+		// disable background, because we don't want a border on hover
+		background: Item {
+		}
+
+		Image {
+			id: replyButtonImg
+			// Workaround, can't get icon.source working for now...
+			anchors.fill: parent
+			source: "qrc:/icons/icons/ui/mail-reply.png"
+		}
+		ColorOverlay {
+			anchors.fill: replyButtonImg
+			source: replyButtonImg
+			color: replyButton.hovered ? colors.highlight : colors.buttonText
+		}
+
+		onClicked: view.model.replyAction(model.id)
+	}
+	Button {
+		Layout.alignment: Qt.AlignRight | Qt.AlignTop
+		id: optionsButton
+		flat: true
+		Layout.preferredHeight: 16
+
+		ToolTip {
+			visible: optionsButton.hovered
+			text: qsTr("Options")
+			palette: colors
+		}
+
+		// disable background, because we don't want a border on hover
+		background: Item {
+		}
+
+		Image {
+			id: optionsButtonImg
+			// Workaround, can't get icon.source working for now...
+			anchors.fill: parent
+			source: "qrc:/icons/icons/ui/vertical-ellipsis.png"
+		}
+		ColorOverlay {
+			anchors.fill: optionsButtonImg
+			source: optionsButtonImg
+			color: optionsButton.hovered ? colors.highlight : colors.buttonText
+		}
+
+		onClicked: contextMenu.open()
+
+		Menu {
+			y: optionsButton.height
+			id: contextMenu
+			palette: colors
+
+			MenuItem {
+				text: qsTr("Read receipts")
+				onTriggered: view.model.readReceiptsAction(model.id)
+			}
+			MenuItem {
+				text: qsTr("Mark as read")
+			}
+			MenuItem {
+				text: qsTr("View raw message")
+				onTriggered: view.model.viewRawMessage(model.id)
+			}
+			MenuItem {
+				text: qsTr("Redact message")
+				onTriggered: view.model.redactEvent(model.id)
+			}
+			MenuItem {
+				visible: model.type == MtxEvent.ImageMessage || model.type == MtxEvent.VideoMessage || model.type == MtxEvent.AudioMessage || model.type == MtxEvent.FileMessage || model.type == MtxEvent.Sticker
+				text: qsTr("Save as")
+				onTriggered: timelineManager.saveMedia(model.url, model.filename, model.mimetype, model.type)
+			}
+		}
+	}
+
+	Text {
+		Layout.alignment: Qt.AlignRight | Qt.AlignTop
+		text: model.timestamp.toLocaleTimeString("HH:mm")
+		color: inactiveColors.text
+
+		MouseArea{
+			id: ma
+			anchors.fill: parent
+			hoverEnabled: true
+		}
+
+		ToolTip {
+			visible: ma.containsMouse
+			text: Qt.formatDateTime(model.timestamp, Qt.DefaultLocaleLongDate)
+			palette: colors
+		}
+	}
+}