diff options
Diffstat (limited to 'resources/qml/dialogs/CreateRoom.qml')
-rw-r--r-- | resources/qml/dialogs/CreateRoom.qml | 157 |
1 files changed, 157 insertions, 0 deletions
diff --git a/resources/qml/dialogs/CreateRoom.qml b/resources/qml/dialogs/CreateRoom.qml new file mode 100644 index 00000000..5d224885 --- /dev/null +++ b/resources/qml/dialogs/CreateRoom.qml @@ -0,0 +1,157 @@ +// SPDX-FileCopyrightText: 2021 Nheko Contributors +// SPDX-FileCopyrightText: 2022 Nheko Contributors +// +// SPDX-License-Identifier: GPL-3.0-or-later + +import ".." +import QtQuick 2.15 +import QtQuick.Window 2.13 +import QtQuick.Layouts 1.3 +import QtQuick.Controls 2.3 +import im.nheko 1.0 + +ApplicationWindow { + id: createRoomRoot + title: qsTr("Create Room") + minimumWidth: Math.max(rootLayout.implicitWidth+2*rootLayout.anchors.margins, footer.implicitWidth + Nheko.paddingLarge) + minimumHeight: rootLayout.implicitHeight+footer.implicitHeight+2*rootLayout.anchors.margins + modality: Qt.NonModal + flags: Qt.Dialog | Qt.WindowCloseButtonHint | Qt.WindowTitleHint + + onVisibilityChanged: { + newRoomName.forceActiveFocus(); + } + + Shortcut { + sequence: StandardKey.Cancel + onActivated: createRoomRoot.close() + } + GridLayout { + id: rootLayout + anchors.fill: parent + anchors.margins: Nheko.paddingLarge + columns: 2 + rowSpacing: Nheko.paddingMedium + + MatrixTextField { + id: newRoomName + Layout.columnSpan: 2 + Layout.fillWidth: true + + focus: true + label: qsTr("Name") + placeholderText: qsTr("No name") + } + MatrixTextField { + id: newRoomTopic + Layout.columnSpan: 2 + Layout.fillWidth: true + + focus: true + label: qsTr("Topic") + placeholderText: qsTr("No topic") + } + + Item { + Layout.preferredHeight: newRoomName.height / 2 + } + + RowLayout { + Layout.columnSpan: 2 + Layout.fillWidth: true + Label { + Layout.preferredWidth: implicitWidth + text: qsTr("#") + color: Nheko.colors.text + } + MatrixTextField { + id: newRoomAlias + focus: true + placeholderText: qsTr("Alias") + } + Label { + Layout.preferredWidth: implicitWidth + property string userName: userInfoGrid.profile.userid + text: userName.substring(userName.indexOf(":")) + color: Nheko.colors.text + } + } + Label { + Layout.preferredWidth: implicitWidth + Layout.alignment: Qt.AlignLeft + text: qsTr("Public") + color: Nheko.colors.text + HoverHandler { + id: privateHover + } + ToolTip.visible: privateHover.hovered + ToolTip.text: qsTr("Public rooms can be joined by anyone, private rooms need explicit invites.") + ToolTip.delay: Nheko.tooltipDelay + } + ToggleButton { + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: implicitWidth + id: isPublic + checked: false + } + Label { + Layout.preferredWidth: implicitWidth + Layout.alignment: Qt.AlignLeft + text: qsTr("Trusted") + color: Nheko.colors.text + HoverHandler { + id: trustedHover + } + ToolTip.visible: trustedHover.hovered + ToolTip.text: qsTr("All invitees are given the same power level as the creator") + ToolTip.delay: Nheko.tooltipDelay + } + ToggleButton { + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: implicitWidth + id: isTrusted + checked: false + enabled: !isPublic.checked + } + Label { + Layout.preferredWidth: implicitWidth + Layout.alignment: Qt.AlignLeft + text: qsTr("Encryption") + color: Nheko.colors.text + HoverHandler { + id: encryptionHover + } + ToolTip.visible: encryptionHover.hovered + ToolTip.text: qsTr("Caution: Encryption cannot be disabled") + ToolTip.delay: Nheko.tooltipDelay + } + ToggleButton { + Layout.alignment: Qt.AlignRight + Layout.preferredWidth: implicitWidth + id: isEncrypted + checked: false + } + + Item {Layout.fillHeight: true} + } + footer: DialogButtonBox { + standardButtons: DialogButtonBox.Cancel + Button { + text: qsTr("Create Room") + DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole + } + onRejected: createRoomRoot.close(); + onAccepted: { + var preset = 0; + + if (isPublic.checked) { + preset = 1; + } + else { + preset = isTrusted.checked ? 2 : 0; + } + Nheko.createRoom(newRoomName.text, newRoomTopic.text, newRoomAlias.text, isEncrypted.checked, preset) + createRoomRoot.close(); + } + } +} |