feat: display empty state when user has no contacts
This commit is contained in:
parent
d3b6ff32b8
commit
477f5aa460
|
@ -78,6 +78,11 @@ QtObject:
|
||||||
self.contacts.add(contact)
|
self.contacts.add(contact)
|
||||||
self.endInsertRows()
|
self.endInsertRows()
|
||||||
|
|
||||||
|
proc hasAddedContacts(self: ContactList): bool {.slot.} =
|
||||||
|
for c in self.contacts:
|
||||||
|
if(c.isContact()): return true
|
||||||
|
return false
|
||||||
|
|
||||||
proc updateContact*(self: ContactList, contact: Profile) =
|
proc updateContact*(self: ContactList, contact: Profile) =
|
||||||
var found = false
|
var found = false
|
||||||
let topLeft = self.createIndex(0, 0, nil)
|
let topLeft = self.createIndex(0, 0, nil)
|
||||||
|
|
|
@ -46,6 +46,11 @@ ModalPopup {
|
||||||
identicon: profileModel.profile.identicon,
|
identicon: profileModel.profile.identicon,
|
||||||
isUser: true
|
isUser: true
|
||||||
});
|
});
|
||||||
|
noContactsRect.visible = !profileModel.contactList.hasAddedContacts();
|
||||||
|
svMembers.visible = !noContactsRect.visible;
|
||||||
|
if(!svMembers.visible){
|
||||||
|
memberCount = 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function doJoin(){
|
function doJoin(){
|
||||||
|
@ -94,6 +99,38 @@ ModalPopup {
|
||||||
visible: !selectChatMembers
|
visible: !selectChatMembers
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: noContactsRect
|
||||||
|
width: 260
|
||||||
|
anchors.top: groupName.bottom
|
||||||
|
anchors.topMargin: Style.current.xlPadding
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
StyledText {
|
||||||
|
id: noContacts
|
||||||
|
text: qsTr("You don’t have any contacts yet. Invite your friends to start chatting.")
|
||||||
|
color: Style.current.darkGrey
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.topMargin: Style.current.padding
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
}
|
||||||
|
StyledButton {
|
||||||
|
//% "Invite friends"
|
||||||
|
label: qsTrId("invite-friends")
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.top: noContacts.bottom
|
||||||
|
anchors.topMargin: Style.current.xlPadding
|
||||||
|
onClicked: {
|
||||||
|
inviteFriendsPopup.open()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
InviteFriendsPopup {
|
||||||
|
id: inviteFriendsPopup
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ScrollView {
|
ScrollView {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.topMargin: 50
|
anchors.topMargin: 50
|
||||||
|
@ -101,6 +138,7 @@ ModalPopup {
|
||||||
Layout.fillWidth: true
|
Layout.fillWidth: true
|
||||||
Layout.fillHeight: true
|
Layout.fillHeight: true
|
||||||
|
|
||||||
|
id: svMembers
|
||||||
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
||||||
ScrollBar.vertical.policy: groupMembers.contentHeight > groupMembers.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
|
ScrollBar.vertical.policy: groupMembers.contentHeight > groupMembers.height ? ScrollBar.AlwaysOn : ScrollBar.AlwaysOff
|
||||||
|
|
||||||
|
|
|
@ -18,11 +18,6 @@ ModalPopup {
|
||||||
pubKeys = [];
|
pubKeys = [];
|
||||||
memberCount = chatsModel.activeChannel.members.rowCount();
|
memberCount = chatsModel.activeChannel.members.rowCount();
|
||||||
currMemberCount = memberCount;
|
currMemberCount = memberCount;
|
||||||
for(var i in groupMembers.contentItem.children){
|
|
||||||
if (groupMembers.contentItem.children[i].isChecked !== null) {
|
|
||||||
groupMembers.contentItem.children[i].isChecked = false
|
|
||||||
}
|
|
||||||
}
|
|
||||||
data.clear();
|
data.clear();
|
||||||
for(let i = 0; i < profileModel.contactList.rowCount(); i++){
|
for(let i = 0; i < profileModel.contactList.rowCount(); i++){
|
||||||
if(chatsModel.activeChannel.contains(profileModel.contactList.rowData(i, "pubKey"))) continue;
|
if(chatsModel.activeChannel.contains(profileModel.contactList.rowData(i, "pubKey"))) continue;
|
||||||
|
@ -162,8 +157,41 @@ ModalPopup {
|
||||||
fontPixelSize: 15
|
fontPixelSize: 15
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: noContactsRect
|
||||||
|
width: 320
|
||||||
|
visible: data.count == 0
|
||||||
|
anchors.top: searchBox.bottom
|
||||||
|
anchors.topMargin: Style.current.xlPadding
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
StyledText {
|
||||||
|
id: noContacts
|
||||||
|
text: qsTr("All your contacts are already in the group")
|
||||||
|
color: Style.current.textColor
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.topMargin: Style.current.padding
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
}
|
||||||
|
StyledButton {
|
||||||
|
//% "Invite friends"
|
||||||
|
label: qsTrId("invite-friends")
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.top: noContacts.bottom
|
||||||
|
anchors.topMargin: Style.current.padding
|
||||||
|
onClicked: {
|
||||||
|
inviteFriendsPopup.open()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
InviteFriendsPopup {
|
||||||
|
id: inviteFriendsPopup
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ScrollView {
|
ScrollView {
|
||||||
visible: addMembers
|
visible: addMembers && data.count > 0
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
anchors.topMargin: 50
|
anchors.topMargin: 50
|
||||||
anchors.top: searchBox.bottom
|
anchors.top: searchBox.bottom
|
||||||
|
|
|
@ -56,6 +56,7 @@ ModalPopup {
|
||||||
pubKey = "";
|
pubKey = "";
|
||||||
ensUsername.text = "";
|
ensUsername.text = "";
|
||||||
chatKey.forceActiveFocus(Qt.MouseFocusReason)
|
chatKey.forceActiveFocus(Qt.MouseFocusReason)
|
||||||
|
noContactsRect.visible = !profileModel.contactList.hasAddedContacts()
|
||||||
}
|
}
|
||||||
|
|
||||||
Input {
|
Input {
|
||||||
|
@ -128,6 +129,36 @@ ModalPopup {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Rectangle {
|
||||||
|
id: noContactsRect
|
||||||
|
width: 260
|
||||||
|
anchors.centerIn: parent
|
||||||
|
StyledText {
|
||||||
|
id: noContacts
|
||||||
|
text: qsTr("You don’t have any contacts yet. Invite your friends to start chatting.")
|
||||||
|
color: Style.current.darkGrey
|
||||||
|
anchors.top: parent.top
|
||||||
|
anchors.topMargin: Style.current.padding
|
||||||
|
anchors.left: parent.left
|
||||||
|
anchors.right: parent.right
|
||||||
|
wrapMode: Text.WordWrap
|
||||||
|
horizontalAlignment: Text.AlignHCenter
|
||||||
|
}
|
||||||
|
StyledButton {
|
||||||
|
//% "Invite friends"
|
||||||
|
label: qsTrId("invite-friends")
|
||||||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||||||
|
anchors.top: noContacts.bottom
|
||||||
|
anchors.topMargin: Style.current.xlPadding
|
||||||
|
onClicked: {
|
||||||
|
inviteFriendsPopup.open()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
InviteFriendsPopup {
|
||||||
|
id: inviteFriendsPopup
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue