87 lines
2.2 KiB
QML
87 lines
2.2 KiB
QML
|
import QtQuick 2.14
|
||
|
import QtQuick.Controls 2.14
|
||
|
import QtQuick.Layouts 1.1
|
||
|
|
||
|
import StatusQ.Core 0.1
|
||
|
import StatusQ.Core.Theme 0.1
|
||
|
import StatusQ.Controls 0.1
|
||
|
import StatusQ.Components 0.1
|
||
|
import StatusQ.Popups 0.1
|
||
|
|
||
|
StatusModal {
|
||
|
id: root
|
||
|
|
||
|
property string name
|
||
|
property string introMessage
|
||
|
property url imageSrc
|
||
|
|
||
|
signal joined
|
||
|
|
||
|
// Code below is needed because StatusModal content padding is messed up
|
||
|
// FIXME: when StatusModal is reworked
|
||
|
width: undefined // popup is able to determine size from its content
|
||
|
topPadding: 64 + 16 // 64 is header height
|
||
|
leftPadding: 16
|
||
|
rightPadding: 16
|
||
|
bottomPadding: 71 + 16 // 71 is footer height
|
||
|
|
||
|
header.title: qsTr("Welcome to %1").arg(name)
|
||
|
|
||
|
rightButtons: [
|
||
|
StatusButton {
|
||
|
text: qsTr("Join %1").arg(root.name)
|
||
|
enabled: checkBox.checked
|
||
|
onClicked: {
|
||
|
root.joined()
|
||
|
root.close()
|
||
|
}
|
||
|
}
|
||
|
]
|
||
|
|
||
|
ColumnLayout {
|
||
|
anchors.fill: parent
|
||
|
|
||
|
spacing: 24
|
||
|
|
||
|
StatusRoundedImage {
|
||
|
Layout.alignment: Qt.AlignCenter
|
||
|
Layout.preferredHeight: 64
|
||
|
Layout.preferredWidth: 64
|
||
|
|
||
|
visible: image.status == Image.Loading || image.status == Image.Ready
|
||
|
image.source: root.imageSrc
|
||
|
}
|
||
|
|
||
|
ScrollView {
|
||
|
Layout.preferredWidth: contentWidth
|
||
|
Layout.minimumWidth: 300
|
||
|
|
||
|
Layout.fillHeight: true
|
||
|
Layout.preferredHeight: contentHeight
|
||
|
Layout.maximumHeight: 400
|
||
|
|
||
|
contentWidth: messageContent.width
|
||
|
contentHeight: messageContent.height
|
||
|
|
||
|
clip: true
|
||
|
|
||
|
StatusBaseText {
|
||
|
id: messageContent
|
||
|
|
||
|
width: Math.min(implicitWidth, 640)
|
||
|
|
||
|
text: root.introMessage !== "" ? root.introMessage : qsTr("Community <b>%1</b> has no intro message...").arg(root.name)
|
||
|
clip: true
|
||
|
color: Theme.palette.directColor1
|
||
|
wrapMode: Text.WordWrap
|
||
|
}
|
||
|
}
|
||
|
|
||
|
StatusCheckBox {
|
||
|
id: checkBox
|
||
|
Layout.alignment: Qt.AlignCenter
|
||
|
text: qsTr("I agree with the above")
|
||
|
}
|
||
|
}
|
||
|
}
|