status-desktop/ui/app/AppLayouts/Chat/ContactsColumn.qml

189 lines
4.9 KiB
QML
Raw Normal View History

2020-06-17 19:18:31 +00:00
import QtQuick 2.13
import Qt.labs.platform 1.1
2020-06-17 19:18:31 +00:00
import QtQuick.Controls 2.13
import QtQuick.Layouts 1.13
import "../../../imports"
import "../../../shared"
import "../../../shared/status"
import "./components"
import "./ContactsColumn"
2020-12-11 20:38:10 +00:00
import "./CommunityComponents"
Rectangle {
2020-05-28 11:06:17 +00:00
property alias chatGroupsListViewCount: channelList.channelListCount
property alias searchStr: searchBox.text
id: contactsColumn
2020-05-27 18:40:58 +00:00
Layout.fillHeight: true
color: Style.current.secondaryMenuBackground
2020-05-27 18:40:58 +00:00
StyledText {
2020-05-27 18:40:58 +00:00
id: title
//% "Chat"
text: qsTrId("chat")
2020-05-27 18:40:58 +00:00
anchors.top: parent.top
2020-07-15 19:38:03 +00:00
anchors.topMargin: Style.current.padding
2020-05-27 18:40:58 +00:00
anchors.horizontalCenter: parent.horizontalCenter
2020-07-15 19:38:03 +00:00
font.weight: Font.Bold
2020-05-27 18:40:58 +00:00
font.pixelSize: 17
}
2020-12-11 20:29:46 +00:00
Component {
id: publicChatPopupComponent
PublicChatPopup {
onClosed: {
destroy()
}
}
}
2020-12-11 20:29:46 +00:00
Component {
id: groupChatPopupComponent
GroupChatPopup {
onClosed: {
destroy()
}
}
2020-06-17 15:56:48 +00:00
}
2020-12-11 20:29:46 +00:00
Component {
id: privateChatPopupComponent
PrivateChatPopup {
onClosed: {
destroy()
}
}
}
Component {
id: communitiesPopupComponent
CommunitiesPopup {
onClosed: {
destroy()
}
}
}
Component {
id: createCommunitiesPopupComponent
CreateCommunityPopup {
onClosed: {
destroy()
}
}
}
2020-12-18 20:55:33 +00:00
Component {
id: importCommunitiesPopupComponent
2021-02-12 18:19:31 +00:00
AccessExistingCommunityPopup {
2020-12-18 20:55:33 +00:00
onClosed: {
destroy()
}
}
}
2020-12-11 20:29:46 +00:00
Component {
id: communityDetailPopup
CommunityDetailPopup {
onClosed: {
destroy()
}
}
2020-05-28 12:56:43 +00:00
}
Component {
id: contactRequestsPopup
ContactRequestsPopup {
onClosed: {
destroy()
}
}
}
2020-05-28 11:19:18 +00:00
SearchBox {
2020-05-27 18:40:58 +00:00
id: searchBox
2020-07-15 19:38:03 +00:00
anchors.top: title.bottom
anchors.topMargin: Style.current.padding
anchors.right: addChat.left
anchors.rightMargin: Style.current.padding
anchors.left: parent.left
anchors.leftMargin: Style.current.padding
2020-05-27 18:40:58 +00:00
}
2020-05-28 11:32:05 +00:00
AddChat {
2020-06-17 19:18:31 +00:00
id: addChat
anchors.right: parent.right
anchors.rightMargin: Style.current.padding
2020-07-15 19:38:03 +00:00
anchors.top: title.bottom
anchors.topMargin: Style.current.padding
}
Connections {
target: profileModel.contacts
onContactRequestAdded: {
if (!appSettings.notifyOnNewRequests) {
return
}
const isContact = profileModel.contacts.isAdded(address)
systemTray.showMessage(isContact ? qsTr("Contact request accepted") :
qsTr("New contact request"),
isContact ? qsTr("You can now chat with %1").arg(Utils.removeStatusEns(name)) :
qsTr("%1 requests to become contacts").arg(Utils.removeStatusEns(name)),
SystemTrayIcon.NoIcon,
Constants.notificationPopupTTL)
}
}
StatusSettingsLineButton {
property int nbRequests: profileModel.contacts.contactRequests.count
id: contactRequest
anchors.top: searchBox.bottom
anchors.topMargin: visible ? Style.current.padding : 0
anchors.left: parent.left
anchors.leftMargin: Style.current.halfPadding
anchors.right: parent.right
anchors.rightMargin: Style.current.halfPadding
visible: nbRequests > 0
height: visible ? implicitHeight : 0
text: qsTr("Contact requests")
isBadge: true
badgeText: nbRequests.toString()
onClicked: openPopup(contactRequestsPopup)
}
2020-12-11 20:29:46 +00:00
ScrollView {
id: chatGroupsContainer
anchors.top: contactRequest.bottom
2020-12-11 20:29:46 +00:00
anchors.topMargin: Style.current.padding
2020-05-27 18:40:58 +00:00
anchors.bottom: parent.bottom
anchors.left: parent.left
anchors.right: parent.right
2020-12-11 20:29:46 +00:00
leftPadding: Style.current.halfPadding
rightPadding: Style.current.halfPadding
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
contentHeight: channelList.height + 2 * Style.current.padding + emptyViewAndSuggestions.height
2020-12-11 20:29:46 +00:00
clip: true
ChannelList {
id: channelList
2020-12-11 20:38:10 +00:00
searchStr: contactsColumn.searchStr.toLowerCase()
channelModel: chatsModel.channelView.chats
2020-12-11 20:29:46 +00:00
}
EmptyView {
id: emptyViewAndSuggestions
width: parent.width
anchors.top: channelList.bottom
anchors.topMargin: Style.current.smallPadding
}
}
}
/*##^##
Designer {
D{i:0;autoSize:true;formeditorColor:"#ffffff";height:480;width:640}
}
##^##*/