From 0b28e7934d4647288d4704d6fa44259d47b79782 Mon Sep 17 00:00:00 2001 From: NepNep21 <43792621+NepNep21@users.noreply.github.com> Date: Tue, 24 Oct 2023 19:46:04 -0300 Subject: [PATCH] Move dialog to settings page and add avatar image to delegate --- resources/qml/dialogs/IgnoredUsers.qml | 23 ++++++++++++----------- resources/qml/dialogs/UserProfile.qml | 20 -------------------- resources/qml/pages/UserSettingsPage.qml | 18 ++++++++++++++++++ src/UserSettingsPage.cpp | 6 ++++++ src/UserSettingsPage.h | 2 ++ 5 files changed, 38 insertions(+), 31 deletions(-) diff --git a/resources/qml/dialogs/IgnoredUsers.qml b/resources/qml/dialogs/IgnoredUsers.qml index ff1e528e..6527eb18 100644 --- a/resources/qml/dialogs/IgnoredUsers.qml +++ b/resources/qml/dialogs/IgnoredUsers.qml @@ -11,7 +11,6 @@ import im.nheko 1.0 Window { id: ignoredUsers - required property var profile title: qsTr("Ignored users") flags: Qt.WindowCloseButtonHint | Qt.WindowTitleHint @@ -20,14 +19,6 @@ Window { 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 @@ -46,7 +37,17 @@ Window { 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 @@ -62,8 +63,8 @@ Window { hoverEnabled: true ToolTip.visible: hovered ToolTip.text: qsTr("Stop Ignoring.") - onClicked: profile.ignoredStatus(modelData, false) + onClicked: profile.ignored = false } } } -} \ No newline at end of file +} diff --git a/resources/qml/dialogs/UserProfile.qml b/resources/qml/dialogs/UserProfile.qml index 989c2bab..6cf747e3 100644 --- a/resources/qml/dialogs/UserProfile.qml +++ b/resources/qml/dialogs/UserProfile.qml @@ -310,26 +310,6 @@ ApplicationWindow { ToolTip.text: qsTr("Refresh device list.") 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 { 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 @@ -233,6 +233,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 diff --git a/src/UserSettingsPage.cpp b/src/UserSettingsPage.cpp index 4a25880c..49b267f7 100644 --- a/src/UserSettingsPage.cpp +++ b/src/UserSettingsPage.cpp @@ -1043,6 +1043,8 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return tr("Read receipts"); case HiddenTimelineEvents: return tr("Hidden events"); + case IgnoredUsers: + return tr("Ignored users"); case DesktopNotifications: return tr("Desktop notifications"); case AlertOnNotification: @@ -1486,6 +1488,8 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return tr("Regularly redact expired events as specified in the event expiration " "configuration. Since this is currently not executed server side, you need " "to have one client running this regularly."); + case IgnoredUsers: + return tr("Manage your ignored users."); } } else if (role == Type) { switch (index.row()) { @@ -1572,6 +1576,8 @@ UserSettingsModel::data(const QModelIndex &index, int role) const return KeyStatus; case HiddenTimelineEvents: return ConfigureHiddenEvents; + case IgnoredUsers: + return ManageIgnoredUsers; } } else if (role == ValueLowerBound) { switch (index.row()) { diff --git a/src/UserSettingsPage.h b/src/UserSettingsPage.h index 2bae068a..2cf8e5ab 100644 --- a/src/UserSettingsPage.h +++ b/src/UserSettingsPage.h @@ -508,6 +508,7 @@ class UserSettingsModel : public QAbstractListModel MessageVisibilitySection, ExpireEvents, HiddenTimelineEvents, + IgnoredUsers, NotificationsSection, DesktopNotifications, @@ -566,6 +567,7 @@ public: SessionKeyImportExport, XSignKeysRequestDownload, ConfigureHiddenEvents, + ManageIgnoredUsers, }; Q_ENUM(Types);