diff options
author | Nicolas Werner <nicolas.werner@hotmail.de> | 2019-11-03 03:28:16 +0100 |
---|---|---|
committer | Nicolas Werner <nicolas.werner@hotmail.de> | 2019-11-23 20:06:15 +0100 |
commit | 88dc72df4f7cd6cabdb48866e6030f5e506eb24f (patch) | |
tree | 58b8752b724ef1bd213cf8a9a61c08fa44399bd9 /resources | |
parent | Make user clickable and improve button cursor look (diff) | |
download | nheko-88dc72df4f7cd6cabdb48866e6030f5e506eb24f.tar.xz |
Enable link handling
Diffstat (limited to 'resources')
-rw-r--r-- | resources/qml/MatrixText.qml | 33 | ||||
-rw-r--r-- | resources/qml/delegates/NoticeMessage.qml | 8 | ||||
-rw-r--r-- | resources/qml/delegates/Placeholder.qml | 7 | ||||
-rw-r--r-- | resources/qml/delegates/TextMessage.qml | 9 | ||||
-rw-r--r-- | resources/res.qrc | 1 |
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> |