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
}
|