summary refs log tree commit diff
path: root/resources/qml/dialogs/RoomSettingsDialog.qml
diff options
context:
space:
mode:
Diffstat (limited to 'resources/qml/dialogs/RoomSettingsDialog.qml')
-rw-r--r--resources/qml/dialogs/RoomSettingsDialog.qml113
1 files changed, 71 insertions, 42 deletions
diff --git a/resources/qml/dialogs/RoomSettingsDialog.qml b/resources/qml/dialogs/RoomSettingsDialog.qml
index 941d4f90..283ad129 100644
--- a/resources/qml/dialogs/RoomSettingsDialog.qml
+++ b/resources/qml/dialogs/RoomSettingsDialog.qml
@@ -4,11 +4,11 @@
 
 import ".."
 import "../ui"
-import Qt.labs.platform 1.1 as Platform
 import QtQuick 2.15
 import QtQuick.Controls 2.3
 import QtQuick.Layouts 1.2
 import QtQuick.Window 2.13
+import QtQuick.Dialogs
 import im.nheko 1.0
 
 ApplicationWindow {
@@ -130,7 +130,7 @@ ApplicationWindow {
                 color: palette.text
 
                 Layout.alignment: Qt.AlignHCenter
-                Layout.maximumWidth: parent.width - (Nheko.paddingSmall * 2) - nameChangeButton.anchors.leftMargin - (nameChangeButton.width * 2)
+                Layout.maximumWidth: parent.width - (Nheko.paddingSmall + roomNameButtons.anchors.leftMargin + roomNameButtons.implicitWidth) * 2
                 horizontalAlignment: TextEdit.AlignHCenter
                 wrapMode: TextEdit.Wrap
                 selectByMouse: true
@@ -144,27 +144,43 @@ ApplicationWindow {
                     }
                 }
 
-                ImageButton {
-                    id: nameChangeButton
-                    visible: roomSettings.canChangeName
+                RowLayout {
+                    id: roomNameButtons
+
                     anchors.leftMargin: Nheko.paddingSmall
                     anchors.left: roomName.right
                     anchors.verticalCenter: roomName.verticalCenter
-                    hoverEnabled: true
-                    ToolTip.visible: hovered
-                    ToolTip.text: qsTr("Change name of this room")
-                    ToolTip.delay: Nheko.tooltipDelay
-                    image: roomName.isNameEditingAllowed ? ":/icons/icons/ui/checkmark.svg" : ":/icons/icons/ui/edit.svg"
-                    onClicked: {
-                        if (roomName.isNameEditingAllowed) {
-                            roomSettings.changeName(roomName.text);
-                            roomName.isNameEditingAllowed = false;
-                        } else {
-                            roomName.isNameEditingAllowed = true;
-                            roomName.focus = true;
-                            roomName.selectAll();
+
+                    ImageButton {
+                        id: nameChangeButton
+                        visible: roomSettings.canChangeName
+                        hoverEnabled: true
+                        ToolTip.visible: hovered
+                        ToolTip.text: qsTr("Change name of this room")
+                        ToolTip.delay: Nheko.tooltipDelay
+                        image: roomName.isNameEditingAllowed ? ":/icons/icons/ui/checkmark.svg" : ":/icons/icons/ui/edit.svg"
+                        onClicked: {
+                            if (roomName.isNameEditingAllowed) {
+                                roomSettings.changeName(roomName.text);
+                                roomName.isNameEditingAllowed = false;
+                            } else {
+                                roomName.isNameEditingAllowed = true;
+                                roomName.focus = true;
+                                roomName.selectAll();
+                            }
                         }
                     }
+
+                    EncryptionIndicator {
+                        Layout.preferredHeight: 16
+                        Layout.preferredWidth: 16
+                        sourceSize.width: width
+                        sourceSize.height: height
+                        encrypted: true
+                        visible: roomSettings.isEncryptionEnabled && (roomSettings.isRoomNameSet || !roomName.readOnly)
+                        trust: Crypto.Unverified
+                        ToolTip.text: qsTr("Since room state can't be encrypted, make sure no confidential information is stored in the room name!")
+                    }
                 }
 
             }
@@ -220,26 +236,42 @@ ApplicationWindow {
 
             }
 
-            ImageButton {
-                id: topicChangeButton
+            RowLayout {
+                spacing: Nheko.paddingMedium
                 Layout.alignment: Qt.AlignHCenter
-                visible: roomSettings.canChangeTopic
-                hoverEnabled: true
-                ToolTip.visible: hovered
-                ToolTip.text: qsTr("Change topic of this room")
-                ToolTip.delay: Nheko.tooltipDelay
-                image: roomTopic.isTopicEditingAllowed ? ":/icons/icons/ui/checkmark.svg" : ":/icons/icons/ui/edit.svg"
-                onClicked: {
-                    if (roomTopic.isTopicEditingAllowed) {
-                        roomSettings.changeTopic(roomTopic.text);
-                        roomTopic.isTopicEditingAllowed = false;
-                    } else {
-                        roomTopic.isTopicEditingAllowed = true;
-                        roomTopic.showMore = true;
-                        roomTopic.focus = true;
-                        //roomTopic.selectAll();
+
+                ImageButton {
+                    id: topicChangeButton
+
+                    visible: roomSettings.canChangeTopic
+                    hoverEnabled: true
+                    ToolTip.visible: hovered
+                    ToolTip.text: qsTr("Change topic of this room")
+                    ToolTip.delay: Nheko.tooltipDelay
+                    image: roomTopic.isTopicEditingAllowed ? ":/icons/icons/ui/checkmark.svg" : ":/icons/icons/ui/edit.svg"
+                    onClicked: {
+                        if (roomTopic.isTopicEditingAllowed) {
+                            roomSettings.changeTopic(roomTopic.text);
+                            roomTopic.isTopicEditingAllowed = false;
+                        } else {
+                            roomTopic.isTopicEditingAllowed = true;
+                            roomTopic.showMore = true;
+                            roomTopic.focus = true;
+                            //roomTopic.selectAll();
+                        }
                     }
                 }
+
+                EncryptionIndicator {
+                    Layout.preferredHeight: 16
+                    Layout.preferredWidth: 16
+                    sourceSize.width: width
+                    sourceSize.height: height
+                    encrypted: true
+                    visible: roomSettings.isEncryptionEnabled && (roomSettings.plainRoomTopic != "" || !roomTopic.readOnly)
+                    trust: Crypto.Unverified
+                    ToolTip.text: qsTr("Since room state can't be encrypted, make sure no confidential information is stored in the room topic!")
+                }
             }
 
             Item {
@@ -548,26 +580,23 @@ ApplicationWindow {
                     Layout.alignment: Qt.AlignRight
                 }
 
-                Platform.MessageDialog {
+                MessageDialog {
                     id: confirmEncryptionDialog
 
                     title: qsTr("End-to-End Encryption")
                     text: qsTr(`Encryption is currently experimental and things might break unexpectedly. <br>
                                 Please take note that it can't be disabled afterwards.`)
                     modality: Qt.NonModal
-                    // Broken on macos, see https://bugreports.qt.io/browse/QTBUG-102078
-                    //onAccepted: {
-                    onOkClicked: {
+                    onAccepted: {
                         if (roomSettings.isEncryptionEnabled)
                             return ;
 
                         roomSettings.enableEncryption();
                     }
-                    //onRejected: {
-                    onCancelClicked: {
+                    onRejected: {
                         encryptionToggle.checked = false;
                     }
-                    buttons: Platform.MessageDialog.Ok | Platform.MessageDialog.Cancel
+                    buttons: MessageDialog.Ok | MessageDialog.Cancel
                 }
 
                 Label {