direct chat creator can now create direct chats

This commit is contained in:
Malte E 2022-03-26 22:25:48 +01:00
parent 5384ab377c
commit 838cf63578
3 changed files with 34 additions and 13 deletions

View file

@ -8,29 +8,38 @@ import QtQuick 2.15
import QtQuick.Window 2.13 import QtQuick.Window 2.13
import QtQuick.Layouts 1.3 import QtQuick.Layouts 1.3
import QtQuick.Controls 2.3 import QtQuick.Controls 2.3
import QtQml.Models 2.15
import im.nheko 1.0 import im.nheko 1.0
ApplicationWindow { ApplicationWindow {
id: createDirectRoot id: createDirectRoot
title: qsTr("Create Direct Chat") title: qsTr("Create Direct Chat")
property var profile: null property var profile
property bool otherUserHasE2ee: profile? dMod.count > 0 : true
minimumHeight: layout.implicitHeight+2*layout.anchors.margins+footer.height minimumHeight: layout.implicitHeight+2*layout.anchors.margins+footer.height
minimumWidth: footer.width minimumWidth: footer.width
DelegateModel {
id: dMod
model: profile? profile.deviceList : undefined
}
ColumnLayout { ColumnLayout {
id: layout id: layout
anchors.fill: parent anchors.fill: parent
anchors.margins: Nheko.paddingSmall anchors.margins: Nheko.paddingSmall
MatrixTextField { MatrixTextField {
id: userID id: userID
property bool isValidMxid: text.match("@.+?:.{3,}")
Layout.fillWidth: true Layout.fillWidth: true
focus: true focus: true
placeholderText: qsTr("Name") placeholderText: qsTr("Name")
/*onTextChanged: { onTextChanged: {
if(isValidMxid(text)) if(isValidMxid) {
profile = getProfile(text); profile = TimelineManager.getGlobalUserProfile(text);
else } else
profile = null; profile = null;
}*/ }
} }
GridLayout { GridLayout {
@ -39,21 +48,20 @@ ApplicationWindow {
columns: 2 columns: 2
rowSpacing: Nheko.paddingSmall rowSpacing: Nheko.paddingSmall
columnSpacing: Nheko.paddingMedium columnSpacing: Nheko.paddingMedium
anchors.centerIn: parent
Avatar { Avatar {
Layout.rowSpan: 2 Layout.rowSpan: 2
Layout.preferredWidth: Nheko.avatarSize Layout.preferredWidth: Nheko.avatarSize
Layout.preferredHeight: Nheko.avatarSize Layout.preferredHeight: Nheko.avatarSize
Layout.alignment: Qt.AlignLeft Layout.alignment: Qt.AlignLeft
userid: profile.mxid userid: profile? profile.mxid : ""
url: profile.avatarUrl.replace("mxc://", "image://MxcImage/") url: profile? profile.avatarUrl.replace("mxc://", "image://MxcImage/") : null
displayName: profile.displayName displayName: profile? profile.displayName : ""
enabled: false enabled: false
} }
Label { Label {
Layout.fillWidth: true Layout.fillWidth: true
text: "John Smith" //profile.displayName text: profile? profile.displayName : ""
color: TimelineManager.userColor(userID.text, Nheko.colors.window) color: TimelineManager.userColor(userID.text, Nheko.colors.window)
font.pointSize: fontMetrics.font.pointSize font.pointSize: fontMetrics.font.pointSize
} }
@ -76,7 +84,7 @@ ApplicationWindow {
ToggleButton { ToggleButton {
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight
id: encryption id: encryption
checked: true checked: otherUserHasE2ee
} }
} }
} }
@ -85,8 +93,12 @@ ApplicationWindow {
Button { Button {
text: "Start Direct Chat" text: "Start Direct Chat"
DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole DialogButtonBox.buttonRole: DialogButtonBox.AcceptRole
enabled: userID.isValidMxid
} }
onRejected: createDirectRoot.close(); onRejected: createDirectRoot.close();
//onAccepted: createRoom(newRoomName.text, newRoomTopic.text, newRoomAlias.text, newRoomVisibility.index, newRoomPreset.index) onAccepted: {
profile.startChat()
createDirectRoot.close()
}
} }
} }

View file

@ -199,6 +199,14 @@ TimelineViewManager::openGlobalUserProfile(QString userId)
emit openProfile(profile); emit openProfile(profile);
} }
UserProfile*
TimelineViewManager::getGlobalUserProfile(QString userId)
{
UserProfile *profile = new UserProfile{QString{}, userId, this};
QQmlEngine::setObjectOwnership(profile, QQmlEngine::JavaScriptOwnership);
return(profile);
}
void void
TimelineViewManager::setVideoCallItem() TimelineViewManager::setVideoCallItem()
{ {

View file

@ -67,6 +67,7 @@ public:
Q_INVOKABLE void openRoomSettings(QString room_id); Q_INVOKABLE void openRoomSettings(QString room_id);
Q_INVOKABLE void openInviteUsers(QString roomId); Q_INVOKABLE void openInviteUsers(QString roomId);
Q_INVOKABLE void openGlobalUserProfile(QString userId); Q_INVOKABLE void openGlobalUserProfile(QString userId);
Q_INVOKABLE UserProfile* getGlobalUserProfile(QString userId);
Q_INVOKABLE void focusMessageInput(); Q_INVOKABLE void focusMessageInput();