status-desktop/ui/app/AppLayouts/Profile/panels/CommunitiesListPanel.qml
Lukáš Tinkl 52dbf9b7c8 fix(CommunitiesListPanel): set uniform icon size
we want same icon sizes here, no matter if there's an image or not

Fixes: #7285
2022-09-22 11:18:16 +02:00

117 lines
3.9 KiB
QML

import QtQuick 2.14
import QtQuick.Controls 2.14
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Components 0.1
import StatusQ.Controls 0.1
import StatusQ.Popups 0.1
import utils 1.0
StatusListView {
id: root
property bool hasAddedContacts: false
signal inviteFriends(var communityData)
signal leaveCommunityClicked(string communityId)
signal setCommunityMutedClicked(string communityId, bool muted)
signal setActiveCommunityClicked(string communityId)
interactive: false
implicitHeight: contentItem.childrenRect.height
spacing: 0
delegate: StatusListItem {
id: statusCommunityItem
width: parent.width
title: model.name
statusListItemTitle.font.pixelSize: 17
statusListItemTitle.font.bold: true
subTitle: model.description
tertiaryTitle: qsTr("%n member(s)", "", model.members.count)
asset.name: model.image
asset.isImage: asset.name.includes("data")
asset.isLetterIdenticon: !model.image
asset.bgColor: model.color || Theme.palette.primaryColor1
asset.width: 40
asset.height: 40
visible: model.joined
height: visible ? implicitHeight: 0
onClicked: setActiveCommunityClicked(model.id)
components: [
StatusFlatButton {
objectName: "CommunitiesListPanel_leaveCommunityPopupButton"
size: StatusBaseButton.Size.Small
type: StatusBaseButton.Type.Danger
borderColor: "transparent"
text: qsTr("Leave Community")
onClicked: {
Global.openPopup(leaveCommunityPopup, {
community: model.name,
communityId: model.id
})
}
},
StatusFlatButton {
size: StatusBaseButton.Size.Tiny
leftPadding: 4
rightPadding: 0
icon.name: model.muted ? "notification-muted" : "notification"
onClicked: root.setCommunityMutedClicked(model.id, !model.muted)
},
StatusFlatButton {
size: StatusBaseButton.Size.Tiny
leftPadding: 4
rightPadding: 0
icon.name: "invite-users"
onClicked: root.inviteFriends(model)
}
]
} // StatusListItem
property Component leaveCommunityPopup: StatusModal {
id: leavePopup
property string community: ""
property string communityId: ""
anchors.centerIn: parent
header.title: qsTr("Leave %1").arg(community)
contentItem: Item {
implicitWidth: 368
implicitHeight: msg.implicitHeight + 32
StatusBaseText {
id: msg
anchors.left: parent.left
anchors.right: parent.right
anchors.verticalCenter: parent.verticalCenter
anchors.margins: 16
wrapMode: Text.WrapAtWordBoundaryOrAnywhere
text: qsTr("Are you sure you want to leave? Once you leave, you will have to request to rejoin if you change your mind.")
color: Theme.palette.directColor1
font.pixelSize: 15
}
}
rightButtons: [
StatusButton {
text: qsTr("Cancel")
onClicked: leavePopup.close()
},
StatusButton {
objectName: "CommunitiesListPanel_leaveCommunityButtonInPopup"
type: StatusBaseButton.Type.Danger
text: qsTr("Leave community")
onClicked: {
root.leaveCommunityClicked(leavePopup.communityId)
leavePopup.close()
}
}
]
}
} // ListView