mirror of
https://git.mirrors.martin98.com/https://github.com/Ultimaker/Cura
synced 2025-05-09 16:49:00 +08:00

Discussed with UX what the best approach would be. Both came to the conclusion that this is the simplest and more aesthetic approach. The extra white space at the bottom and height of the first screen is still acceptable according to UX. Contributes to CURA-8290_whats_new_text
185 lines
5.7 KiB
QML
185 lines
5.7 KiB
QML
// Copyright (c) 2021 Ultimaker B.V.
|
|
// Cura is released under the terms of the LGPLv3 or higher.
|
|
|
|
import QtQuick 2.10
|
|
import QtQuick.Controls 2.3
|
|
import QtQuick.Layouts 1.3
|
|
|
|
import UM 1.3 as UM
|
|
import Cura 1.1 as Cura
|
|
|
|
|
|
//
|
|
// This component contains the content for the "What's new in Ultimaker Cura" page of the welcome on-boarding process.
|
|
// Previously this was just the changelog, but now it will just have the larger stories, the changelog has its own page.
|
|
//
|
|
Item
|
|
{
|
|
property var manager: CuraApplication.getWhatsNewPagesModel()
|
|
|
|
UM.I18nCatalog { id: catalog; name: "cura" }
|
|
|
|
Label
|
|
{
|
|
id: titleLabel
|
|
anchors.top: parent.top
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
text: catalog.i18nc("@label", "What's New")
|
|
color: UM.Theme.getColor("primary_button")
|
|
font: UM.Theme.getFont("huge")
|
|
renderType: Text.NativeRendering
|
|
}
|
|
|
|
Rectangle
|
|
{
|
|
anchors
|
|
{
|
|
top: titleLabel.bottom
|
|
topMargin: UM.Theme.getSize("default_margin").width
|
|
bottom: whatsNewDots.top
|
|
bottomMargin: UM.Theme.getSize("narrow_margin").width
|
|
left: parent.left
|
|
right: parent.right
|
|
}
|
|
|
|
color: UM.Theme.getColor("viewport_overlay")
|
|
|
|
StackLayout
|
|
{
|
|
id: whatsNewViewport
|
|
|
|
anchors
|
|
{
|
|
top: parent.top
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
height: parent.height
|
|
width: parent.width
|
|
|
|
currentIndex: whatsNewDots.currentIndex
|
|
|
|
Repeater
|
|
{
|
|
|
|
model: manager.subpageCount
|
|
|
|
Rectangle
|
|
{
|
|
Layout.alignment: Qt.AlignHCenter
|
|
color: UM.Theme.getColor("viewport_overlay")
|
|
width: whatsNewViewport.width
|
|
height: whatsNewViewport.height
|
|
|
|
AnimatedImage
|
|
{
|
|
id: subpageImage
|
|
|
|
anchors
|
|
{
|
|
top: parent.top
|
|
topMargin: UM.Theme.getSize("thick_margin").width
|
|
left: parent.left
|
|
leftMargin: UM.Theme.getSize("thick_margin").width
|
|
right: parent.right
|
|
rightMargin: UM.Theme.getSize("thick_margin").width
|
|
}
|
|
width: Math.round(parent.width - (UM.Theme.getSize("thick_margin").height * 2))
|
|
fillMode: Image.PreserveAspectFit
|
|
onStatusChanged: playing = (status == AnimatedImage.Ready)
|
|
|
|
source: manager.getSubpageImageSource(index)
|
|
}
|
|
|
|
Cura.ScrollableTextArea
|
|
{
|
|
id: subpageText
|
|
|
|
anchors
|
|
{
|
|
top: subpageImage.bottom
|
|
topMargin: UM.Theme.getSize("default_margin").height
|
|
bottom: parent.bottom
|
|
bottomMargin: UM.Theme.getSize("thin_margin").height
|
|
left: subpageImage.left
|
|
right: subpageImage.right
|
|
}
|
|
|
|
ScrollBar.horizontal.policy: ScrollBar.AlwaysOff
|
|
|
|
back_color: UM.Theme.getColor("viewport_overlay")
|
|
do_borders: false
|
|
|
|
textArea.wrapMode: TextEdit.Wrap
|
|
textArea.text: manager.getSubpageText(index)
|
|
textArea.textFormat: Text.RichText
|
|
textArea.readOnly: true
|
|
textArea.font: UM.Theme.getFont("default")
|
|
textArea.onLinkActivated: Qt.openUrlExternally(link)
|
|
textArea.leftPadding: 0
|
|
textArea.rightPadding: 0
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
PageIndicator
|
|
{
|
|
id: whatsNewDots
|
|
|
|
currentIndex: whatsNewViewport.currentIndex
|
|
count: whatsNewViewport.count
|
|
interactive: true
|
|
|
|
anchors
|
|
{
|
|
bottom: whatsNewNextButton.top
|
|
bottomMargin: UM.Theme.getSize("wide_margin").height
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
|
|
delegate:
|
|
Rectangle
|
|
{
|
|
width: UM.Theme.getSize("thin_margin").width
|
|
height: UM.Theme.getSize("thin_margin").height
|
|
|
|
radius: width / 2
|
|
color:
|
|
index === whatsNewViewport.currentIndex ?
|
|
UM.Theme.getColor("primary") :
|
|
UM.Theme.getColor("secondary_button_shadow")
|
|
}
|
|
}
|
|
|
|
Item
|
|
{
|
|
id: bottomSpacer
|
|
anchors.bottom: whatsNewNextButton.top
|
|
height: UM.Theme.getSize("default_margin").height / 2
|
|
width: UM.Theme.getSize("default_margin").width / 2
|
|
}
|
|
|
|
Cura.TertiaryButton
|
|
{
|
|
id: whatsNewNextButton
|
|
anchors.left: parent.left
|
|
anchors.bottom: parent.bottom
|
|
text: base.currentItem.next_page_button_text
|
|
onClicked: base.showNextPage()
|
|
}
|
|
|
|
Cura.PrimaryButton
|
|
{
|
|
id: whatsNewSubpageButton
|
|
anchors.right: parent.right
|
|
anchors.bottom: parent.bottom
|
|
text: catalog.i18nc("@button", "Next")
|
|
onClicked:
|
|
whatsNewDots.currentIndex === (whatsNewDots.count - 1) ?
|
|
base.showNextPage() :
|
|
++whatsNewDots.currentIndex
|
|
}
|
|
}
|