Files
qt-creator/share/qtcreator/qmldesigner/welcomepage/TourThumbnailDelegate.qml
Thomas Hartmann b47e074f62 QmlDesigner: Add QML source
This adds the QML source for the Qt Design Studio Welcome page.
The source code was private before.

Change-Id: I5dcb900ed9a17b1bc3bbcaf50f649ebeb61cc8bf
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
2024-01-17 09:46:02 +00:00

165 lines
5.0 KiB
QML

// Copyright (C) 2024 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick.Controls
import WelcomeScreen 1.0
Item {
id: root
width: Constants.thumbnailSize
height: Constants.thumbnailSize
state: "normal"
clip: true
property bool complete: root.currentSlide === root.endSlide
// Needs to be set from the current slide show and user progress
property int currentSlide: 0
property int endSlide: 10
signal clicked()
Rectangle {
id: background
radius: 10
color: Constants.currentNormalThumbnailBackground
anchors.fill: parent
property bool multiline: (tourNameLabelMetric.width >= tourNameLabel.width)
TextMetrics {
id: tourNameLabelMetric
text: tourNameLabel.text
font: tourNameLabel.font
}
Image {
id: thumbnailPlaceholder
source: thumbnail
anchors.fill: parent
anchors.bottomMargin: Constants.imageBottomMargin
anchors.rightMargin: Constants.thumbnailMargin
anchors.leftMargin: Constants.thumbnailMargin
anchors.topMargin: Constants.thumbnailMargin
fillMode: Image.PreserveAspectFit
verticalAlignment: Image.AlignTop
mipmap: true
}
Rectangle {
id: tourNameBackground
height: background.multiline ? Constants.titleHeightMultiline : Constants.titleHeight
color: "#e5b0e4"
radius: 3
anchors.left: parent.left
anchors.right: parent.right
anchors.top: thumbnailPlaceholder.bottom
anchors.topMargin: Constants.titleBackgroundTopMargin
anchors.leftMargin: Constants.thumbnailMargin
anchors.rightMargin: Constants.thumbnailMargin
Text {
id: tourNameLabel
color: Constants.currentGlobalText
font.pixelSize: 16
text: title
wrapMode: Text.WordWrap
maximumLineCount: 2
clip: false
anchors.verticalCenter: parent.verticalCenter
anchors.left: parent.left
anchors.right: parent.right
anchors.leftMargin: Constants.titleMargin
anchors.rightMargin: Constants.titleMargin
}
}
Text {
id: subtitleCaption
color: Constants.currentGlobalText
text: subtitle
renderType: Text.NativeRendering
font.pixelSize: 14
wrapMode: Text.WordWrap
anchors.left: parent.left
anchors.right: parent.right
anchors.top: tourNameBackground.bottom
anchors.topMargin: 5
anchors.rightMargin: Constants.thumbnailMargin
anchors.leftMargin: Constants.thumbnailMargin
leftPadding: 5
rightPadding: 5
}
MouseArea {
id: mouseArea
anchors.fill: parent
hoverEnabled: true
Connections {
target: mouseArea
onClicked: root.clicked()
}
}
}
states: [
State {
name: "normal"
when: root.enabled && !mouseArea.containsMouse && !mouseArea.pressed && !root.complete
PropertyChanges {
target: background
color: Constants.currentNormalThumbnailBackground
border.width: 0
}
PropertyChanges {
target: tourNameBackground
color: Constants.currentNormalThumbnailLabelBackground
}
PropertyChanges {
target: mouseArea
enabled: true
}
},
State {
name: "hover"
when: root.enabled && mouseArea.containsMouse && !mouseArea.pressed && !root.complete
PropertyChanges {
target: background
color: Constants.currentHoverThumbnailBackground
border.width: 0
}
PropertyChanges {
target: tourNameBackground
color: Constants.currentHoverThumbnailLabelBackground
}
PropertyChanges {
target: mouseArea
enabled: true
}
},
State {
name: "press"
when: root.enabled && mouseArea.pressed && !root.complete
PropertyChanges {
target: background
color: Constants.currentHoverThumbnailBackground
border.color: Constants.currentBrand
border.width: 2
}
PropertyChanges {
target: tourNameBackground
color: Constants.currentBrand
}
PropertyChanges {
target: mouseArea
enabled: true
}
}
]
}