QML the join room dialog
3 files changed, 88 insertions, 11 deletions
diff --git a/resources/qml/Root.qml b/resources/qml/Root.qml
index 29da45eb..2c4dac0d 100644
--- a/resources/qml/Root.qml
+++ b/resources/qml/Root.qml
@@ -118,6 +118,13 @@ Page {
}
}
+ Component {
+ id: joinRoomDialog
+
+ JoinRoomDialog {
+ }
+ }
+
Shortcut {
sequence: "Ctrl+K"
onActivated: {
@@ -148,6 +155,11 @@ Page {
dialog.open();
}
+ function onOpenJoinRoomDialog() {
+ var dialog = joinRoomDialog.createObject(timelineRoot);
+ dialog.show();
+ }
+
target: Nheko
}
diff --git a/resources/qml/dialogs/JoinRoomDialog.qml b/resources/qml/dialogs/JoinRoomDialog.qml
new file mode 100644
index 00000000..25400e40
--- /dev/null
+++ b/resources/qml/dialogs/JoinRoomDialog.qml
@@ -0,0 +1,64 @@
+// SPDX-FileCopyrightText: 2021 Nheko Contributors
+//
+// SPDX-License-Identifier: GPL-3.0-or-later
+
+import ".."
+import QtQuick 2.12
+import QtQuick.Controls 2.5
+import QtQuick.Layouts 1.3
+import im.nheko 1.0
+
+ApplicationWindow {
+ id: joinRoomRoot
+
+ title: qsTr("Join room")
+ modality: Qt.WindowModal
+ flags: Qt.Dialog | Qt.WindowCloseButtonHint | Qt.WindowTitleHint
+ palette: Nheko.colors
+ color: Nheko.colors.window
+ Component.onCompleted: Nheko.reparent(joinRoomRoot)
+ width: 350
+ height: fontMetrics.lineSpacing * 7
+
+ ColumnLayout {
+ spacing: Nheko.paddingMedium
+ anchors.margins: Nheko.paddingMedium
+ anchors.fill: parent
+
+ Label {
+ id: promptLabel
+
+ text: qsTr("Room ID or alias")
+ color: Nheko.colors.text
+ }
+
+ MatrixTextField {
+ id: input
+
+ Layout.fillWidth: true
+ }
+
+ }
+
+ footer: DialogButtonBox {
+ onAccepted: {
+ Nheko.joinRoom(input.text);
+ joinRoomRoot.close();
+ }
+ onRejected: {
+ joinRoomRoot.close();
+ }
+
+ Button {
+ text: "Join"
+ enabled: input.text.match("#.+?:.{3,}")
+ DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole
+ }
+
+ Button {
+ text: "Cancel"
+ DialogButtonBox.buttonRole: DialogButtonBox.RejectRole
+ }
+ }
+
+}
diff --git a/resources/res.qrc b/resources/res.qrc
index c18a6109..e017b789 100644
--- a/resources/res.qrc
+++ b/resources/res.qrc
@@ -158,10 +158,19 @@
<file>qml/device-verification/EmojiVerification.qml</file>
<file>qml/device-verification/NewVerificationRequest.qml</file>
<file>qml/device-verification/Failed.qml</file>
- <file>qml/device-verification/Success.qml</file>
- <file>qml/dialogs/InputDialog.qml</file>
+ <file>qml/device-verification/Success.qml</file>
<file>qml/dialogs/ImagePackSettingsDialog.qml</file>
<file>qml/dialogs/ImagePackEditorDialog.qml</file>
+ <file>qml/dialogs/InputDialog.qml</file>
+ <file>qml/dialogs/InviteDialog.qml</file>
+ <file>qml/dialogs/JoinRoomDialog.qml</file>
+ <file>qml/dialogs/LogoutDialog.qml</file>
+ <file>qml/dialogs/RawMessageDialog.qml</file>
+ <file>qml/dialogs/ReadReceipts.qml</file>
+ <file>qml/dialogs/RoomDirectory.qml</file>
+ <file>qml/dialogs/RoomMembers.qml</file>
+ <file>qml/dialogs/RoomSettings.qml</file>
+ <file>qml/dialogs/UserProfile.qml</file>
<file>qml/ui/Ripple.qml</file>
<file>qml/ui/Spinner.qml</file>
<file>qml/ui/animations/BlinkAnimation.qml</file>
@@ -176,15 +185,7 @@
<file>qml/components/AdaptiveLayout.qml</file>
<file>qml/components/AdaptiveLayoutElement.qml</file>
<file>qml/components/AvatarListTile.qml</file>
- <file>qml/components/FlatButton.qml</file>
- <file>qml/dialogs/InviteDialog.qml</file>
- <file>qml/dialogs/RawMessageDialog.qml</file>
- <file>qml/dialogs/ReadReceipts.qml</file>
- <file>qml/dialogs/RoomDirectory.qml</file>
- <file>qml/dialogs/RoomMembers.qml</file>
- <file>qml/dialogs/RoomSettings.qml</file>
- <file>qml/dialogs/UserProfile.qml</file>
- <file>qml/dialogs/LogoutDialog.qml</file>
+ <file>qml/components/FlatButton.qml</file>
</qresource>
<qresource prefix="/media">
<file>media/ring.ogg</file>
|