status-desktop/ui/app/AppLayouts/Communities/controls/LogoPicker.qml

78 lines
2.0 KiB
QML

import QtQuick 2.14
import QtQuick.Layouts 1.14
import QtQuick.Controls 2.14
import QtQuick.Dialogs 1.3
import QtGraphicalEffects 1.13
import utils 1.0
import shared.panels 1.0
import shared.popups 1.0
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Layout 0.1
import StatusQ.Components 0.1
import StatusQ.Popups 0.1
import StatusQ.Controls 0.1
import StatusQ.Controls.Validators 0.1
Item {
id: root
property alias source: editor.source
property alias cropRect: editor.cropRect
property alias imageData: editor.dataImage
readonly property bool hasSelectedImage: localAppSettings.testEnvironment ? true : editor.userSelectedImage
implicitHeight: layout.childrenRect.height
function validate() {
editor.isError = !hasSelectedImage
}
ColumnLayout {
id: layout
anchors.fill: parent
spacing: 16
StatusBaseText {
id: label
Layout.fillWidth: true
text: qsTr("Community logo")
color: Theme.palette.directColor1
horizontalAlignment: Qt.AlignLeft
}
EditCroppedImagePanel {
id: editor
Layout.preferredWidth: 128
Layout.preferredHeight: Layout.preferredWidth / aspectRatio
Layout.alignment: Qt.AlignHCenter
imageFileDialogTitle: qsTr("Choose an image as logo")
title: qsTr("Community logo")
acceptButtonText: qsTr("Make this my Community logo")
NoImageUploadedPanel {
anchors.centerIn: parent
visible: !editor.userSelectedImage && !root.imageData
}
}
StatusBaseText {
Layout.fillWidth: true
visible: editor.isError
text: qsTr("Upload a community logo")
font.pixelSize: Theme.tertiaryTextFontSize
color: Theme.palette.dangerColor1
wrapMode: Text.WordWrap
horizontalAlignment: Text.AlignHCenter
}
}
}