diff options
author | DeepBlueV7.X <nicolas.werner@hotmail.de> | 2023-10-25 23:37:10 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-10-25 23:37:10 +0000 |
commit | a583de297cf228c05870388b50a340018e8918d3 (patch) | |
tree | 3fb108930f991360fabd9427370ecbdd2715fdbd /resources | |
parent | Add missing include (diff) | |
parent | Switch to X icon and add close button (diff) | |
download | nheko-a583de297cf228c05870388b50a340018e8918d3.tar.xz |
Merge pull request #1541 from NepNep21/ignore-users
Support (un)ignoring users (#546)
Diffstat (limited to 'resources')
-rw-r--r-- | resources/qml/dialogs/IgnoredUsers.qml | 83 | ||||
-rw-r--r-- | resources/qml/dialogs/UserProfile.qml | 13 | ||||
-rw-r--r-- | resources/qml/pages/UserSettingsPage.qml | 18 |
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 } |