feat: private chat popup
This commit is contained in:
parent
31a310314c
commit
1a829828c8
|
@ -11,6 +11,7 @@ StackLayout {
|
||||||
property int chatGroupsListViewCount: 0
|
property int chatGroupsListViewCount: 0
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
|
Layout.minimumWidth: 300
|
||||||
|
|
||||||
currentIndex: chatGroupsListViewCount > 0 ? 0 : 1
|
currentIndex: chatGroupsListViewCount > 0 ? 0 : 1
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,10 @@ Item {
|
||||||
id: publicChatPopup
|
id: publicChatPopup
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PrivateChatPopup {
|
||||||
|
id: privateChatPopup
|
||||||
|
}
|
||||||
|
|
||||||
SearchBox {
|
SearchBox {
|
||||||
id: searchBox
|
id: searchBox
|
||||||
}
|
}
|
||||||
|
|
|
@ -87,9 +87,7 @@ Rectangle {
|
||||||
QQC2.Action {
|
QQC2.Action {
|
||||||
text: qsTr("Start new chat")
|
text: qsTr("Start new chat")
|
||||||
icon.source: "../../../img/new_chat.svg"
|
icon.source: "../../../img/new_chat.svg"
|
||||||
onTriggered: {
|
onTriggered: privateChatPopup.open()
|
||||||
console.log("TODO: Start new chat")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
QQC2.Action {
|
QQC2.Action {
|
||||||
text: qsTr("Start group chat")
|
text: qsTr("Start group chat")
|
||||||
|
|
|
@ -36,7 +36,7 @@ Rectangle {
|
||||||
anchors.leftMargin: 10
|
anchors.leftMargin: 10
|
||||||
anchors.verticalCenter: parent.verticalCenter
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
fillMode: Image.PreserveAspectFit
|
fillMode: Image.PreserveAspectFit
|
||||||
source: "../../img/search.svg"
|
source: "../../../img/search.svg"
|
||||||
}
|
}
|
||||||
|
|
||||||
MouseArea {
|
MouseArea {
|
||||||
|
|
|
@ -0,0 +1,138 @@
|
||||||
|
import QtQuick 2.12
|
||||||
|
import QtQuick.Controls 2.3
|
||||||
|
import QtQuick.Layouts 1.3
|
||||||
|
import "../../../../imports"
|
||||||
|
import "../../../../shared"
|
||||||
|
import "./"
|
||||||
|
|
||||||
|
Item {
|
||||||
|
function open(){
|
||||||
|
popup.open()
|
||||||
|
chatKey.text = "";
|
||||||
|
chatKey.forceActiveFocus(Qt.MouseFocusReason)
|
||||||
|
}
|
||||||
|
|
||||||
|
function close(){
|
||||||
|
popup.close()
|
||||||
|
}
|
||||||
|
|
||||||
|
Popup {
|
||||||
|
id: popup
|
||||||
|
modal: true
|
||||||
|
closePolicy: Popup.NoAutoClose
|
||||||
|
Overlay.modal: Rectangle {
|
||||||
|
color: "#60000000"
|
||||||
|
}
|
||||||
|
parent: Overlay.overlay
|
||||||
|
x: Math.round((parent.width - width) / 2)
|
||||||
|
y: Math.round((parent.height - height) / 2)
|
||||||
|
width: 480
|
||||||
|
height: 509
|
||||||
|
background: Rectangle {
|
||||||
|
color: Theme.white
|
||||||
|
radius: 8
|
||||||
|
}
|
||||||
|
padding: 0
|
||||||
|
contentItem: Item {
|
||||||
|
Text {
|
||||||
|
id: modalDialogTitle
|
||||||
|
text: qsTr("New chat")
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.left: parent.left
|
||||||
|
font.bold: true
|
||||||
|
font.pixelSize: 17
|
||||||
|
anchors.leftMargin: 16
|
||||||
|
anchors.topMargin: 16
|
||||||
|
}
|
||||||
|
|
||||||
|
Image {
|
||||||
|
id: closeModalImg
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: 16
|
||||||
|
anchors.topMargin: 16
|
||||||
|
source: "../../../img/close.svg"
|
||||||
|
MouseArea {
|
||||||
|
id: closeModalMouseArea
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked : {
|
||||||
|
popup.close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Separator {
|
||||||
|
id: separator
|
||||||
|
anchors.top: modalDialogTitle.bottom
|
||||||
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: chatKeyBox
|
||||||
|
height: 44
|
||||||
|
color: Theme.grey
|
||||||
|
anchors.top: separator.bottom
|
||||||
|
anchors.topMargin: 16
|
||||||
|
radius: 8
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.rightMargin: 16
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: 16
|
||||||
|
|
||||||
|
TextField {
|
||||||
|
id: chatKey
|
||||||
|
placeholderText: qsTr("Enter ENS username or chat key")
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.leftMargin: 16
|
||||||
|
anchors.verticalCenter: parent.verticalCenter
|
||||||
|
font.pixelSize: 15
|
||||||
|
background: Rectangle {
|
||||||
|
color: "#00000000"
|
||||||
|
}
|
||||||
|
width: popup.width - 65
|
||||||
|
}
|
||||||
|
|
||||||
|
MouseArea {
|
||||||
|
id: mouseArea
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked : {
|
||||||
|
chatKey.forceActiveFocus(Qt.MouseFocusReason)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Separator {
|
||||||
|
id: separator2
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.bottomMargin: 75
|
||||||
|
}
|
||||||
|
|
||||||
|
Button {
|
||||||
|
id: btnNewChat
|
||||||
|
anchors.bottom: parent.bottom
|
||||||
|
anchors.right: parent.right
|
||||||
|
anchors.bottomMargin: 16
|
||||||
|
anchors.rightMargin: 16
|
||||||
|
width: 44
|
||||||
|
height: 44
|
||||||
|
Image {
|
||||||
|
source: chatKey.text == "" ? "../../../img/arrow-button-inactive.svg" : "../../../img/arrow-btn-active.svg"
|
||||||
|
}
|
||||||
|
background: Rectangle {
|
||||||
|
color: "transparent"
|
||||||
|
}
|
||||||
|
MouseArea {
|
||||||
|
id: btnMAnewChat
|
||||||
|
cursorShape: Qt.PointingHandCursor
|
||||||
|
anchors.fill: parent
|
||||||
|
onClicked : {
|
||||||
|
if(chatKey.text === "") return;
|
||||||
|
// chatsModel.joinChat(chatKey.text);
|
||||||
|
console.log("TODO: join private chat");
|
||||||
|
popup.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,7 @@ import "./"
|
||||||
Item {
|
Item {
|
||||||
function open(){
|
function open(){
|
||||||
popup.open()
|
popup.open()
|
||||||
|
channelName.text = "";
|
||||||
channelName.forceActiveFocus(Qt.MouseFocusReason)
|
channelName.forceActiveFocus(Qt.MouseFocusReason)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +190,6 @@ Item {
|
||||||
onClicked : {
|
onClicked : {
|
||||||
if(channelName.text === "") return;
|
if(channelName.text === "") return;
|
||||||
chatsModel.joinChat(channelName.text);
|
chatsModel.joinChat(channelName.text);
|
||||||
channelName.text = "";
|
|
||||||
popup.close();
|
popup.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
SuggestedChannel 1.0 SuggestedChannel.qml
|
SuggestedChannel 1.0 SuggestedChannel.qml
|
||||||
PublicChatPopup 1.0 PublicChatPopup.qml
|
PublicChatPopup 1.0 PublicChatPopup.qml
|
||||||
|
PrivateChatPopup 1.0 PrivateChatPopup.qml
|
|
@ -54,6 +54,7 @@ DISTFILES += \
|
||||||
app/AppLayouts/Chat/ChatLayout.qml \
|
app/AppLayouts/Chat/ChatLayout.qml \
|
||||||
app/AppLayouts/Chat/ContactsColumn.qml \
|
app/AppLayouts/Chat/ContactsColumn.qml \
|
||||||
app/AppLayouts/Chat/components/PublicChatPopup.qml \
|
app/AppLayouts/Chat/components/PublicChatPopup.qml \
|
||||||
|
app/AppLayouts/Chat/components/PrivateChatPopup.qml \
|
||||||
app/AppLayouts/Chat/components/SuggestedChannel.qml \
|
app/AppLayouts/Chat/components/SuggestedChannel.qml \
|
||||||
app/AppLayouts/Chat/components/qmldir \
|
app/AppLayouts/Chat/components/qmldir \
|
||||||
app/AppLayouts/Chat/qmldir \
|
app/AppLayouts/Chat/qmldir \
|
||||||
|
|
Loading…
Reference in New Issue