Merge pull request #891 from tastytea/hidden-events-gui
Add GUI to change hidden events per room
3 files changed, 145 insertions, 1 deletions
diff --git a/resources/qml/dialogs/HiddenEventsDialog.qml b/resources/qml/dialogs/HiddenEventsDialog.qml
new file mode 100644
index 00000000..cc6f17a5
--- /dev/null
+++ b/resources/qml/dialogs/HiddenEventsDialog.qml
@@ -0,0 +1,127 @@
+// SPDX-FileCopyrightText: 2022 Nheko Contributors
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+import ".."
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Layouts 1.3
+import im.nheko 1.0
+
+ApplicationWindow {
+ id: hiddenEventsDialog
+
+ property string roomid: ""
+ property string roomName: ""
+ property var onAccepted: undefined
+
+ modality: Qt.NonModal
+ flags: Qt.Dialog | Qt.WindowTitleHint
+ minimumWidth: 250
+ minimumHeight: 220
+
+ HiddenEvents {
+ id: hiddenEvents
+
+ roomid: hiddenEventsDialog.roomid
+ }
+
+ title: {
+ if (roomid) {
+ return qsTr("Hidden events for %1").arg(roomName);
+ }
+ else {
+ return qsTr("Hidden events");
+ }
+ }
+
+ Shortcut {
+ sequence: StandardKey.Cancel
+ onActivated: dbb.rejected()
+ }
+
+ ColumnLayout {
+ spacing: Nheko.paddingMedium
+ anchors.margins: Nheko.paddingMedium
+ anchors.fill: parent
+
+ MatrixText {
+ id: promptLabel
+ text: {
+ if (roomid) {
+ return qsTr("These events will be be <b>shown</b> in %1:").arg(roomName);
+ }
+ else {
+ return qsTr("These events will be be <b>shown</b> in all rooms:");
+ }
+ }
+ font.pixelSize: Math.floor(fontMetrics.font.pixelSize * 1.2)
+ Layout.fillWidth: true
+ Layout.fillHeight: false
+ }
+
+ GridLayout {
+ columns: 2
+ rowSpacing: Nheko.paddingMedium
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+
+ MatrixText {
+ text: qsTr("User events")
+ ToolTip.text: qsTr("Joins, leaves, avatar and name changes, bans, …")
+ ToolTip.visible: hh1.hovered
+ Layout.fillWidth: true
+
+ HoverHandler {
+ id: hh1
+ }
+ }
+
+ ToggleButton {
+ Layout.alignment: Qt.AlignRight
+ checked: !hiddenEvents.hiddenEvents.includes(MtxEvent.Member)
+ onToggled: hiddenEvents.toggle(MtxEvent.Member)
+ }
+
+ MatrixText {
+ text: qsTr("Power level changes")
+ ToolTip.text: qsTr("Sent when a moderator is added/removed or the permissions of a room are changed.")
+ ToolTip.visible: hh2.hovered
+ Layout.fillWidth: true
+
+ HoverHandler {
+ id: hh2
+ }
+ }
+
+ ToggleButton {
+ Layout.alignment: Qt.AlignRight
+ checked: !hiddenEvents.hiddenEvents.includes(MtxEvent.PowerLevels)
+ onToggled: hiddenEvents.toggle(MtxEvent.PowerLevels)
+ }
+
+ MatrixText {
+ text: qsTr("Stickers")
+ Layout.fillWidth: true
+ }
+
+ ToggleButton {
+ Layout.alignment: Qt.AlignRight
+ checked: !hiddenEvents.hiddenEvents.includes(MtxEvent.Sticker)
+ onToggled: hiddenEvents.toggle(MtxEvent.Sticker)
+ }
+ }
+ }
+
+ footer: DialogButtonBox {
+ id: dbb
+
+ standardButtons: DialogButtonBox.Ok | DialogButtonBox.Cancel
+ onAccepted: {
+ hiddenEvents.save();
+ hiddenEventsDialog.close();
+ }
+ onRejected: hiddenEventsDialog.close();
+ }
+
+}
diff --git a/resources/qml/dialogs/RoomSettings.qml b/resources/qml/dialogs/RoomSettings.qml
index fad7b4c7..442010fd 100644
--- a/resources/qml/dialogs/RoomSettings.qml
+++ b/resources/qml/dialogs/RoomSettings.qml
@@ -254,6 +254,23 @@ ApplicationWindow {
Layout.alignment: Qt.AlignRight
}
+ MatrixText {
+ text: qsTr("Hidden events")
+ }
+
+ HiddenEventsDialog {
+ id: hiddenEventsDialog
+ roomid: roomSettings.roomId
+ roomName: roomSettings.roomName
+ }
+
+ Button {
+ text: qsTr("Configure")
+ ToolTip.text: qsTr("Select events to hide in this room")
+ onClicked: hiddenEventsDialog.show()
+ Layout.alignment: Qt.AlignRight
+ }
+
Item {
// for adding extra space between sections
Layout.fillWidth: true
@@ -302,5 +319,4 @@ ApplicationWindow {
}
}
-
}
diff --git a/resources/res.qrc b/resources/res.qrc
index 2fba5f4c..c8659150 100644
--- a/resources/res.qrc
+++ b/resources/res.qrc
@@ -152,6 +152,7 @@
<file>qml/dialogs/RoomMembers.qml</file>
<file>qml/dialogs/RoomSettings.qml</file>
<file>qml/dialogs/UserProfile.qml</file>
+ <file>qml/dialogs/HiddenEventsDialog.qml</file>
<file>qml/emoji/EmojiPicker.qml</file>
<file>qml/emoji/StickerPicker.qml</file>
<file>qml/ui/NhekoSlider.qml</file>
|