status-desktop/ui/app/AppLayouts/Chat/panels/communities/CommunityOverviewSettingsPa...

156 lines
4.2 KiB
QML

import QtQuick 2.14
import QtQuick.Layouts 1.14
import QtQuick.Controls 2.14
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Controls 0.1
import StatusQ.Components 0.1
import "../../layouts"
StackLayout {
id: root
property string name
property string description
property string image
property color color
property bool editable: false
property bool owned: false
signal edited(Item item) // item containing edited fields (name, description, image, color)
clip: true
SettingsPageLayout {
title: qsTr("Overview")
content: ColumnLayout {
spacing: 16
RowLayout {
Layout.fillWidth: true
spacing: 16
StatusSmartIdenticon {
name: root.name
icon {
width: 80
height: 80
isLetterIdenticon: !root.image
color: root.color
letterSize: width / 2.4
}
image {
width: 80
height: 80
source: root.image
}
}
ColumnLayout {
Layout.fillWidth: true
StatusBaseText {
id: nameText
Layout.fillWidth: true
font.pixelSize: 24
color: Theme.palette.directColor1
wrapMode: Text.WordWrap
text: root.name
}
StatusBaseText {
id: descriptionText
Layout.fillWidth: true
font.pixelSize: 15
color: Theme.palette.directColor1
wrapMode: Text.WordWrap
text: root.description
}
}
StatusButton {
visible: root.editable
text: qsTr("Edit Community")
onClicked: root.currentIndex = 1
}
}
Rectangle {
Layout.fillWidth: true
implicitHeight: 1
visible: root.editable
color: Theme.palette.statusPopupMenu.separatorColor
}
RowLayout {
Layout.fillWidth: true
visible: root.owned
StatusIcon {
icon: "info"
}
StatusBaseText {
Layout.fillWidth: true
text: qsTr("This node is the Community Owner Node. For your Community to function correctly try to keep this computer with Status running and onlinie as much as possible.")
font.pixelSize: 15
color: Theme.palette.directColor1
wrapMode: Text.WordWrap
}
}
Item {
Layout.fillHeight: true
}
}
}
SettingsPageLayout {
id: editCommunityPage
previousPage: qsTr("Overview")
title: qsTr("Edit Community")
content: CommunityEditSettingsPanel {
name: root.name
description: root.description
color: root.color
image: root.image
Component.onCompleted: {
editCommunityPage.dirty =
Qt.binding(() => {
return root.name != name ||
root.description != description ||
root.image != image ||
root.color != color
})
}
}
onPreviousPageClicked: {
if (dirty) {
notifyDirty()
} else {
root.currentIndex = 0
}
}
onSaveChangesClicked: {
root.currentIndex = 0
root.edited(contentItem)
reloadContent()
}
onResetChangesClicked: reloadContent()
}
}