feat(CommunityPermissions): UI support to show the % of members fulfilling permission

Closes: #9044
This commit is contained in:
Michał Cieślak 2023-01-17 13:22:28 +01:00 committed by Michał
parent 7f67c885c8
commit 769a41ea9c
3 changed files with 77 additions and 1 deletions

View File

@ -0,0 +1,61 @@
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import utils 1.0
Control {
property int qualifyingAddresses: 1
property int knownAddresses: 1
property int unknownAddresses: 1
verticalPadding: 16
horizontalPadding: 18
background: Rectangle {
border.color: Style.current.border
radius: Style.current.radius
color: Style.current.transparent
}
contentItem: RowLayout {
spacing: 4
StatusIcon {
Layout.preferredWidth: 22
Layout.preferredHeight: 22
Layout.alignment: Qt.AlignTop
color: Theme.palette.baseColor1
icon: "communities"
}
StatusBaseText {
Layout.fillWidth: true
wrapMode: Text.Wrap
font.pixelSize: Style.current.primaryTextFontSize
lineHeight: 22
lineHeightMode: Text.FixedHeight
Binding on color {
when: qualifyingAddresses === 0
value: Theme.palette.dangerColor1
}
readonly property real ratio: 100 * qualifyingAddresses / knownAddresses
readonly property string ratioAligned: Number(ratio.toFixed(1))
readonly property string part1: qsTr("%L1% of the %Ln community member(s) with known addresses will qualify for this permission.",
"", knownAddresses).arg(ratioAligned)
readonly property string part2: qsTr("The addresses of %Ln community member(s) are unknown.", "", unknownAddresses)
text: `${part1} ${part2}`
}
}
}

View File

@ -1,3 +1,4 @@
CommunityPermissionsSettingsPanel 1.0 CommunityPermissionsSettingsPanel.qml
CommunityProfilePopupInviteFriendsPanel 1.0 CommunityProfilePopupInviteFriendsPanel.qml
CommunityProfilePopupInviteMessagePanel 1.0 CommunityProfilePopupInviteMessagePanel.qml
CommunityPermissionsSettingsPanel 1.0 CommunityPermissionsSettingsPanel.qml
PermissionQualificationPanel 1.0 PermissionQualificationPanel.qml

View File

@ -1,4 +1,5 @@
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import StatusQ.Core 0.1
@ -13,6 +14,7 @@ import shared.panels 1.0
import SortFilterProxyModel 0.2
import AppLayouts.Chat.panels.communities 1.0
import "../../../Chat/controls/community"
@ -515,6 +517,18 @@ StatusScrollView {
onToggled: d.dirtyValues.isPrivateDirty = (root.isPrivate !== checked)
}
}
PermissionQualificationPanel {
Layout.fillWidth: true
Layout.topMargin: 24
visible: d.dirtyValues.holdingsModel.count > 0
qualifyingAddresses: 200234
knownAddresses: 663026
unknownAddresses: 396720
}
StatusButton {
visible: !root.isEditState
Layout.topMargin: 24