mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-03 02:06:19 +00:00
3509de8673
This adds a feature flag for the discord import tool so we can start landing individual pieces of the feature without it being fully implemented. It also introduces the modal chooser for creating new communities but it doesn't do anything more than that, as of this commit Closes #6843
233 lines
7.7 KiB
QML
233 lines
7.7 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"
|
|
|
|
import utils 1.0
|
|
import shared.panels 1.0
|
|
|
|
StackLayout {
|
|
id: root
|
|
|
|
property string communityId
|
|
property string name
|
|
property string description
|
|
property string introMessage
|
|
property string outroMessage
|
|
property string logoImageData
|
|
property string bannerImageData
|
|
property rect bannerCropRect
|
|
property color color
|
|
property string tags
|
|
property string selectedTags
|
|
property bool archiveSupportEnabled
|
|
property bool requestToJoinEnabled
|
|
property bool pinMessagesEnabled
|
|
|
|
property bool archiveSupportOptionVisible: false
|
|
property bool editable: false
|
|
property bool owned: false
|
|
|
|
signal edited(Item item) // item containing edited fields (name, description, logoImagePath, color, options, etc..)
|
|
|
|
signal inviteNewPeopleClicked
|
|
signal airdropTokensClicked
|
|
signal backUpClicked
|
|
|
|
clip: true
|
|
|
|
SettingsPageLayout {
|
|
title: qsTr("Overview")
|
|
|
|
content: ColumnLayout {
|
|
spacing: 16
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
|
|
spacing: 16
|
|
|
|
StatusSmartIdenticon {
|
|
objectName: "communityOverviewSettingsPanelIdenticon"
|
|
name: root.name
|
|
|
|
icon {
|
|
width: 80
|
|
height: 80
|
|
isLetterIdenticon: !root.logoImageData
|
|
color: root.color
|
|
letterSize: width / 2.4
|
|
}
|
|
|
|
image {
|
|
width: 80
|
|
height: 80
|
|
source: root.logoImageData
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
Layout.fillWidth: true
|
|
|
|
StatusBaseText {
|
|
id: nameText
|
|
objectName: "communityOverviewSettingsCommunityName"
|
|
Layout.fillWidth: true
|
|
font.pixelSize: 24
|
|
color: Theme.palette.directColor1
|
|
wrapMode: Text.WordWrap
|
|
text: root.name
|
|
}
|
|
|
|
StatusBaseText {
|
|
id: descriptionText
|
|
objectName: "communityOverviewSettingsCommunityDescription"
|
|
Layout.fillWidth: true
|
|
font.pixelSize: 15
|
|
color: Theme.palette.directColor1
|
|
wrapMode: Text.WordWrap
|
|
text: root.description
|
|
}
|
|
}
|
|
|
|
StatusButton {
|
|
objectName: "communityOverviewSettingsEditCommunityButton"
|
|
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
|
|
}
|
|
|
|
RowLayout {
|
|
CommunityBanner {
|
|
text: qsTr("Welcome to your community!")
|
|
buttonText: qsTr("Invite new people")
|
|
icon.name: "invite-users"
|
|
onButtonClicked: root.inviteNewPeopleClicked()
|
|
}
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
CommunityBanner {
|
|
text: qsTr("Try an airdrop to reward your community for engagement!")
|
|
buttonText: qsTr("Airdrop Tokens")
|
|
icon.name: "airdrop"
|
|
onButtonClicked: root.airdropTokensClicked()
|
|
}
|
|
|
|
Item {
|
|
Layout.fillWidth: true
|
|
}
|
|
|
|
CommunityBanner {
|
|
text: qsTr("Back up community key")
|
|
buttonText: qsTr("Back up")
|
|
icon.name: "objects"
|
|
onButtonClicked: root.backUpClicked()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
SettingsPageLayout {
|
|
id: editCommunityPage
|
|
|
|
previousPage: qsTr("Overview")
|
|
title: qsTr("Edit Community")
|
|
editable: true
|
|
|
|
content: CommunityEditSettingsPanel {
|
|
name: root.name
|
|
description: root.description
|
|
introMessage: root.introMessage
|
|
outroMessage: root.outroMessage
|
|
tags: root.tags
|
|
selectedTags: root.selectedTags
|
|
color: root.color
|
|
logoImageData: root.logoImageData
|
|
bannerImageData: root.bannerImageData
|
|
options {
|
|
archiveSupportOptionVisible: root.archiveSupportOptionVisible
|
|
archiveSupportEnabled: root.archiveSupportEnabled
|
|
requestToJoinEnabled: root.requestToJoinEnabled
|
|
pinMessagesEnabled: root.pinMessagesEnabled
|
|
}
|
|
|
|
bottomReservedSpace: editCommunityPage.settingsDirtyToastMessageImplicitSize
|
|
bottomReservedSpaceActive: editCommunityPage.dirty
|
|
|
|
Component.onCompleted: {
|
|
editCommunityPage.dirty =
|
|
Qt.binding(() => {
|
|
return root.name != name ||
|
|
root.description != description ||
|
|
root.introMessage != introMessage ||
|
|
root.outroMessage != outroMessage ||
|
|
root.archiveSupportEnabled != options.archiveSupportEnabled ||
|
|
root.requestToJoinEnabled != options.requestToJoinEnabled ||
|
|
root.pinMessagesEnabled != options.pinMessagesEnabled ||
|
|
root.color != color ||
|
|
root.selectedTags != selectedTags ||
|
|
logoImagePath.length > 0 ||
|
|
isValidRect(logoCropRect) ||
|
|
bannerPath.length > 0 ||
|
|
isValidRect(bannerCropRect)
|
|
})
|
|
function isValidRect(r /*rect*/) { return r.width !== 0 && r.height !== 0 }
|
|
}
|
|
}
|
|
|
|
onPreviousPageClicked: {
|
|
if (dirty) {
|
|
notifyDirty()
|
|
} else {
|
|
root.currentIndex = 0
|
|
}
|
|
}
|
|
|
|
onSaveChangesClicked: {
|
|
root.currentIndex = 0
|
|
root.edited(contentItem)
|
|
reloadContent()
|
|
}
|
|
|
|
onResetChangesClicked: reloadContent()
|
|
}
|
|
}
|