Enable link handling

This commit is contained in:
Nicolas Werner 2019-11-03 03:28:16 +01:00
parent 993926e189
commit 88dc72df4f
6 changed files with 41 additions and 18 deletions

View file

@ -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
}
}

View file

@ -1,12 +1,8 @@
import QtQuick 2.5 import ".."
TextEdit { MatrixText {
text: model.formattedBody text: model.formattedBody
textFormat: TextEdit.RichText
readOnly: true
wrapMode: Text.Wrap
width: parent ? parent.width : undefined width: parent ? parent.width : undefined
selectByMouse: true
font.italic: true font.italic: true
color: inactiveColors.text color: inactiveColors.text
} }

View file

@ -1,10 +1,7 @@
import QtQuick 2.5 import ".."
import QtQuick.Controls 2.1
Label { MatrixText {
text: qsTr("unimplemented event: ") + model.type text: qsTr("unimplemented event: ") + model.type
textFormat: Text.PlainText
wrapMode: Text.Wrap
width: parent ? parent.width : undefined width: parent ? parent.width : undefined
color: inactiveColors.text color: inactiveColors.text
} }

View file

@ -1,11 +1,6 @@
import QtQuick 2.5 import ".."
TextEdit { MatrixText {
text: model.formattedBody text: model.formattedBody
textFormat: TextEdit.RichText
readOnly: true
wrapMode: Text.Wrap
width: parent ? parent.width : undefined width: parent ? parent.width : undefined
selectByMouse: true
color: colors.text
} }

View file

@ -118,6 +118,7 @@
<file>qml/TimelineView.qml</file> <file>qml/TimelineView.qml</file>
<file>qml/Avatar.qml</file> <file>qml/Avatar.qml</file>
<file>qml/ImageButton.qml</file> <file>qml/ImageButton.qml</file>
<file>qml/MatrixText.qml</file>
<file>qml/StatusIndicator.qml</file> <file>qml/StatusIndicator.qml</file>
<file>qml/EncryptionIndicator.qml</file> <file>qml/EncryptionIndicator.qml</file>
<file>qml/TimelineRow.qml</file> <file>qml/TimelineRow.qml</file>

View file

@ -827,6 +827,7 @@ TimelineModel::replyAction(QString id)
[](const auto &e) -> std::string { return eventMsgType(e); }, event)); [](const auto &e) -> std::string { return eventMsgType(e); }, event));
related.quoted_body = related.quoted_body =
boost::apply_visitor([](const auto &e) -> QString { return eventBody(e); }, event); boost::apply_visitor([](const auto &e) -> QString { return eventBody(e); }, event);
related.room = room_id_;
if (related.quoted_body.isEmpty()) if (related.quoted_body.isEmpty())
return; return;