summary refs log tree commit diff
path: root/resources/qml/RoomSettings.qml
diff options
context:
space:
mode:
Diffstat (limited to 'resources/qml/RoomSettings.qml')
-rw-r--r--resources/qml/RoomSettings.qml268
1 files changed, 268 insertions, 0 deletions
diff --git a/resources/qml/RoomSettings.qml b/resources/qml/RoomSettings.qml
new file mode 100644

index 00000000..b3602a6a --- /dev/null +++ b/resources/qml/RoomSettings.qml
@@ -0,0 +1,268 @@ +import QtQuick 2.9 +import QtQuick.Controls 2.3 +import QtQuick.Layouts 1.2 +import QtQuick.Window 2.3 +import QtQuick.Dialogs 1.2 +import im.nheko 1.0 + +ApplicationWindow { + id: roomSettingsDialog + + property var roomSettings + + x: MainWindow.x + (MainWindow.width / 2) - (width / 2) + y: MainWindow.y + (MainWindow.height / 2) - (height / 2) + minimumWidth: 400 + minimumHeight: 650 + palette: colors + color: colors.window + modality: Qt.WindowModal + + Shortcut { + sequence: StandardKey.Cancel + onActivated: roomSettingsDialog.close() + } + + ColumnLayout { + id: contentLayout1 + + anchors.fill: parent + anchors.margins: 10 + spacing: 10 + + Avatar { + url: roomSettings.roomAvatarUrl.replace("mxc://", "image://MxcImage/") + height: 130 + width: 130 + Layout.alignment: Qt.AlignHCenter + onClicked: { + if(roomSettings.canChangeAvatar) { + roomSettings.updateAvatar(); + } + } + } + + BusyIndicator { + Layout.alignment: Qt.AlignHCenter + running: roomSettings.isLoading + visible: roomSettings.isLoading + } + + Text { + id: errorText + text: "Error Text" + color: "red" + visible: opacity > 0 + opacity: 0 + Layout.alignment: Qt.AlignHCenter + } + + SequentialAnimation { + id: hideErrorAnimation + running: false + PauseAnimation { + duration: 4000 + } + NumberAnimation { + target: errorText + property: 'opacity' + to: 0 + duration: 1000 + } + } + + Connections{ + target: roomSettings + onDisplayError: { + errorText.text = errorMessage + errorText.opacity = 1 + hideErrorAnimation.restart() + } + } + + ColumnLayout { + Layout.alignment: Qt.AlignHCenter + + MatrixText { + text: roomSettings.roomName + font.pixelSize: 24 + Layout.alignment: Qt.AlignHCenter + } + + MatrixText { + text: "%1 member(s)".arg(roomSettings.memberCount) + Layout.alignment: Qt.AlignHCenter + } + } + + ImageButton { + Layout.alignment: Qt.AlignHCenter + image: ":/icons/icons/ui/edit.png" + visible: roomSettings.canChangeNameAndTopic + onClicked: roomSettings.openEditModal() + } + + ScrollView { + Layout.maximumHeight: 75 + ScrollBar.horizontal.policy: ScrollBar.AlwaysOff + Layout.alignment: Qt.AlignHCenter + Layout.fillWidth: true + + TextArea { + text: roomSettings.roomTopic + wrapMode: TextEdit.WordWrap + readOnly: true + background: null + } + } + + MatrixText { + text: "SETTINGS" + } + + RowLayout { + MatrixText { + text: "Notifications" + } + + Item { + Layout.fillWidth: true + } + + ComboBox { + model: [ "Muted", "Mentions only", "All messages" ] + currentIndex: roomSettings.notifications + onActivated: { + roomSettings.changeNotifications(index) + } + } + } + + RowLayout { + MatrixText { + text: "Room access" + } + + ComboBox { + Layout.fillWidth: true + enabled: roomSettings.canChangeJoinRules + model: [ "Anyone and guests", "Anyone", "Invited users" ] + currentIndex: roomSettings.accessJoinRules + onActivated: { + roomSettings.changeAccessRules(index) + } + } + } + + RowLayout { + MatrixText { + text: "Encryption" + } + + Item { + Layout.fillWidth: true + } + + ToggleButton { + id: encryptionToggle + + checked: roomSettings.isEncryptionEnabled + onClicked: { + if(roomSettings.isEncryptionEnabled) { + checked=true; + return; + } + + confirmEncryptionDialog.open(); + } + } + + 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.WindowModal + icon: StandardIcon.Question + + onAccepted: { + if(roomSettings.isEncryptionEnabled) { + return; + } + + roomSettings.enableEncryption(); + } + + onRejected: { + encryptionToggle.checked = false + } + + standardButtons: Dialog.Ok | Dialog.Cancel + } + } + + RowLayout { + visible: roomSettings.isEncryptionEnabled + + MatrixText { + text: "Respond to key requests" + } + + Item { + Layout.fillWidth: true + } + + ToggleButton { + ToolTip.text: qsTr("Whether or not the client should respond automatically with the session keys + upon request. Use with caution, this is a temporary measure to test the + E2E implementation until device verification is completed.") + + checked: roomSettings.respondsToKeyRequests + + onClicked: { + roomSettings.changeKeyRequestsPreference(checked) + } + } + } + + MatrixText { + text: "INFO" + } + + RowLayout { + MatrixText { + text: "Internal ID" + } + + Item { + Layout.fillWidth: true + } + + MatrixText { + text: roomSettings.roomId + font.pixelSize: 12 + } + } + + RowLayout { + MatrixText { + text: "Room Version" + } + + Item { + Layout.fillWidth: true + } + + MatrixText { + text: roomSettings.roomVersion + font.pixelSize: 12 + } + } + + Button { + Layout.alignment: Qt.AlignRight + text: "Ok" + onClicked: close() + } + } +} \ No newline at end of file