Add power level display to member profile
This commit is contained in:
74
src/gui/Base/PowerLevelControl.qml
Normal file
74
src/gui/Base/PowerLevelControl.qml
Normal file
@@ -0,0 +1,74 @@
|
||||
// SPDX-License-Identifier: LGPL-3.0-or-later
|
||||
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
|
||||
AutoDirectionLayout {
|
||||
id: control
|
||||
|
||||
property alias defaultLevel: field.defaultText
|
||||
|
||||
readonly property int level: Math.min(100, parseInt(field.text || "0", 10))
|
||||
|
||||
function reset() { field.reset() }
|
||||
|
||||
|
||||
rowSpacing: theme.spacing
|
||||
|
||||
HSpacer {}
|
||||
|
||||
HTextField {
|
||||
id: field
|
||||
|
||||
radius: 0
|
||||
horizontalAlignment: Qt.AlignHCenter
|
||||
validator: IntValidator { top: 100 }
|
||||
inputMethodHints: Qt.ImhFormattedNumbersOnly
|
||||
maximumLength: control.level < 0 ? 16 : 3
|
||||
|
||||
onActiveFocusChanged:
|
||||
if (! activeFocus && parseInt(text || "0", 10) > 100)
|
||||
text = 100
|
||||
|
||||
Layout.minimumWidth:
|
||||
mainUI.fontMetrics.boundingRect("-999").width +
|
||||
leftPadding +
|
||||
rightPadding
|
||||
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
}
|
||||
|
||||
Row {
|
||||
Layout.preferredHeight: field.height
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
|
||||
HButton {
|
||||
height: parent.height
|
||||
icon.name: "user-power-default"
|
||||
toolTip.text: qsTr("Default")
|
||||
checked: control.level >= 0 && control.level < 50
|
||||
uncheckable: false
|
||||
onClicked: field.text = 0
|
||||
}
|
||||
|
||||
HButton {
|
||||
height: parent.height
|
||||
icon.name: "user-power-50"
|
||||
toolTip.text: qsTr("Moderator")
|
||||
checked: control.level >= 50 && control.level < 100
|
||||
uncheckable: false
|
||||
onClicked: field.text = 50
|
||||
}
|
||||
|
||||
HButton {
|
||||
height: parent.height
|
||||
icon.name: "user-power-100"
|
||||
toolTip.text: qsTr("Admin")
|
||||
checked: control.level >= 100
|
||||
uncheckable: false
|
||||
onClicked: field.text = 100
|
||||
}
|
||||
}
|
||||
|
||||
HSpacer {}
|
||||
}
|
@@ -150,54 +150,29 @@ HListView {
|
||||
color: theme.colors.halfDimText
|
||||
|
||||
Layout.fillWidth: true
|
||||
Layout.bottomMargin: theme.spacing
|
||||
}
|
||||
|
||||
// TODO
|
||||
// HColumnLayout {
|
||||
// spacing: theme.spacing / 2
|
||||
HColumnLayout {
|
||||
spacing: theme.spacing / 2
|
||||
|
||||
// HLabel {
|
||||
// text: qsTr("Power level:")
|
||||
// wrapMode: HLabel.Wrap
|
||||
// horizontalAlignment: Qt.AlignHCenter
|
||||
Layout.preferredWidth: parent.width
|
||||
Layout.bottomMargin: theme.spacing
|
||||
|
||||
// Layout.fillWidth: true
|
||||
// }
|
||||
HLabel {
|
||||
text: qsTr("Power level:")
|
||||
wrapMode: HLabel.Wrap
|
||||
horizontalAlignment: Qt.AlignHCenter
|
||||
|
||||
// HRowLayout {
|
||||
// spacing: theme.spacing
|
||||
Layout.fillWidth: true
|
||||
}
|
||||
|
||||
// HSpacer {}
|
||||
PowerLevelControl {
|
||||
defaultLevel: member.power_level
|
||||
rowSpacing: parent.spacing
|
||||
|
||||
// Row {
|
||||
// HButton {
|
||||
// text: qsTr("Default")
|
||||
// checked: levelBox.value >= 0 && levelBox.value < 50
|
||||
// onClicked: levelBox.value = 0
|
||||
// }
|
||||
// HButton {
|
||||
// text: qsTr("Moderator")
|
||||
// checked: levelBox.value >= 50 && levelBox.value < 100
|
||||
// onClicked: levelBox.value = 50
|
||||
// }
|
||||
// HButton {
|
||||
// text: qsTr("Admin")
|
||||
// checked: levelBox.value === 100
|
||||
// onClicked: levelBox.value = 100
|
||||
// }
|
||||
// }
|
||||
|
||||
// HSpinBox {
|
||||
// id: levelBox
|
||||
// from: -999
|
||||
// to: 100
|
||||
// defaultValue: member.power_level
|
||||
// }
|
||||
|
||||
// HSpacer {}
|
||||
// }
|
||||
// }
|
||||
Layout.preferredWidth: parent.width
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: loadDevices()
|
||||
|
Reference in New Issue
Block a user