diff options
Diffstat (limited to 'resources')
-rw-r--r-- | resources/qml/MessageView.qml | 16 | ||||
-rw-r--r-- | resources/qml/dialogs/ReportMessage.qml | 85 |
2 files changed, 101 insertions, 0 deletions
diff --git a/resources/qml/MessageView.qml b/resources/qml/MessageView.qml index df39f3d1..80ec87c2 100644 --- a/resources/qml/MessageView.qml +++ b/resources/qml/MessageView.qml @@ -415,6 +415,12 @@ Item { } } } + Component { + id: reportDialog + + ReportMessage {} + } + Platform.MenuItem { enabled: visible text: qsTr("Go to &message") @@ -522,6 +528,16 @@ Item { } } Platform.MenuItem { + text: qsTr("Report message") + enabled: visible + onTriggered: function () { + var dialog = reportDialog.createObject(timelineRoot, {"eventId": messageContextMenu.eventId}); + dialog.show(); + dialog.forceActiveFocus(); + timelineRoot.destroyOnClose(dialog); + } + } + Platform.MenuItem { enabled: visible text: qsTr("&Save as") visible: messageContextMenuC.eventType == MtxEvent.ImageMessage || messageContextMenuC.eventType == MtxEvent.VideoMessage || messageContextMenuC.eventType == MtxEvent.AudioMessage || messageContextMenuC.eventType == MtxEvent.FileMessage || messageContextMenuC.eventType == MtxEvent.Sticker diff --git a/resources/qml/dialogs/ReportMessage.qml b/resources/qml/dialogs/ReportMessage.qml new file mode 100644 index 00000000..a0b6325c --- /dev/null +++ b/resources/qml/dialogs/ReportMessage.qml @@ -0,0 +1,85 @@ +// SPDX-FileCopyrightText: Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import QtQuick +import QtQuick.Controls +import QtQuick.Layouts +import im.nheko + +ApplicationWindow { + required property string eventId + + width: 400 + height: gl.implicitHeight + 2 * Nheko.paddingMedium + title: qsTr("Report message") + + GridLayout { + id: gl + + columnSpacing: Nheko.paddingMedium + rowSpacing: Nheko.paddingMedium + columns: 2 + anchors.fill: parent + anchors.margins: Nheko.paddingMedium + + Label { + Layout.columnSpan: 2 + Layout.fillWidth: true + wrapMode: Label.WordWrap + text: qsTr("This message you are reporting will be sent to your server administrator for review. Please note that not all server administrators review reported content. You should also ask a room moderator to remove the content if necessary.") + } + + Label { + text: qsTr("Enter your reason for reporting:") + } + + TextField { + id: reason + + Layout.fillWidth: true + } + + Label { + text: qsTr("How bad is the message?") + } + + Slider { + id: score + + from: 0 + to: -100 + stepSize: 25 + snapMode: Slider.SnapAlways + Layout.fillWidth: true + } + + Item {} + + Label { + text: { + if (score.value === 0) + return qsTr("Not bad") + else if (score.value === -25) + return qsTr("Mild") + else if (score.value === -50) + return qsTr("Bad") + else if (score.value === -75) + return qsTr("Serious") + else if (score.value === -100) + return qsTr("Extremely serious") + } + } + + DialogButtonBox { + Layout.columnSpan: 2 + Layout.alignment: Qt.AlignRight + standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel + onAccepted: { + room.reportEvent(eventId, reason.text, score.value); + close(); + } + onRejected: close() + } + } +} |