summary refs log tree commit diff
path: root/resources/qml
diff options
context:
space:
mode:
Diffstat (limited to 'resources/qml')
-rw-r--r--resources/qml/dialogs/IgnoredUsers.qml83
-rw-r--r--resources/qml/dialogs/UserProfile.qml13
-rw-r--r--resources/qml/pages/UserSettingsPage.qml18
3 files changed, 113 insertions, 1 deletions
diff --git a/resources/qml/dialogs/IgnoredUsers.qml b/resources/qml/dialogs/IgnoredUsers.qml
new file mode 100644
index 00000000..2d8cc920
--- /dev/null
+++ b/resources/qml/dialogs/IgnoredUsers.qml
@@ -0,0 +1,83 @@
+// SPDX-FileCopyrightText: Nheko Contributors
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+import QtQml 2.15
+import QtQuick 2.15
+import QtQuick.Controls 2.15
+import QtQuick.Layouts 2.15
+import QtQuick.Window 2.15
+import im.nheko 1.0
+
+Window {
+    id: ignoredUsers
+
+    title: qsTr("Ignored users")
+    flags: Qt.WindowCloseButtonHint | Qt.WindowTitleHint
+    height: 650
+    width: 420
+    minimumHeight: 420
+    color: palette.window
+
+    ListView {
+        id: view
+        anchors.fill: parent
+        spacing: Nheko.paddingMedium
+        footerPositioning: ListView.OverlayFooter
+
+        model: TimelineManager.ignoredUsers
+        header: ColumnLayout {
+            Text {
+                Layout.fillWidth: true
+                Layout.maximumWidth: view.width
+                wrapMode: Text.Wrap
+                color: palette.text
+                text: qsTr("Ignoring a user hides their messages (they can still see yours!).")
+            }
+
+            Item { Layout.preferredHeight: Nheko.paddingLarge }
+        }
+        delegate: RowLayout {
+            property var profile: TimelineManager.getGlobalUserProfile(modelData)
+
+            width: view.width
+
+            Avatar {
+                enabled: false
+                displayName: profile.displayName
+                userid: profile.userid
+                url: profile.avatarUrl.replace("mxc://", "image://MxcImage/")
+            }
+
+            Text {
+                Layout.fillWidth: true
+                Layout.alignment: Qt.AlignLeft
+                elide: Text.ElideRight
+                color: palette.text
+                text: modelData
+            }
+
+            ImageButton {
+                Layout.preferredHeight: 24
+                Layout.preferredWidth: 24
+                image: ":/icons/icons/ui/dismiss.svg"
+                hoverEnabled: true
+                ToolTip.visible: hovered
+                ToolTip.text: qsTr("Stop Ignoring.")
+                onClicked: profile.ignored = false
+            }
+        }
+        footer: DialogButtonBox {
+            z: 2
+            width: view.width
+            alignment: Qt.AlignRight
+            standardButtons: DialogButtonBox.Ok
+            onAccepted: ignoredUsers.close()
+
+            background: Rectangle {
+                anchors.fill: parent
+                color: palette.window
+            }
+        }
+    }
+}
diff --git a/resources/qml/dialogs/UserProfile.qml b/resources/qml/dialogs/UserProfile.qml
index b54b52a4..6cf747e3 100644
--- a/resources/qml/dialogs/UserProfile.qml
+++ b/resources/qml/dialogs/UserProfile.qml
@@ -292,13 +292,24 @@ ApplicationWindow {
                 ImageButton {
                     Layout.preferredHeight: 24
                     Layout.preferredWidth: 24
+                    image: ":/icons/icons/ui/volume-off-indicator.svg"
+                    hoverEnabled: true
+                    ToolTip.visible: hovered
+                    ToolTip.text: profile.ignored ? qsTr("Unignore the user.") : qsTr("Ignore the user.")
+                    buttonTextColor: profile.ignored ? Nheko.theme.red : palette.buttonText
+                    onClicked: profile.ignored = !profile.ignored
+                    visible: !profile.isSelf
+                }
+
+                ImageButton {
+                    Layout.preferredHeight: 24
+                    Layout.preferredWidth: 24
                     image: ":/icons/icons/ui/refresh.svg"
                     hoverEnabled: true
                     ToolTip.visible: hovered
                     ToolTip.text: qsTr("Refresh device list.")
                     onClicked: profile.refreshDevices()
                 }
-
             }
 
             TabBar {
diff --git a/resources/qml/pages/UserSettingsPage.qml b/resources/qml/pages/UserSettingsPage.qml
index 7159a2f6..2dc4684d 100644
--- a/resources/qml/pages/UserSettingsPage.qml
+++ b/resources/qml/pages/UserSettingsPage.qml
@@ -234,6 +234,24 @@ Rectangle {
                         }
 
                         DelegateChoice {
+                            roleValue: UserSettingsModel.ManageIgnoredUsers
+                            Button {
+                                text: qsTr("MANAGE")
+                                onClicked: {
+                                    var dialog = ignoredUsersDialog.createObject();
+                                    dialog.show();
+                                    destroyOnClose(dialog);
+                                }
+
+                                Component {
+                                    id: ignoredUsersDialog
+
+                                    IgnoredUsers {}
+                                }
+                            }
+                        }
+
+                        DelegateChoice {
                             Text {
                                 text: model.value
                             }