feat: display empty state when user has no contacts

This commit is contained in:
Richard Ramos 2020-08-09 22:14:21 -04:00
parent d3b6ff32b8
commit 477f5aa460
No known key found for this signature in database
GPG Key ID: 80D4B01265FDFE8F
4 changed files with 108 additions and 6 deletions

View File

@ -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)

View File

@ -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 dont 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

View File

@ -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

View File

@ -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 dont 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
}
}
} }
} }