Merge branch 'ignore-users' of github.com:NepNep21/nheko into ignore-users
2 files changed, 101 insertions, 0 deletions
diff --git a/resources/qml/dialogs/IgnoredUsers.qml b/resources/qml/dialogs/IgnoredUsers.qml
new file mode 100644
index 00000000..ff1e528e
--- /dev/null
+++ b/resources/qml/dialogs/IgnoredUsers.qml
@@ -0,0 +1,69 @@
+// 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
+ required property var profile
+
+ title: qsTr("Ignored users")
+ flags: Qt.WindowCloseButtonHint | Qt.WindowTitleHint
+ height: 650
+ width: 420
+ minimumHeight: 420
+ color: palette.window
+
+ Connections {
+ target: profile
+ function onUnignoredUserError(id, err) {
+ const text = qsTr("Failed to unignore \"%1\": %2").arg(id).arg(err)
+ MainWindow.showNotification(text)
+ }
+ }
+
+ ListView {
+ id: view
+ anchors.fill: parent
+ spacing: Nheko.paddingMedium
+
+ 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 {
+ width: view.width
+ 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/delete.svg"
+ hoverEnabled: true
+ ToolTip.visible: hovered
+ ToolTip.text: qsTr("Stop Ignoring.")
+ onClicked: profile.ignoredStatus(modelData, false)
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/resources/qml/dialogs/UserProfile.qml b/resources/qml/dialogs/UserProfile.qml
index b54b52a4..3d65d52a 100644
--- a/resources/qml/dialogs/UserProfile.qml
+++ b/resources/qml/dialogs/UserProfile.qml
@@ -292,6 +292,19 @@ ApplicationWindow {
ImageButton {
Layout.preferredHeight: 24
Layout.preferredWidth: 24
+ image: ":/icons/icons/ui/volume-off-indicator.svg"
+ hoverEnabled: true
+ ToolTip.visible: hovered
+ ToolTip.text: qsTr("Ignore the user.")
+ onClicked: {
+ profile.ignoredStatus(profile.userid, true)
+ }
+ visible: !profile.isSelf && !profile.isGlobalUserProfile
+ }
+
+ ImageButton {
+ Layout.preferredHeight: 24
+ Layout.preferredWidth: 24
image: ":/icons/icons/ui/refresh.svg"
hoverEnabled: true
ToolTip.visible: hovered
@@ -299,6 +312,25 @@ ApplicationWindow {
onClicked: profile.refreshDevices()
}
+ ImageButton {
+ Layout.preferredHeight: 24
+ Layout.preferredWidth: 24
+ image: ":/icons/icons/ui/volume-off-indicator.svg"
+ hoverEnabled: true
+ ToolTip.visible: hovered
+ ToolTip.text: qsTr("Ignored users.")
+ onClicked: {
+ var component = Qt.createComponent("IgnoredUsers.qml")
+ if (component.status == Component.Ready) {
+ var window = component.createObject(userProfileDialog, { profile: profile})
+ window.show()
+ timelineRoot.destroyOnClose(window)
+ } else {
+ console.error("Failed to create component: " + component.errorString());
+ }
+ }
+ visible: profile.isSelf && profile.isGlobalUserProfile
+ }
}
TabBar {
|