1
0
Fork 0
mirror of https://git.jami.net/savoirfairelinux/jami-client-qt.git synced 2025-08-04 06:45:45 +02:00

wizardView: add scroll view in every page

Also fix the view layout that is affected by client string update

Gitlab: #85
Change-Id: I0f34496325ebe15cc651204130a3a89e12b37d14
This commit is contained in:
Ming Rui Zhang 2020-09-17 16:09:06 -04:00
parent d06cfc962f
commit 47fd631d18
9 changed files with 475 additions and 335 deletions

View file

@ -53,6 +53,7 @@ Rectangle {
} }
readonly property int layoutSpacing: 12 readonly property int layoutSpacing: 12
readonly property int backButtonMargins: 20
property int textFontSize: 9 property int textFontSize: 9
property int wizardMode: WizardView.CREATE property int wizardMode: WizardView.CREATE
@ -123,7 +124,7 @@ Rectangle {
isRdv = false isRdv = false
createAccountPage.nameRegistrationUIState = UsernameLineEdit.NameRegistrationState.BLANK createAccountPage.nameRegistrationUIState = UsernameLineEdit.NameRegistrationState.BLANK
} else if (pageIndex === WizardView.WizardViewPageIndex.CREATEACCOUNTPAGE) { } else if (pageIndex === WizardView.WizardViewPageIndex.CREATEACCOUNTPAGE) {
createAccountPage.initializeOnShowUp() createAccountPage.initializeOnShowUp(false)
} else if (pageIndex === WizardView.WizardViewPageIndex.CREATESIPACCOUNTPAGE) { } else if (pageIndex === WizardView.WizardViewPageIndex.CREATESIPACCOUNTPAGE) {
createSIPAccountPage.initializeOnShowUp() createSIPAccountPage.initializeOnShowUp()
} else if (pageIndex === WizardView.WizardViewPageIndex.IMPORTFROMDEVICEPAGE) { } else if (pageIndex === WizardView.WizardViewPageIndex.IMPORTFROMDEVICEPAGE) {
@ -169,16 +170,45 @@ Rectangle {
onClicked: forceActiveFocus() onClicked: forceActiveFocus()
} }
StackLayout { ScrollView {
id: controlPanelStackView id: wizardViewScrollView
property ScrollBar vScrollBar: ScrollBar.vertical
anchors.fill: parent anchors.fill: parent
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
ScrollBar.vertical.policy: ScrollBar.AsNeeded
clip: true
contentHeight: controlPanelStackView.height
StackLayout {
id: controlPanelStackView
anchors.centerIn: parent
width: wizardViewScrollView.width
currentIndex: WizardView.WizardViewPageIndex.WELCOMEPAGE currentIndex: WizardView.WizardViewPageIndex.WELCOMEPAGE
Component.onCompleted: {
// avoid binding loop
height = Qt.binding(function (){
var index = currentIndex
=== WizardView.WizardViewPageIndex.CREATERENDEZVOUS ?
WizardView.WizardViewPageIndex.CREATEACCOUNTPAGE : currentIndex
return Math.max(
controlPanelStackView.itemAt(index).preferredHeight,
wizardViewScrollView.height)
})
}
WelcomePage { WelcomePage {
id: welcomePage id: welcomePage
Layout.alignment: Qt.AlignCenter
onWelcomePageRedirectPage: { onWelcomePageRedirectPage: {
changePageQML(toPageIndex) changePageQML(toPageIndex)
} }
@ -186,11 +216,18 @@ Rectangle {
onLeavePage: { onLeavePage: {
wizardViewIsClosed() wizardViewIsClosed()
} }
onScrollToBottom: {
if (welcomePage.preferredHeight > root.height)
wizardViewScrollView.vScrollBar.position = 1
}
} }
CreateAccountPage { CreateAccountPage {
id: createAccountPage id: createAccountPage
Layout.alignment: Qt.AlignCenter
onCreateAccount: { onCreateAccount: {
inputParaObject = {} inputParaObject = {}
inputParaObject["isRendezVous"] = isRdv inputParaObject["isRendezVous"] = isRdv
@ -213,6 +250,8 @@ Rectangle {
CreateSIPAccountPage { CreateSIPAccountPage {
id: createSIPAccountPage id: createSIPAccountPage
Layout.alignment: Qt.AlignCenter
onLeavePage: { onLeavePage: {
changePageQML(WizardView.WizardViewPageIndex.WELCOMEPAGE) changePageQML(WizardView.WizardViewPageIndex.WELCOMEPAGE)
} }
@ -236,6 +275,8 @@ Rectangle {
ImportFromBackupPage { ImportFromBackupPage {
id: importFromBackupPage id: importFromBackupPage
Layout.alignment: Qt.AlignCenter
onLeavePage: { onLeavePage: {
changePageQML(WizardView.WizardViewPageIndex.WELCOMEPAGE) changePageQML(WizardView.WizardViewPageIndex.WELCOMEPAGE)
} }
@ -255,6 +296,8 @@ Rectangle {
BackupKeyPage { BackupKeyPage {
id: backupKeysPage id: backupKeysPage
Layout.alignment: Qt.AlignCenter
onNeverShowAgainBoxClicked: { onNeverShowAgainBoxClicked: {
SettingsAdapter.setValue(Settings.NeverShowMeAgain, isChecked) SettingsAdapter.setValue(Settings.NeverShowMeAgain, isChecked)
} }
@ -288,6 +331,8 @@ Rectangle {
ImportFromDevicePage { ImportFromDevicePage {
id: importFromDevicePage id: importFromDevicePage
Layout.alignment: Qt.AlignCenter
onLeavePage: { onLeavePage: {
changePageQML(WizardView.WizardViewPageIndex.WELCOMEPAGE) changePageQML(WizardView.WizardViewPageIndex.WELCOMEPAGE)
} }
@ -308,6 +353,8 @@ Rectangle {
ConnectToAccountManagerPage { ConnectToAccountManagerPage {
id: connectToAccountManagerPage id: connectToAccountManagerPage
Layout.alignment: Qt.AlignCenter
onCreateAccount: { onCreateAccount: {
inputParaObject = {} inputParaObject = {}
inputParaObject["username"] inputParaObject["username"]
@ -327,6 +374,8 @@ Rectangle {
ProfilePage { ProfilePage {
id: profilePage id: profilePage
Layout.alignment: Qt.AlignCenter
function leave() { function leave() {
if (showBackUp) if (showBackUp)
changePageQML(WizardView.WizardViewPageIndex.BACKUPKEYSPAGE) changePageQML(WizardView.WizardViewPageIndex.BACKUPKEYSPAGE)
@ -348,3 +397,4 @@ Rectangle {
} }
} }
} }
}

View file

@ -28,6 +28,8 @@ import "../../settingsview/components"
Rectangle { Rectangle {
id: root id: root
property int preferredHeight: backupKeysPageColumnLayout.implicitHeight
signal neverShowAgainBoxClicked(bool isChecked) signal neverShowAgainBoxClicked(bool isChecked)
signal leavePage signal leavePage
signal export_Btn_FileDialogAccepted(bool accepted, string folderDir) signal export_Btn_FileDialogAccepted(bool accepted, string folderDir)
@ -62,6 +64,8 @@ Rectangle {
color: JamiTheme.backgroundColor color: JamiTheme.backgroundColor
ColumnLayout { ColumnLayout {
id: backupKeysPageColumnLayout
spacing: layoutSpacing spacing: layoutSpacing
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
@ -71,6 +75,7 @@ Rectangle {
spacing: layoutSpacing spacing: layoutSpacing
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.topMargin: backButtonMargins
Layout.preferredWidth: backupBtn.width Layout.preferredWidth: backupBtn.width
Label { Label {
@ -151,6 +156,7 @@ Rectangle {
MaterialButton { MaterialButton {
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: backButtonMargins
Layout.preferredWidth: preferredWidth Layout.preferredWidth: preferredWidth
Layout.preferredHeight: preferredHeight Layout.preferredHeight: preferredHeight

View file

@ -30,6 +30,7 @@ Rectangle {
property alias text_passwordManagerEditAlias: passwordManagerEdit.text property alias text_passwordManagerEditAlias: passwordManagerEdit.text
property alias text_accountManagerEditAlias: accountManagerEdit.text property alias text_accountManagerEditAlias: accountManagerEdit.text
property string errorText: "" property string errorText: ""
property int preferredHeight: connectToAccountManagerPageColumnLayout.implicitHeight
signal leavePage signal leavePage
signal createAccount signal createAccount
@ -59,6 +60,8 @@ Rectangle {
} }
ColumnLayout { ColumnLayout {
id: connectToAccountManagerPageColumnLayout
spacing: layoutSpacing spacing: layoutSpacing
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
@ -68,7 +71,8 @@ Rectangle {
spacing: layoutSpacing spacing: layoutSpacing
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: connectBtn.width Layout.topMargin: backButtonMargins
Layout.preferredWidth: implicitWidth
Label { Label {
text: JamiStrings.enterJAMSURL text: JamiStrings.enterJAMSURL
@ -108,10 +112,14 @@ Rectangle {
} }
Label { Label {
Layout.alignment: Qt.AlignLeft Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: connectBtn.width
text: JamiStrings.jamsCredentials text: JamiStrings.jamsCredentials
wrapMode: Text.Wrap wrapMode: Text.Wrap
onTextChanged: Layout.preferredHeight =
JamiQmlUtils.getTextBoundingRect(font, text).height
} }
MaterialLineEdit { MaterialLineEdit {
@ -153,6 +161,7 @@ Rectangle {
id: connectBtn id: connectBtn
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: errorLabel.visible ? 0 : backButtonMargins
Layout.preferredWidth: preferredWidth Layout.preferredWidth: preferredWidth
Layout.preferredHeight: preferredHeight Layout.preferredHeight: preferredHeight
@ -171,7 +180,10 @@ Rectangle {
} }
Label { Label {
id: errorLabel
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: backButtonMargins
visible: errorText.length !== 0 visible: errorText.length !== 0
text: errorText text: errorText

View file

@ -33,6 +33,11 @@ Rectangle {
property alias nameRegistrationUIState: usernameEdit.nameRegistrationState property alias nameRegistrationUIState: usernameEdit.nameRegistrationState
property bool isRendezVous: false property bool isRendezVous: false
property alias text_passwordEditAlias: passwordEdit.text property alias text_passwordEditAlias: passwordEdit.text
property int preferredHeight: {
if (createAccountStack.currentIndex === 0)
return usernameColumnLayout.implicitHeight
return passwordColumnLayout.implicitHeight
}
signal createAccount signal createAccount
signal leavePage signal leavePage
@ -94,19 +99,27 @@ Rectangle {
StackLayout { StackLayout {
id: createAccountStack id: createAccountStack
anchors.verticalCenter: root.verticalCenter anchors.fill: parent
anchors.horizontalCenter: root.horizontalCenter
currentIndex: 0
Rectangle {
color: JamiTheme.backgroundColor
ColumnLayout { ColumnLayout {
id: usernameColumnLayout
spacing: layoutSpacing spacing: layoutSpacing
Layout.preferredWidth: root.width anchors.centerIn: parent
Layout.alignment: Qt.AlignCenter
width: root.width
RowLayout { RowLayout {
spacing: layoutSpacing spacing: layoutSpacing
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.topMargin: backButtonMargins
Layout.preferredWidth: usernameEdit.width Layout.preferredWidth: usernameEdit.width
Label { Label {
@ -199,34 +212,53 @@ Rectangle {
onClicked: createAccountStack.currentIndex = onClicked: createAccountStack.currentIndex =
createAccountStack.currentIndex + 1 createAccountStack.currentIndex + 1
} }
AccountCreationStepIndicator {
Layout.topMargin: backButtonMargins
Layout.bottomMargin: backButtonMargins
Layout.alignment: Qt.AlignHCenter
spacing: layoutSpacing
steps: 3
currentStep: 1
}
}
} }
Rectangle {
color: JamiTheme.backgroundColor
ColumnLayout { ColumnLayout {
id: passwordColumnLayout
spacing: layoutSpacing spacing: layoutSpacing
Layout.preferredWidth: root.width anchors.centerIn: parent
Layout.alignment: Qt.AlignCenter width: root.width
RowLayout { RowLayout {
spacing: layoutSpacing spacing: layoutSpacing
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.topMargin: backButtonMargins
Layout.preferredWidth: usernameEdit.width Layout.preferredWidth: usernameEdit.width
Label { Label {
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
text: JamiStrings.createPassword text: JamiStrings.createPassword
font.pointSize: JamiTheme.textFontSize + 3 font.pointSize: JamiTheme.textFontSize + 3
}
Switch { Switch {
id: passwordSwitch id: passwordSwitch
anchors.left: parent.right Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
anchors.verticalCenter: parent.verticalCenter Layout.leftMargin: -layoutSpacing
} Layout.topMargin: 5
} }
Label { Label {
Layout.alignment: Qt.AlignRight Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
text: JamiStrings.optional text: JamiStrings.optional
color: "white" color: "white"
@ -274,18 +306,21 @@ Rectangle {
Label { Label {
Layout.alignment: Qt.AlignLeft Layout.alignment: Qt.AlignLeft
Layout.topMargin: 10 Layout.preferredWidth: createAccountButton.width - 10
Layout.leftMargin: (root.width - createAccountButton.width) / 2 Layout.leftMargin: (root.width - createAccountButton.width) / 2
text: JamiStrings.notePasswordRecovery text: JamiStrings.notePasswordRecovery
wrapMode: Text.WordWrap
font.pointSize: JamiTheme.textFontSize font.pointSize: JamiTheme.textFontSize
onFontChanged: Layout.preferredHeight =
JamiQmlUtils.getTextBoundingRect(font, text).height * 2
} }
MaterialButton { MaterialButton {
id: createAccountButton id: createAccountButton
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.topMargin: 10
Layout.preferredWidth: preferredWidth Layout.preferredWidth: preferredWidth
Layout.preferredHeight: preferredHeight Layout.preferredHeight: preferredHeight
@ -308,6 +343,17 @@ Rectangle {
createAccountStack.currentIndex += 1 createAccountStack.currentIndex += 1
} }
} }
AccountCreationStepIndicator {
Layout.topMargin: backButtonMargins
Layout.bottomMargin: backButtonMargins
Layout.alignment: Qt.AlignHCenter
spacing: layoutSpacing
steps: 3
currentStep: 2
}
}
} }
} }
@ -316,7 +362,7 @@ Rectangle {
anchors.left: parent.left anchors.left: parent.left
anchors.top: parent.top anchors.top: parent.top
anchors.margins: 20 anchors.margins: backButtonMargins
width: 35 width: 35
height: 35 height: 35
@ -336,14 +382,4 @@ Rectangle {
createAccountStack.currentIndex -= 1 createAccountStack.currentIndex -= 1
} }
} }
AccountCreationStepIndicator {
anchors.bottom: root.bottom
anchors.bottomMargin: 30
anchors.horizontalCenter: root.horizontalCenter
spacing: layoutSpacing
steps: 3
currentStep: usernameEdit.visible ? 1 : 2
}
} }

View file

@ -30,6 +30,7 @@ Rectangle {
property alias text_sipProxyEditAlias: sipProxyEdit.text property alias text_sipProxyEditAlias: sipProxyEdit.text
property alias text_sipUsernameEditAlias: sipUsernameEdit.text property alias text_sipUsernameEditAlias: sipUsernameEdit.text
property alias text_sipPasswordEditAlias: sipPasswordEdit.text property alias text_sipPasswordEditAlias: sipPasswordEdit.text
property int preferredHeight: createSIPAccountPageColumnLayout.implicitHeight
property var boothImgBase64: null property var boothImgBase64: null
@ -56,6 +57,8 @@ Rectangle {
} }
ColumnLayout { ColumnLayout {
id: createSIPAccountPageColumnLayout
spacing: layoutSpacing spacing: layoutSpacing
anchors.centerIn: parent anchors.centerIn: parent
@ -64,6 +67,7 @@ Rectangle {
spacing: layoutSpacing spacing: layoutSpacing
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.topMargin: backButtonMargins
Layout.preferredWidth: createAccountButton.width Layout.preferredWidth: createAccountButton.width
Label { Label {
@ -143,6 +147,7 @@ Rectangle {
id: createAccountButton id: createAccountButton
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: backButtonMargins
Layout.preferredWidth: preferredWidth Layout.preferredWidth: preferredWidth
Layout.preferredHeight: preferredHeight Layout.preferredHeight: preferredHeight

View file

@ -31,6 +31,7 @@ Rectangle {
property alias text_passwordFromBackupEditAlias: passwordFromBackupEdit.text property alias text_passwordFromBackupEditAlias: passwordFromBackupEdit.text
property string fileImportBtnText: JamiStrings.archive property string fileImportBtnText: JamiStrings.archive
property int preferredHeight: importFromBackupPageColumnLayout.implicitHeight
property string filePath: "" property string filePath: ""
property string errorText: "" property string errorText: ""
@ -72,6 +73,8 @@ Rectangle {
} }
ColumnLayout { ColumnLayout {
id: importFromBackupPageColumnLayout
spacing: layoutSpacing spacing: layoutSpacing
anchors.horizontalCenter: parent.horizontalCenter anchors.horizontalCenter: parent.horizontalCenter
@ -79,6 +82,7 @@ Rectangle {
Text { Text {
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.topMargin: backButtonMargins
text: qsTr("Import from backup") text: qsTr("Import from backup")
font.pointSize: JamiTheme.menuFontSize font.pointSize: JamiTheme.menuFontSize
@ -145,6 +149,7 @@ Rectangle {
id: connectBtn id: connectBtn
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: errorLabel.visible ? 0 : backButtonMargins
Layout.preferredWidth: preferredWidth Layout.preferredWidth: preferredWidth
Layout.preferredHeight: preferredHeight Layout.preferredHeight: preferredHeight
@ -166,7 +171,10 @@ Rectangle {
} }
Label { Label {
id: errorLabel
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: backButtonMargins
visible: errorText.length !== 0 visible: errorText.length !== 0

View file

@ -29,6 +29,7 @@ Rectangle {
property alias text_pinFromDeviceAlias: pinFromDevice.text property alias text_pinFromDeviceAlias: pinFromDevice.text
property alias text_passwordFromDeviceAlias: passwordFromDevice.text property alias text_passwordFromDeviceAlias: passwordFromDevice.text
property string errorText: "" property string errorText: ""
property int preferredHeight: importFromDevicePageColumnLayout.implicitHeight
signal leavePage signal leavePage
signal importAccount signal importAccount
@ -56,6 +57,8 @@ Rectangle {
} }
ColumnLayout { ColumnLayout {
id: importFromDevicePageColumnLayout
spacing: layoutSpacing spacing: layoutSpacing
// Prevent possible anchor loop detected on centerIn. // Prevent possible anchor loop detected on centerIn.
@ -64,6 +67,7 @@ Rectangle {
Text { Text {
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.topMargin: backButtonMargins
text: JamiStrings.mainAccountPassword text: JamiStrings.mainAccountPassword
font.pointSize: JamiTheme.menuFontSize font.pointSize: JamiTheme.menuFontSize
@ -125,6 +129,7 @@ Rectangle {
id: connectBtn id: connectBtn
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: errorLabel.visible ? 0 : backButtonMargins
Layout.preferredWidth: preferredWidth Layout.preferredWidth: preferredWidth
Layout.preferredHeight: preferredHeight Layout.preferredHeight: preferredHeight
@ -140,7 +145,10 @@ Rectangle {
} }
Label { Label {
id: errorLabel
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: backButtonMargins
visible: errorText.length !== 0 visible: errorText.length !== 0

View file

@ -26,6 +26,8 @@ import "../../commoncomponents"
Rectangle { Rectangle {
id: root id: root
property int preferredHeight: profilePageColumnLayout.implicitHeight
function initializeOnShowUp() { function initializeOnShowUp() {
clearAllTextFields() clearAllTextFields()
boothImgBase64 = "" boothImgBase64 = ""
@ -51,6 +53,8 @@ Rectangle {
property bool isRdv: false property bool isRdv: false
ColumnLayout { ColumnLayout {
id: profilePageColumnLayout
spacing: layoutSpacing spacing: layoutSpacing
width: parent.width width: parent.width
@ -60,6 +64,7 @@ Rectangle {
RowLayout { RowLayout {
spacing: layoutSpacing spacing: layoutSpacing
Layout.topMargin: backButtonMargins
Layout.preferredWidth: saveProfileBtn.width Layout.preferredWidth: saveProfileBtn.width
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
@ -139,15 +144,15 @@ Rectangle {
leavePage() leavePage()
} }
} }
}
AccountCreationStepIndicator { AccountCreationStepIndicator {
anchors.bottom: root.bottom Layout.topMargin: backButtonMargins
anchors.bottomMargin: 30 Layout.bottomMargin: backButtonMargins
anchors.horizontalCenter: root.horizontalCenter Layout.alignment: Qt.AlignHCenter
spacing: layoutSpacing spacing: layoutSpacing
steps: 3 steps: 3
currentStep: 3 currentStep: 3
} }
} }
}

View file

@ -30,12 +30,17 @@ import "../../commoncomponents"
Rectangle { Rectangle {
id: root id: root
property int preferredHeight: welcomePageColumnLayout.implicitHeight
signal welcomePageRedirectPage(int toPageIndex) signal welcomePageRedirectPage(int toPageIndex)
signal leavePage signal leavePage
signal scrollToBottom
color: JamiTheme.backgroundColor color: JamiTheme.backgroundColor
ColumnLayout { ColumnLayout {
id: welcomePageColumnLayout
anchors.centerIn: parent anchors.centerIn: parent
spacing: layoutSpacing spacing: layoutSpacing
@ -44,6 +49,7 @@ Rectangle {
id: welcomeLabel id: welcomeLabel
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.topMargin: backButtonMargins
Layout.preferredHeight: contentHeight Layout.preferredHeight: contentHeight
text: qsTr("Welcome to") text: qsTr("Welcome to")
@ -154,6 +160,7 @@ Rectangle {
id: showAdvancedButton id: showAdvancedButton
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: newSIPAccountButton.visible ? 0 : backButtonMargins
Layout.preferredWidth: preferredWidth Layout.preferredWidth: preferredWidth
Layout.preferredHeight: preferredHeight Layout.preferredHeight: preferredHeight
@ -203,6 +210,7 @@ Rectangle {
id: newSIPAccountButton id: newSIPAccountButton
Layout.alignment: Qt.AlignCenter Layout.alignment: Qt.AlignCenter
Layout.bottomMargin: backButtonMargins
Layout.preferredWidth: preferredWidth Layout.preferredWidth: preferredWidth
Layout.preferredHeight: preferredHeight Layout.preferredHeight: preferredHeight
@ -220,6 +228,8 @@ Rectangle {
welcomePageRedirectPage(2) welcomePageRedirectPage(2)
} }
} }
onHeightChanged: scrollToBottom()
} }
HoverableButton { HoverableButton {
@ -227,7 +237,7 @@ Rectangle {
anchors.left: parent.left anchors.left: parent.left
anchors.top: parent.top anchors.top: parent.top
anchors.margins: 20 anchors.margins: backButtonMargins
Connections { Connections {
target: LRCInstance target: LRCInstance