123 lines
4.4 KiB
QML
123 lines
4.4 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Layouts 1.15
|
|
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Popups 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
|
|
import AppLayouts.Communities.controls 1.0
|
|
import AppLayouts.Communities.popups 1.0
|
|
|
|
import utils 1.0
|
|
|
|
StatusScrollView {
|
|
id: root
|
|
objectName: "communityEditPanelScrollView"
|
|
|
|
property alias name: baseLayout.name
|
|
property alias description: baseLayout.description
|
|
property alias introMessage: introMessageTextInput.text
|
|
property alias outroMessage: outroMessageTextInput.text
|
|
property alias color: baseLayout.color
|
|
property alias tags: baseLayout.tags
|
|
property alias selectedTags: baseLayout.selectedTags
|
|
property alias options: baseLayout.options
|
|
property string communityId
|
|
property bool communityShardingEnabled
|
|
property int communityShardIndex: -1
|
|
|
|
property alias logoImageData: baseLayout.logoImageData
|
|
property alias logoImagePath: baseLayout.logoImagePath
|
|
property alias logoCropRect: baseLayout.logoCropRect
|
|
property alias bannerImageData: baseLayout.bannerImageData
|
|
property alias bannerPath: baseLayout.bannerPath
|
|
property alias bannerCropRect: baseLayout.bannerCropRect
|
|
|
|
property size bottomReservedSpace: Qt.size(0, 0)
|
|
property bool bottomReservedSpaceActive: false
|
|
|
|
readonly property bool saveChangesButtonEnabled: !((baseLayout.isNameDirty && !baseLayout.isNameValid) ||
|
|
(baseLayout.isDescriptionDirty && !baseLayout.isDescriptionValid) ||
|
|
(introMessageTextInput.input.dirty && !introMessageTextInput.valid) ||
|
|
(outroMessageTextInput.input.dirty && !outroMessageTextInput.valid))
|
|
|
|
padding: 0
|
|
|
|
ColumnLayout {
|
|
id: mainLayout
|
|
width: baseLayout.width
|
|
spacing: Style.current.padding
|
|
EditCommunitySettingsForm {
|
|
id: baseLayout
|
|
Layout.fillHeight: true
|
|
}
|
|
StatusModalDivider {
|
|
Layout.fillWidth: true
|
|
Layout.topMargin: -baseLayout.spacing
|
|
Layout.bottomMargin: 2
|
|
}
|
|
IntroMessageInput {
|
|
id: introMessageTextInput
|
|
input.edit.objectName: "editCommunityIntroInput"
|
|
Layout.fillWidth: true
|
|
minimumHeight: 482
|
|
maximumHeight: 482
|
|
}
|
|
|
|
OutroMessageInput {
|
|
id: outroMessageTextInput
|
|
input.edit.objectName: "editCommunityOutroInput"
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
StatusModalDivider {
|
|
Layout.fillWidth: true
|
|
Layout.topMargin: -baseLayout.spacing
|
|
Layout.bottomMargin: 2
|
|
visible: root.communityShardingEnabled
|
|
}
|
|
|
|
RowLayout {
|
|
spacing: Style.current.halfPadding
|
|
visible: root.communityShardingEnabled
|
|
|
|
readonly property bool shardingActive: root.communityShardIndex !== -1
|
|
|
|
StatusBaseText {
|
|
Layout.fillWidth: true
|
|
text: qsTr("Community sharding")
|
|
}
|
|
Item { Layout.fillWidth: true }
|
|
StatusBaseText {
|
|
color: Theme.palette.baseColor1
|
|
visible: parent.shardingActive
|
|
text: qsTr("Active: on shard #%1").arg(root.communityShardIndex)
|
|
}
|
|
StatusButton {
|
|
size: StatusBaseButton.Size.Small
|
|
text: parent.shardingActive ? qsTr("Manage") : qsTr("Make %1 a sharded community").arg(root.name)
|
|
onClicked: Global.openPopup(enableShardingPopupCmp) // TODO manage popup
|
|
}
|
|
}
|
|
|
|
Item {
|
|
// settingsDirtyToastMessage placeholder
|
|
visible: root.bottomReservedSpaceActive
|
|
implicitWidth: root.bottomReservedSpace.width
|
|
implicitHeight: root.bottomReservedSpace.height
|
|
}
|
|
|
|
Component {
|
|
id: enableShardingPopupCmp
|
|
EnableShardingPopup {
|
|
communityName: root.name
|
|
publicKey: root.communityId
|
|
shardingInProgress: false // TODO community sharding backend: set to "true" when generating the pubSub topic
|
|
onEnableSharding: (shardIndex) => console.warn("TODO: enable community sharding for shardIndex:", shardIndex) // TODO community sharding backend
|
|
onClosed: destroy()
|
|
}
|
|
}
|
|
}
|
|
}
|