Move dialog to settings page and add avatar image to delegate

This commit is contained in:
NepNep21 2023-10-24 19:46:04 -03:00
parent a0a49b6c2a
commit 0b28e7934d
No known key found for this signature in database
GPG key ID: 818E86B41BD5C364
5 changed files with 38 additions and 31 deletions

View file

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

View file

@ -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 {

View file

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

View file

@ -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()) {

View file

@ -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);