mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-22 11:38:57 +00:00
156 lines
5.5 KiB
QML
156 lines
5.5 KiB
QML
|
import QtQuick 2.15
|
||
|
import QtQuick.Controls 2.15
|
||
|
import QtGraphicalEffects 1.15
|
||
|
import QtQuick.Layouts 1.15
|
||
|
|
||
|
import StatusQ.Core 0.1
|
||
|
import StatusQ.Components 0.1
|
||
|
import StatusQ.Controls 0.1
|
||
|
import StatusQ.Core.Theme 0.1
|
||
|
|
||
|
import AppLayouts.Onboarding2.components 1.0
|
||
|
|
||
|
import utils 1.0
|
||
|
|
||
|
OnboardingPage {
|
||
|
id: root
|
||
|
|
||
|
title: qsTr("Welcome to Status")
|
||
|
|
||
|
signal createProfileRequested()
|
||
|
signal loginRequested()
|
||
|
|
||
|
signal privacyPolicyRequested()
|
||
|
signal termsOfUseRequested()
|
||
|
|
||
|
QtObject {
|
||
|
id: d
|
||
|
readonly property ListModel newsModel: ListModel {
|
||
|
ListElement {
|
||
|
primary: qsTr("Own your crypto")
|
||
|
secondary: qsTr("Use the leading multi-chain self-custodial wallet")
|
||
|
image: "onboarding/carousel/crypto"
|
||
|
}
|
||
|
ListElement {
|
||
|
primary: qsTr("Chat privately with friends")
|
||
|
secondary: qsTr("With full metadata privacy and e2e encryption")
|
||
|
image: "onboarding/carousel/chat"
|
||
|
}
|
||
|
ListElement {
|
||
|
primary: qsTr("Store your assets on Keycard")
|
||
|
secondary: qsTr("Be safe with secure cold wallet")
|
||
|
image: "onboarding/carousel/keycard"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
contentItem: RowLayout {
|
||
|
spacing: root.padding
|
||
|
|
||
|
// left part (welcome + buttons)
|
||
|
Item {
|
||
|
Layout.preferredWidth: root.availableWidth/2 - root.horizontalPadding
|
||
|
Layout.fillHeight: true
|
||
|
|
||
|
ColumnLayout {
|
||
|
width: Math.min(400, parent.width)
|
||
|
spacing: 28
|
||
|
anchors.centerIn: parent
|
||
|
anchors.verticalCenterOffset: -headerText.height/2
|
||
|
|
||
|
StatusImage {
|
||
|
Layout.preferredWidth: 90
|
||
|
Layout.preferredHeight: 90
|
||
|
Layout.alignment: Qt.AlignHCenter
|
||
|
source: Theme.png("status")
|
||
|
mipmap: true
|
||
|
layer.enabled: true
|
||
|
layer.effect: DropShadow {
|
||
|
horizontalOffset: 0
|
||
|
verticalOffset: 4
|
||
|
radius: 12
|
||
|
samples: 25
|
||
|
spread: 0.2
|
||
|
color: Theme.palette.dropShadow
|
||
|
}
|
||
|
}
|
||
|
|
||
|
StatusBaseText {
|
||
|
id: headerText
|
||
|
Layout.fillWidth: true
|
||
|
text: root.title
|
||
|
font.pixelSize: 40
|
||
|
font.bold: true
|
||
|
wrapMode: Text.WordWrap
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
}
|
||
|
|
||
|
StatusBaseText {
|
||
|
Layout.fillWidth: true
|
||
|
text: qsTr("The open-source, decentralised wallet and messenger")
|
||
|
wrapMode: Text.WordWrap
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
}
|
||
|
}
|
||
|
|
||
|
ColumnLayout {
|
||
|
anchors.horizontalCenter: parent.horizontalCenter
|
||
|
anchors.bottom: parent.bottom
|
||
|
anchors.bottomMargin: Theme.xlPadding
|
||
|
width: Math.min(320, parent.width)
|
||
|
spacing: 12
|
||
|
|
||
|
StatusButton {
|
||
|
objectName: "btnCreateProfile"
|
||
|
Layout.fillWidth: true
|
||
|
text: qsTr("Create profile")
|
||
|
onClicked: root.createProfileRequested()
|
||
|
}
|
||
|
StatusButton {
|
||
|
objectName: "btnLogin"
|
||
|
Layout.fillWidth: true
|
||
|
text: qsTr("Log in")
|
||
|
onClicked: root.loginRequested()
|
||
|
normalColor: "transparent"
|
||
|
borderWidth: 1
|
||
|
borderColor: Theme.palette.baseColor2
|
||
|
}
|
||
|
StatusBaseText {
|
||
|
objectName: "approvalLinks"
|
||
|
Layout.fillWidth: true
|
||
|
Layout.topMargin: Theme.halfPadding
|
||
|
text: qsTr("By proceeding you accept Status<br>%1 and %2")
|
||
|
.arg(Utils.getStyledLink(qsTr("Terms of Use"), "#terms", hoveredLink, Theme.palette.primaryColor1, Theme.palette.primaryColor1, false))
|
||
|
.arg(Utils.getStyledLink(qsTr("Privacy Policy"), "#privacy", hoveredLink, Theme.palette.primaryColor1, Theme.palette.primaryColor1, false))
|
||
|
textFormat: Text.RichText
|
||
|
font.pixelSize: Theme.tertiaryTextFontSize
|
||
|
lineHeightMode: Text.FixedHeight
|
||
|
lineHeight: 16
|
||
|
wrapMode: Text.WordWrap
|
||
|
color: Theme.palette.baseColor1
|
||
|
horizontalAlignment: Text.AlignHCenter
|
||
|
onLinkActivated: {
|
||
|
if (link == "#terms")
|
||
|
root.termsOfUseRequested()
|
||
|
else if (link == "#privacy")
|
||
|
root.privacyPolicyRequested()
|
||
|
}
|
||
|
|
||
|
HoverHandler {
|
||
|
// Qt CSS doesn't support custom cursor shape
|
||
|
cursorShape: !!parent.hoveredLink ? Qt.PointingHandCursor : undefined
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
// right part (news carousel)
|
||
|
NewsCarousel {
|
||
|
Layout.preferredWidth: root.availableWidth/2 - root.horizontalPadding
|
||
|
Layout.fillHeight: true
|
||
|
newsModel: d.newsModel
|
||
|
}
|
||
|
}
|
||
|
}
|