diff --git a/resources/qml/RoomList.qml b/resources/qml/RoomList.qml index eb518f40..078baede 100644 --- a/resources/qml/RoomList.qml +++ b/resources/qml/RoomList.qml @@ -33,6 +33,13 @@ Page { } } + Component { + id: createDirectComponent + + CreateDirect { + } + } + ListView { id: roomlist @@ -662,6 +669,15 @@ Page { } } + Platform.MenuItem { + text: qsTr("Start a direct chat") + onTriggered: { + var createDirect = createDirectComponent.createObject(timelineRoot); + createDirect.show(); + timelineRoot.destroyOnClose(createDirect); + } + } + } } diff --git a/resources/qml/dialogs/CreateDirect.qml b/resources/qml/dialogs/CreateDirect.qml new file mode 100644 index 00000000..bbb758e3 --- /dev/null +++ b/resources/qml/dialogs/CreateDirect.qml @@ -0,0 +1,92 @@ +// 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: createDirectRoot + title: qsTr("Create Direct Chat") + property var profile: null + minimumHeight: layout.implicitHeight+2*layout.anchors.margins+footer.height + minimumWidth: footer.width + ColumnLayout { + id: layout + anchors.fill: parent + anchors.margins: Nheko.paddingSmall + MatrixTextField { + id: userID + Layout.fillWidth: true + focus: true + placeholderText: qsTr("Name") + /*onTextChanged: { + if(isValidMxid(text)) + profile = getProfile(text); + else + profile = null; + }*/ + } + + GridLayout { + Layout.fillWidth: true + rows: 2 + columns: 2 + rowSpacing: Nheko.paddingSmall + columnSpacing: Nheko.paddingMedium + anchors.centerIn: parent + + Avatar { + Layout.rowSpan: 2 + Layout.preferredWidth: Nheko.avatarSize + Layout.preferredHeight: Nheko.avatarSize + Layout.alignment: Qt.AlignLeft + userid: profile.mxid + url: profile.avatarUrl.replace("mxc://", "image://MxcImage/") + displayName: profile.displayName + enabled: false + } + Label { + Layout.fillWidth: true + text: "John Smith" //profile.displayName + color: TimelineManager.userColor(userID.text, Nheko.colors.window) + font.pointSize: fontMetrics.font.pointSize + } + + Label { + Layout.fillWidth: true + text: userID.text + color: Nheko.colors.buttonText + font.pointSize: fontMetrics.font.pointSize * 0.9 + } + } + RowLayout { + Layout.fillWidth: true + Label { + Layout.fillWidth: true + Layout.alignment: Qt.AlignLeft + text: qsTr("Encryption") + color: Nheko.colors.text + } + ToggleButton { + Layout.alignment: Qt.AlignRight + id: encryption + checked: true + } + } + } + footer: DialogButtonBox { + standardButtons: DialogButtonBox.Cancel + Button { + text: "Start Direct Chat" + DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole + } + onRejected: createDirectRoot.close(); + //onAccepted: createRoom(newRoomName.text, newRoomTopic.text, newRoomAlias.text, newRoomVisibility.index, newRoomPreset.index) + } +} diff --git a/resources/qml/dialogs/CreateRoom.qml b/resources/qml/dialogs/CreateRoom.qml index 843d10c8..85db8f10 100644 --- a/resources/qml/dialogs/CreateRoom.qml +++ b/resources/qml/dialogs/CreateRoom.qml @@ -72,7 +72,7 @@ ApplicationWindow { footer: DialogButtonBox { standardButtons: DialogButtonBox.Cancel Button { - text: "CreateRoom" + text: "Create Room" DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole } onRejected: createRoomRoot.close(); diff --git a/resources/res.qrc b/resources/res.qrc index 6ed37fac..3ce63f42 100644 --- a/resources/res.qrc +++ b/resources/res.qrc @@ -143,6 +143,7 @@ qml/device-verification/NewVerificationRequest.qml qml/device-verification/Success.qml qml/device-verification/Waiting.qml + qml/dialogs/CreateDirect.qml qml/dialogs/CreateRoom.qml qml/dialogs/ImageOverlay.qml qml/dialogs/ImagePackEditorDialog.qml