Implement message forwarding

Implements #338
This commit is contained in:
Tobias Fella
2023-08-27 09:55:31 +00:00
parent 6305359b3c
commit a8aa775575
4 changed files with 56 additions and 0 deletions

View File

@@ -605,6 +605,7 @@ ColumnLayout {
source: root.jsonSource,
eventType: root.delegateType,
plainText: root.plainText,
htmlText: root.display,
});
contextMenu.open();
}

View File

@@ -19,6 +19,7 @@ Loader {
required property string source
property string selectedText: ""
required property string plainText
property string htmlText: undefined
property list<Kirigami.Action> nestedActions
@@ -40,6 +41,20 @@ Loader {
currentRoom.chatBoxEditId = "";
}
},
Kirigami.Action {
text: i18nc("@action:inmenu As in 'Forward this message'", "Forward")
icon.name: "mail-forward-symbolic"
onTriggered: {
let page = applicationWindow().pageStack.pushDialogLayer("qrc:/ChooseRoomDialog.qml", {}, {
title: i18nc("@title", "Forward Message"),
width: Kirigami.Units.gridUnit * 25
})
page.chosen.connect(function(targetRoomId) {
Controller.activeConnection.room(targetRoomId).postHtmlMessage(loadRoot.plainText, loadRoot.htmlText ? loadRoot.htmlText : loadRoot.plainText)
page.closeDialog()
})
}
},
Kirigami.Action {
visible: author.id === currentRoom.localUser.id || currentRoom.canSendState("redact")
text: i18n("Remove")

View File

@@ -0,0 +1,39 @@
// SPDX-FileCopyrightText: 2023 Tobias Fella <tobias.fella@kde.org>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtQuick 2.15
import QtQuick.Controls 2.15
import org.kde.kirigami 2.20 as Kirigami
import org.kde.neochat 1.0
import "./RoomList"
Kirigami.ScrollablePage {
id: root
title: i18nc("@title", "Choose a Room")
signal chosen(string roomId)
header: Kirigami.SearchField {
onTextChanged: sortModel.filterText = text
}
ListView {
model: SortFilterRoomListModel {
id: sortModel
sourceModel: RoomListModel {
connection: Controller.activeConnection
}
}
delegate: RoomDelegate {
id: roomDelegate
filterText: ""
onClicked: {
root.chosen(roomDelegate.currentRoom.id)
}
}
}
}

View File

@@ -135,5 +135,6 @@
<file alias="DirectChatDrawerHeader.qml">qml/RoomDrawer/DirectChatDrawerHeader.qml</file>
<file alias="GroupChatDrawerHeader.qml">qml/RoomDrawer/GroupChatDrawerHeader.qml</file>
<file alias="RoomInformation.qml">qml/RoomDrawer/RoomInformation.qml</file>
<file alias="ChooseRoomDialog.qml">qml/Page/ChooseRoomDialog.qml</file>
</qresource>
</RCC>