110 lines
3.6 KiB
QML
110 lines
3.6 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
|
||
|
|
||
|
ListView {
|
||
|
id: root
|
||
|
|
||
|
property var communitySectionModule
|
||
|
property var communityProfileModule
|
||
|
property bool hasAddedContacts: false
|
||
|
|
||
|
signal inviteFriends(var communityData)
|
||
|
|
||
|
interactive: false
|
||
|
implicitHeight: contentItem.childrenRect.height
|
||
|
spacing: 0
|
||
|
|
||
|
delegate: StatusListItem {
|
||
|
id: statusCommunityItem
|
||
|
width: parent.width
|
||
|
title: model.name
|
||
|
subTitle: model.description
|
||
|
tertiaryTitle: qsTr(model.members.count === 1 ?"%1 member"
|
||
|
:"%1 members").arg(model.members.count)
|
||
|
image.source: model.image
|
||
|
icon.isLetterIdenticon: !model.image
|
||
|
icon.background.color: model.color || Theme.palette.primaryColor1
|
||
|
visible: model.joined
|
||
|
height: visible ? implicitHeight: 0
|
||
|
|
||
|
sensor.hoverEnabled: false
|
||
|
|
||
|
components: [
|
||
|
StatusFlatButton {
|
||
|
size: StatusBaseButton.Size.Small
|
||
|
type: StatusBaseButton.Type.Danger
|
||
|
border.color: "transparent"
|
||
|
text: qsTrId("leave-community")
|
||
|
onClicked: {
|
||
|
Global.openPopup(leaveCommunityPopup, {
|
||
|
community: model.name,
|
||
|
communityId: model.id
|
||
|
})
|
||
|
}
|
||
|
},
|
||
|
StatusFlatRoundButton {
|
||
|
type: StatusFlatRoundButton.Type.Secondary
|
||
|
width: 44
|
||
|
height: 44
|
||
|
icon.source: model.muted ? Style.svg("communities/notifications-muted")
|
||
|
: Style.svg("communities/notifications")
|
||
|
onClicked: root.communityProfileModule.setCommunityMuted(model.id, !model.muted)
|
||
|
},
|
||
|
|
||
|
StatusFlatRoundButton {
|
||
|
type: StatusFlatRoundButton.Type.Secondary
|
||
|
width: 44
|
||
|
height: 44
|
||
|
icon.name: "invite-users"
|
||
|
onClicked: root.inviteFriends(model)
|
||
|
}
|
||
|
]
|
||
|
} // StatusListItem
|
||
|
|
||
|
property Component leaveCommunityPopup: StatusModal {
|
||
|
id: leavePopup
|
||
|
property string community: ""
|
||
|
property var 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 {
|
||
|
type: StatusBaseButton.Type.Danger
|
||
|
text: qsTr("Leave community")
|
||
|
onClicked: {
|
||
|
root.communityProfileModule.leaveCommunity(leavePopup.communityId)
|
||
|
leavePopup.close()
|
||
|
}
|
||
|
}
|
||
|
]
|
||
|
}
|
||
|
} // ListView
|