show forward menu item only for relevant events, changes to ui

This commit is contained in:
targetakhil 2021-04-15 21:14:58 +05:30
parent ce8246238e
commit 6893e3a8d5
4 changed files with 32 additions and 7 deletions

View file

@ -2,16 +2,19 @@
//
// SPDX-License-Identifier: GPL-3.0-or-later
import "./delegates/"
import QtQuick 2.9
import QtQuick.Controls 2.3
import im.nheko 1.0
Popup {
Dialog {
id: forwardMessagePopup
title: qsTr("Forward Message")
x: 400
y: 400
width: 200
height: replyPreview.height + roomTextInput.height + completerPopup.height + implicitFooterHeight + implicitHeaderHeight
property var mid
@ -24,19 +27,27 @@ Popup {
completerPopup.close();
}
background: Rectangle {
border.color: "#444"
}
function setMessageEventId(mid_in) {
mid = mid_in;
}
Reply {
id: replyPreview
anchors.left: parent.left
anchors.right: parent.right
anchors.top: parent.top
modelData: TimelineManager.timeline ? TimelineManager.timeline.getDump(mid, "") : {
}
userColor: TimelineManager.userColor(modelData.userId, colors.window)
}
MatrixTextField {
id: roomTextInput
width: forwardMessagePopup.width - forwardMessagePopup.leftPadding * 2
anchors.top: replyPreview.bottom
color: colors.text
onTextEdited: {
completerPopup.completer.searchString = text;
@ -58,7 +69,8 @@ Popup {
Completer {
id: completerPopup
y: roomTextInput.height + roomTextInput.bottomPadding
y: replyPreview.height + roomTextInput.height + roomTextInput.bottomPadding
width: forwardMessagePopup.width - forwardMessagePopup.leftPadding * 2
completerName: "room"
avatarHeight: 24

View file

@ -141,11 +141,12 @@ Page {
}
Platform.MenuItem {
visible: messageContextMenu.eventType == MtxEvent.ImageMessage || messageContextMenu.eventType == MtxEvent.VideoMessage || messageContextMenu.eventType == MtxEvent.AudioMessage || messageContextMenu.eventType == MtxEvent.FileMessage || messageContextMenu.eventType == MtxEvent.Sticker || messageContextMenu.eventType == MtxEvent.TextMessage|| messageContextMenu.eventType == MtxEvent.LocationMessage || messageContextMenu.eventType == MtxEvent.EmoteMessage || messageContextMenu.eventType == MtxEvent.NoticeMessage
text: qsTr("Forward")
onTriggered: {
var forwardMess = forwardCompleterComponent.createObject(timelineRoot);
forwardMess.setMessageEventId(messageContextMenu.eventId);
forwardMess.open();
forwardMess.setMessageEventId(messageContextMenu.eventId)
}
}

View file

@ -832,6 +832,17 @@ TimelineModel::forwardMessage(QString eventId, QString roomId)
emit forwardToRoom(e, roomId, cache::isRoomEncrypted(room_id_.toStdString()));
}
QString
TimelineModel::messageContent(QString eventId)
{
auto e = events.get(eventId.toStdString(), "");
if (!e)
return "";
auto content = mtx::accessors::body(*e);
return QString::fromStdString(content);
}
void
TimelineModel::viewDecryptedRawMessage(QString id) const
{

View file

@ -220,6 +220,7 @@ public:
Q_INVOKABLE void viewRawMessage(QString id) const;
Q_INVOKABLE void forwardMessage(QString eventId, QString roomId);
Q_INVOKABLE QString messageContent(QString eventId);
Q_INVOKABLE void viewDecryptedRawMessage(QString id) const;
Q_INVOKABLE void openUserProfile(QString userid, bool global = false);
Q_INVOKABLE void openRoomSettings();