mirror of
https://github.com/Nheko-Reborn/nheko.git
synced 2024-10-30 09:30:47 +03:00
Enable link handling
This commit is contained in:
parent
993926e189
commit
88dc72df4f
6 changed files with 41 additions and 18 deletions
33
resources/qml/MatrixText.qml
Normal file
33
resources/qml/MatrixText.qml
Normal 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
|
||||
}
|
||||
}
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -827,6 +827,7 @@ TimelineModel::replyAction(QString id)
|
|||
[](const auto &e) -> std::string { return eventMsgType(e); }, event));
|
||||
related.quoted_body =
|
||||
boost::apply_visitor([](const auto &e) -> QString { return eventBody(e); }, event);
|
||||
related.room = room_id_;
|
||||
|
||||
if (related.quoted_body.isEmpty())
|
||||
return;
|
||||
|
|
Loading…
Reference in a new issue