summary refs log tree commit diff
path: root/resources
diff options
context:
space:
mode:
authorNicolas Werner <nicolas.werner@hotmail.de>2019-11-03 03:28:16 +0100
committerNicolas Werner <nicolas.werner@hotmail.de>2019-11-23 20:06:15 +0100
commit88dc72df4f7cd6cabdb48866e6030f5e506eb24f (patch)
tree58b8752b724ef1bd213cf8a9a61c08fa44399bd9 /resources
parentMake user clickable and improve button cursor look (diff)
downloadnheko-88dc72df4f7cd6cabdb48866e6030f5e506eb24f.tar.xz
Enable link handling
Diffstat (limited to 'resources')
-rw-r--r--resources/qml/MatrixText.qml33
-rw-r--r--resources/qml/delegates/NoticeMessage.qml8
-rw-r--r--resources/qml/delegates/Placeholder.qml7
-rw-r--r--resources/qml/delegates/TextMessage.qml9
-rw-r--r--resources/res.qrc1
5 files changed, 40 insertions, 18 deletions
diff --git a/resources/qml/MatrixText.qml b/resources/qml/MatrixText.qml
new file mode 100644
index 00000000..5d20095c
--- /dev/null
+++ b/resources/qml/MatrixText.qml
@@ -0,0 +1,33 @@
+import QtQuick 2.5
+import QtQuick.Controls 2.3
+
+TextEdit {
+	textFormat: TextEdit.RichText
+	readOnly: true
+	wrapMode: Text.Wrap
+	selectByMouse: true
+	color: colors.text
+
+	onLinkActivated: {
+		if (/^https:\/\/matrix.to\/#\/(@.*)$/.test(link)) chat.model.openUserProfile(/^https:\/\/matrix.to\/#\/(@.*)$/.exec(link)[1])
+		if (/^https:\/\/matrix.to\/#\/(![^\/]*)$/.test(link)) timelineManager.setHistoryView(/^https:\/\/matrix.to\/#\/(!.*)$/.exec(link)[1])
+		if (/^https:\/\/matrix.to\/#\/(![^\/]*)\/(\$.*)$/.test(link)) {
+			var match = /^https:\/\/matrix.to\/#\/(![^\/]*)\/(\$.*)$/.exec(link)
+			timelineManager.setHistoryView(match[1])
+			chat.positionViewAtIndex(chat.model.idToIndex(match[2]), ListView.Contain)
+		}
+		else Qt.openUrlExternally(link)
+	}
+	MouseArea
+	{
+		anchors.fill: parent
+		onPressed:  mouse.accepted = false
+		cursorShape: parent.hoveredLink ? Qt.PointingHandCursor : Qt.ArrowCursor
+	}
+
+	ToolTip {
+		visible: parent.hoveredLink
+		text: parent.hoveredLink
+		palette: colors
+	}
+}
diff --git a/resources/qml/delegates/NoticeMessage.qml b/resources/qml/delegates/NoticeMessage.qml
index 59e051be..a392eb5b 100644
--- a/resources/qml/delegates/NoticeMessage.qml
+++ b/resources/qml/delegates/NoticeMessage.qml
@@ -1,12 +1,8 @@
-import QtQuick 2.5
+import ".."
 
-TextEdit {
+MatrixText {
 	text: model.formattedBody
-	textFormat: TextEdit.RichText
-	readOnly: true
-	wrapMode: Text.Wrap
 	width: parent ? parent.width : undefined
-	selectByMouse: true
 	font.italic: true
 	color: inactiveColors.text
 }
diff --git a/resources/qml/delegates/Placeholder.qml b/resources/qml/delegates/Placeholder.qml
index 171bf18d..4c0e68c3 100644
--- a/resources/qml/delegates/Placeholder.qml
+++ b/resources/qml/delegates/Placeholder.qml
@@ -1,10 +1,7 @@
-import QtQuick 2.5
-import QtQuick.Controls 2.1
+import ".."
 
-Label {
+MatrixText {
 	text: qsTr("unimplemented event: ") + model.type
-	textFormat: Text.PlainText
-	wrapMode: Text.Wrap
 	width: parent ? parent.width : undefined
 	color: inactiveColors.text
 }
diff --git a/resources/qml/delegates/TextMessage.qml b/resources/qml/delegates/TextMessage.qml
index 713be868..990a3f5b 100644
--- a/resources/qml/delegates/TextMessage.qml
+++ b/resources/qml/delegates/TextMessage.qml
@@ -1,11 +1,6 @@
-import QtQuick 2.5
+import ".."
 
-TextEdit {
+MatrixText {
 	text: model.formattedBody
-	textFormat: TextEdit.RichText
-	readOnly: true
-	wrapMode: Text.Wrap
 	width: parent ? parent.width : undefined
-	selectByMouse: true
-	color: colors.text
 }
diff --git a/resources/res.qrc b/resources/res.qrc
index 264ed82d..c9938d57 100644
--- a/resources/res.qrc
+++ b/resources/res.qrc
@@ -118,6 +118,7 @@
         <file>qml/TimelineView.qml</file>
         <file>qml/Avatar.qml</file>
         <file>qml/ImageButton.qml</file>
+        <file>qml/MatrixText.qml</file>
         <file>qml/StatusIndicator.qml</file>
         <file>qml/EncryptionIndicator.qml</file>
         <file>qml/TimelineRow.qml</file>