Compare commits
1 Commits
master
...
work/redst
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d362937474 |
@@ -40,12 +40,6 @@ KirigamiComponents.ConvergentContextMenu {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
Kirigami.Action {
|
|
||||||
text: i18nc("@action:inmenu", "Edit This Account")
|
|
||||||
icon.name: "document-edit"
|
|
||||||
onTriggered: NeoChatSettingsView.openWithInitialProperties("accounts", {initialAccount: root.connection});
|
|
||||||
}
|
|
||||||
|
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
text: i18nc("@action:inmenu", "Notification Settings")
|
text: i18nc("@action:inmenu", "Notification Settings")
|
||||||
icon.name: "notifications"
|
icon.name: "notifications"
|
||||||
|
|||||||
@@ -149,15 +149,24 @@ Kirigami.Dialog {
|
|||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
text: i18nc("@action:intoolbar Message this user directly", "Message")
|
text: i18nc("@action:intoolbar Message this user directly", "Message")
|
||||||
icon.name: "document-send-symbolic"
|
icon.name: "document-send-symbolic"
|
||||||
|
visible: !root.isSelf
|
||||||
|
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
root.close();
|
root.close();
|
||||||
root.connection.requestDirectChat(root.user.id);
|
root.connection.requestDirectChat(root.user.id);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
Kirigami.Action {
|
||||||
|
text: i18nc("@action:intoolbar Edit This Account", "Edit")
|
||||||
|
icon.name: "document-edit"
|
||||||
|
visible: root.isSelf
|
||||||
|
|
||||||
|
onTriggered: NeoChatSettingsView.openWithInitialProperties("accounts", {initialAccount: root.connection});
|
||||||
|
},
|
||||||
Kirigami.Action {
|
Kirigami.Action {
|
||||||
icon.name: "im-invisible-user-symbolic"
|
icon.name: "im-invisible-user-symbolic"
|
||||||
text: root.connection.isIgnored(root.user.id) ? i18nc("@action:intoolbar Unignore or 'unblock' this user", "Unignore") : i18nc("@action:intoolbar Ignore or 'block' this user", "Ignore")
|
text: root.connection.isIgnored(root.user.id) ? i18nc("@action:intoolbar Unignore or 'unblock' this user", "Unignore") : i18nc("@action:intoolbar Ignore or 'block' this user", "Ignore")
|
||||||
|
visible: !root.isSelf
|
||||||
|
|
||||||
onTriggered: {
|
onTriggered: {
|
||||||
root.close();
|
root.close();
|
||||||
|
|||||||
@@ -19,6 +19,91 @@ FormCard.FormCardPage {
|
|||||||
|
|
||||||
title: i18nc("@title:window", "Edit Account")
|
title: i18nc("@title:window", "Edit Account")
|
||||||
property NeoChatConnection connection
|
property NeoChatConnection connection
|
||||||
|
readonly property bool hasUnsavedChanges: root.connection.localUser.displayName !== name.text
|
||||||
|
|| avatar.source != avatar.findOriginalAvatarUrl()
|
||||||
|
|| root.connection.label !== accountLabel.text;
|
||||||
|
|
||||||
|
function resetChanges(): void {
|
||||||
|
name.text = root.connection ? root.connection.localUser.displayName : "";
|
||||||
|
accountLabel.text = root.connection ? root.connection.label : "";
|
||||||
|
avatar.source = avatar.findOriginalAvatarUrl();
|
||||||
|
}
|
||||||
|
|
||||||
|
function saveChanges(): void {
|
||||||
|
if (avatar.source != avatar.findOriginalAvatarUrl() && !root.connection.setAvatar(avatar.source)) {
|
||||||
|
(root.Window.window as Kirigami.ApplicationWindow).showPassiveNotification(i18nc("@info", "New avatar could not be set."));
|
||||||
|
}
|
||||||
|
if (root.connection.localUser.displayName !== name.text) {
|
||||||
|
root.connection.localUser.rename(name.text);
|
||||||
|
}
|
||||||
|
if (root.connection.label !== accountLabel.text) {
|
||||||
|
root.connection.label = accountLabel.text;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function checkForUnsavedChanges(): bool {
|
||||||
|
if (root.hasUnsavedChanges) {
|
||||||
|
resetChangesDialog.open();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
onBackRequested: event => {
|
||||||
|
if (checkForUnsavedChanges(event)) {
|
||||||
|
event.accepted = true; // Prevent the page from popping
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Connections {
|
||||||
|
target: root.Window.window
|
||||||
|
|
||||||
|
function onClosing(event): void {
|
||||||
|
if (root.checkForUnsavedChanges(event)) {
|
||||||
|
event.accepted = false; // Prevent the window from closing
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Kirigami.PromptDialog {
|
||||||
|
id: resetChangesDialog
|
||||||
|
|
||||||
|
parent: root.QQC2.Overlay.overlay
|
||||||
|
preferredWidth: Kirigami.Units.gridUnit * 24
|
||||||
|
|
||||||
|
title: i18nc("@title:dialog Apply unsaved settings", "Apply Settings")
|
||||||
|
subtitle: i18nc("@info", "There are unsaved changes to user information. Apply the changes or discard them?")
|
||||||
|
|
||||||
|
standardButtons: QQC2.Dialog.Cancel
|
||||||
|
|
||||||
|
footer: QQC2.DialogButtonBox {
|
||||||
|
QQC2.Button {
|
||||||
|
text: i18nc("@action:button As in 'Remove this device'", "Apply")
|
||||||
|
icon.name: "dialog-ok-apply"
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
root.saveChanges();
|
||||||
|
resetChangesDialog.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
QQC2.DialogButtonBox.buttonRole: QQC2.DialogButtonBox.ApplyRole
|
||||||
|
}
|
||||||
|
|
||||||
|
QQC2.Button {
|
||||||
|
text: i18nc("@action:button As in 'Remove this device'", "Reset")
|
||||||
|
icon.name: "edit-reset-symbolic"
|
||||||
|
|
||||||
|
onClicked: {
|
||||||
|
root.resetChanges();
|
||||||
|
resetChangesDialog.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
QQC2.DialogButtonBox.buttonRole: QQC2.DialogButtonBox.ResetRole
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: resetChanges()
|
||||||
|
|
||||||
KirigamiComponents.AvatarButton {
|
KirigamiComponents.AvatarButton {
|
||||||
id: avatar
|
id: avatar
|
||||||
@@ -34,8 +119,6 @@ FormCard.FormCardPage {
|
|||||||
|
|
||||||
padding: 0
|
padding: 0
|
||||||
|
|
||||||
// Note: User::avatarUrl does not set user_id, and thus cannot be used directly here. Hence the makeMediaUrl.
|
|
||||||
source: findOriginalAvatarUrl()
|
|
||||||
name: root.connection.localUser.displayName
|
name: root.connection.localUser.displayName
|
||||||
|
|
||||||
function findOriginalAvatarUrl(): string {
|
function findOriginalAvatarUrl(): string {
|
||||||
@@ -109,14 +192,12 @@ FormCard.FormCardPage {
|
|||||||
FormCard.FormTextFieldDelegate {
|
FormCard.FormTextFieldDelegate {
|
||||||
id: name
|
id: name
|
||||||
label: i18n("Display Name:")
|
label: i18n("Display Name:")
|
||||||
text: root.connection ? root.connection.localUser.displayName : ""
|
|
||||||
}
|
}
|
||||||
FormCard.FormDelegateSeparator {}
|
FormCard.FormDelegateSeparator {}
|
||||||
FormCard.FormTextFieldDelegate {
|
FormCard.FormTextFieldDelegate {
|
||||||
id: accountLabel
|
id: accountLabel
|
||||||
label: i18n("Label:")
|
label: i18n("Label:")
|
||||||
placeholderText: i18n("Work")
|
placeholderText: i18n("Work")
|
||||||
text: root.connection ? root.connection.label : ""
|
|
||||||
}
|
}
|
||||||
FormCard.FormDelegateSeparator {}
|
FormCard.FormDelegateSeparator {}
|
||||||
FormCard.FormTextDelegate {
|
FormCard.FormTextDelegate {
|
||||||
@@ -140,34 +221,17 @@ FormCard.FormCardPage {
|
|||||||
}
|
}
|
||||||
FormCard.FormDelegateSeparator {}
|
FormCard.FormDelegateSeparator {}
|
||||||
FormCard.FormButtonDelegate {
|
FormCard.FormButtonDelegate {
|
||||||
text: i18nc("@action:button", "Show QR Code")
|
text: i18nc("@action:button", "Reset Changes")
|
||||||
icon.name: "view-barcode-qr-symbolic"
|
icon.name: "edit-reset-symbolic"
|
||||||
onClicked: {
|
enabled: root.hasUnsavedChanges
|
||||||
let qrMax = Qt.createComponent('org.kde.neochat', 'QrCodeMaximizeComponent').createObject(QQC2.Overlay.overlay, {
|
onClicked: root.resetChanges()
|
||||||
text: "https://matrix.to/#/" + root.connection.localUser.id,
|
|
||||||
title: root.connection.localUser.displayName,
|
|
||||||
subtitle: root.connection.localUser.id,
|
|
||||||
// Note: User::avatarUrl does not set user_id, and thus cannot be used directly here. Hence the makeMediaUrl.
|
|
||||||
avatarSource: root.connection && (root.connection.localUser.avatarUrl.toString().length > 0 ? root.connection.makeMediaUrl(root.connection.localUser.avatarUrl) : "")
|
|
||||||
});
|
|
||||||
qrMax.open();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
FormCard.FormDelegateSeparator {}
|
FormCard.FormDelegateSeparator {}
|
||||||
FormCard.FormButtonDelegate {
|
FormCard.FormButtonDelegate {
|
||||||
text: i18n("Save")
|
text: i18nc("@action:button Save changes to user", "Save")
|
||||||
icon.name: "document-save-symbolic"
|
icon.name: "document-save-symbolic"
|
||||||
onClicked: {
|
enabled: root.hasUnsavedChanges
|
||||||
if (avatar.source != avatar.findOriginalAvatarUrl() && !root.connection.setAvatar(avatar.source)) {
|
onClicked: root.saveChanges()
|
||||||
(root.Window.window as Kirigami.ApplicationWindow).showPassiveNotification("The Avatar could not be set");
|
|
||||||
}
|
|
||||||
if (root.connection.localUser.displayName !== name.text) {
|
|
||||||
root.connection.localUser.rename(name.text);
|
|
||||||
}
|
|
||||||
if (root.connection.label !== accountLabel.text) {
|
|
||||||
root.connection.label = accountLabel.text;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user