diff --git a/src/plugins/studiowelcome/qml/welcomepage/AccountImage.qml b/src/plugins/studiowelcome/qml/welcomepage/AccountImage.qml
new file mode 100644
index 00000000000..719ff05546d
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/AccountImage.qml
@@ -0,0 +1,55 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import welcome 1.0
+import StudioFonts 1.0
+
+Image {
+ id: account_icon
+
+ source: "images/" + (mouseArea.containsMouse ? "icon_hover.png" : "icon_default.png")
+
+ Text {
+ id: account
+ color: mouseArea.containsMouse ? Constants.textHoverColor
+ : Constants.textDefaultColor
+ text: qsTr("Account")
+ anchors.top: parent.bottom
+ anchors.horizontalCenter: parent.horizontalCenter
+ font.family: StudioFonts.titilliumWeb_regular
+ font.pixelSize: 16
+ renderType: Text.NativeRendering
+ }
+
+ MouseArea {
+ id: mouseArea
+ anchors.fill: parent
+ anchors.margins: -25
+ hoverEnabled: true
+
+ onClicked: Qt.openUrlExternally("https://login.qt.io/login/")
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/CustomScrollBar.qml b/src/plugins/studiowelcome/qml/welcomepage/CustomScrollBar.qml
new file mode 100644
index 00000000000..a6042e24ccf
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/CustomScrollBar.qml
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.15
+import QtQuick.Templates 2.15 as Controls
+import welcome 1.0
+
+Controls.ScrollBar {
+ id: scrollBar
+
+ implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
+ implicitContentWidth + leftPadding + rightPadding)
+ implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
+ implicitContentHeight + topPadding + bottomPadding)
+
+ padding: active ? 1 : 2
+ visible: orientation === Qt.Horizontal ? contentWidth > width : contentHeight > height
+ minimumSize: orientation === Qt.Horizontal ? height / width : width / height
+
+ contentItem: Rectangle {
+ implicitWidth: 13
+ implicitHeight: 13
+ color: active ? Constants.textHoverColor : Constants.textDefaultColor
+ }
+
+ background: Rectangle {
+ implicitWidth: 16
+ implicitHeight: 16
+ color: "#3b3c3d"
+ visible: active
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/CustomScrollView.qml b/src/plugins/studiowelcome/qml/welcomepage/CustomScrollView.qml
new file mode 100644
index 00000000000..0fbdfa9f00f
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/CustomScrollView.qml
@@ -0,0 +1,37 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick.Templates 2.15 as Controls
+
+Controls.ScrollView {
+ id: control
+
+ Controls.ScrollBar.vertical: CustomScrollBar {
+ parent: control
+ x: control.mirrored ? 0 : control.width - width
+ y: control.topPadding
+ height: control.availableHeight
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml
new file mode 100644
index 00000000000..c13ef5b1b31
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** Copyright (C) 2021 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+ListModel {
+ ListElement {
+ projectName: "ClusterTutorial"
+ qmlFileName: "content/Cluster_Art.ui.qml"
+ thumbnail: "images/tutorialclusterdemo_thumbnail.png"
+ displayName: "Cluster Tutorial"
+ showDownload: false
+ }
+
+ ListElement {
+ projectName: "CoffeeMachine"
+ qmlFileName: "content/ApplicationFlowForm.ui.qml"
+ thumbnail: "images/coffeemachinedemo_thumbnail.png"
+ displayName: "Coffee Machine"
+ showDownload: false
+ }
+
+ ListElement {
+ projectName: "SideMenu"
+ qmlFileName: "content/MainForm.ui.qml"
+ thumbnail: "images/sidemenu_demo.png"
+ displayName: "Side Menu"
+ showDownload: false
+ }
+
+ ListElement {
+ projectName: "WebinarDemo"
+ qmlFileName: "content/MainApp.ui.qml"
+ thumbnail: "images/webinardemo_thumbnail.png"
+ displayName: "Webinar Demo"
+ showDownload: false
+ }
+
+ ListElement {
+ projectName: "EBikeDesign"
+ qmlFileName: "content/Screen01.ui.qml"
+ thumbnail: "images/ebike_demo_thumbnail.png"
+ displayName: "E-Bike Design"
+ showDownload: false
+ }
+
+ ListElement {
+ projectName: "ProgressBar"
+ qmlFileName: "content/ProgressBar.ui.qml"
+ thumbnail: "images/progressbar_demo.png"
+ displayName: "Progress Bar"
+ showDownload: false
+ }
+
+ ListElement {
+ projectName: "washingMachineUI"
+ qmlFileName: "washingMachineUI.qml"
+ thumbnail: "images/washingmachinedemo_thumbnail.png"
+ displayName: "Washing Machine"
+ showDownload: false
+ }
+
+ ListElement {
+ projectName: "SimpleKeyboard"
+ qmlFileName: "SimpleKeyboard.qml"
+ thumbnail: "images/virtualkeyboard_thumbnail.png"
+ displayName: "Virtual Keyboard"
+ showDownload: false
+ }
+
+ ListElement {
+ projectName: "highendivisystem"
+ qmlFileName: "Screen01.ui.qml"
+ thumbnail: "images/highendivi_thumbnail.png"
+ displayName: "IVI System"
+ url: "https://download.qt.io/learning/examples/qtdesignstudio/highendivisystem.zip"
+ showDownload: true
+ }
+
+ ListElement {
+ projectName: "digitalcluster"
+ qmlFileName: "Screen01.ui.qml"
+ thumbnail: "images/digital_cluster_thumbnail.png"
+ displayName: "Digital Cluster"
+ url: "https://download.qt.io/learning/examples/qtdesignstudio/digitalcluster.zip"
+ showDownload: true
+ }
+
+ ListElement {
+ projectName: "effectdemo"
+ qmlFileName: "Screen01.ui.qml"
+ thumbnail: "images/effectdemo_thumbnail.png"
+ displayName: "Effect Demo"
+ url: "https://download.qt.io/learning/examples/qtdesignstudio/effectdemo.zip"
+ showDownload: true
+ }
+
+
+ ListElement {
+ projectName: "cppdemoproject"
+ explicitQmlproject: "qml/qdsproject.qmlproject"
+ qmlFileName: "WashingMachineHome/MainFile.ui.qml"
+ thumbnail: "images/cppdemo_thumbnail.png"
+ displayName: "C++ Demo Project"
+ url: "https://download.qt.io/learning/examples/qtdesignstudio/cppdemoproject.zip"
+ showDownload: true
+ }
+
+ ListElement {
+ projectName: "particles"
+ qmlFileName: "Screen01.ui.qml"
+ thumbnail: "images/particles_thumbnail.png"
+ displayName: "Particle Demo"
+ url: "https://download.qt.io/learning/examples/qtdesignstudio/particles.zip"
+ showDownload: true
+ }
+
+ ListElement {
+ projectName: "thermo"
+ qmlFileName: "thermo.ui.qml"
+ thumbnail: "images/thermo_thumbnail.png"
+ displayName: "Thermostat Demo"
+ url: "https://download.qt.io/learning/examples/qtdesignstudio/thermo.zip"
+ showDownload: true
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/HoverOverDesaturate.qml b/src/plugins/studiowelcome/qml/welcomepage/HoverOverDesaturate.qml
new file mode 100644
index 00000000000..18e645c3240
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/HoverOverDesaturate.qml
@@ -0,0 +1,215 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Timeline 1.0
+import welcome 1.0
+import StudioFonts 1.0
+
+Item {
+ id: root
+ visible: true
+ width: 270
+ height: 175
+ property alias imageSource: image.source
+ property alias labelText: label.text
+
+ property alias downloadIcon: downloadCloud.visible
+
+ signal clicked()
+
+ onVisibleChanged: {
+ animateOpacity.start()
+ animateScale.start()
+ }
+
+ NumberAnimation {
+ id: animateOpacity
+ property: "opacity"
+ from: 0
+ to: 1.0
+ duration: 400
+ }
+ NumberAnimation {
+ id: animateScale
+ property: "scale"
+ from: 0
+ to: 1.0
+ duration: 400
+ }
+
+ Rectangle {
+ id: rectangle
+ x: 0
+ y: 0
+ width: 270
+ height: 146
+
+ MouseArea {
+ x: 17
+ y: 12
+ height: 125
+ anchors.bottomMargin: -label.height
+ anchors.fill: parent
+ hoverEnabled: true
+ onHoveredChanged: {
+ if (saturationEffect.desaturation === 1)
+ saturationEffect.desaturation = 0
+ if (saturationEffect.desaturation === 0)
+ saturationEffect.desaturation = 1
+ if (saturationEffect.desaturation === 0)
+ rectangle.color = "#262728"
+ if (saturationEffect.desaturation === 1)
+ rectangle.color = "#404244"
+ if (saturationEffect.desaturation === 0)
+ label.color = "#686868"
+ if (saturationEffect.desaturation === 1)
+ label.color = Constants.textDefaultColor
+ }
+
+ onExited: {
+ saturationEffect.desaturation = 1
+ rectangle.color = "#262728"
+ label.color = "#686868"
+ }
+
+ onClicked: root.clicked()
+ }
+ }
+
+ SaturationEffect {
+ id: saturationEffect
+ x: 15
+ y: 10
+ width: 240
+ height: 125
+ desaturation: 0
+ antialiasing: true
+ Behavior on desaturation {
+ PropertyAnimation {
+ }
+ }
+
+ Image {
+ id: image
+ width: 240
+ height: 125
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Timeline {
+ id: animation
+ startFrame: 0
+ enabled: true
+ endFrame: 1000
+
+ KeyframeGroup {
+ target: saturationEffect
+ property: "desaturation"
+
+ Keyframe {
+ frame: 0
+ value: 1
+ }
+
+ Keyframe {
+ frame: 1000
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: label
+ property: "color"
+
+ Keyframe {
+ value: "#686868"
+ frame: 0
+ }
+
+ Keyframe {
+ value: Constants.textDefaultColor
+ frame: 1000
+ }
+ }
+
+ KeyframeGroup {
+ target: rectangle
+ property: "color"
+
+ Keyframe {
+ value: "#262728"
+ frame: 0
+ }
+
+ Keyframe {
+ value: "#404244"
+ frame: 1000
+ }
+ }
+ }
+
+ PropertyAnimation {
+ id: propertyAnimation
+ target: animation
+ property: "currentFrame"
+ running: false
+ duration: 1000
+ to: animation.endFrame
+ from: animation.startFrame
+ loops: 1
+ }
+
+ Text {
+ id: label
+ x: 1
+ y: 145
+ color: "#686868"
+
+ renderType: Text.NativeRendering
+ font.pixelSize: 14
+ font.family: StudioFonts.titilliumWeb_regular
+ }
+
+ Image {
+ id: downloadCloud
+ x: 210
+ y: 118
+ width: 60
+ height: 60
+ source: "images/downloadCloud.svg"
+ sourceSize.height: 60
+ sourceSize.width: 60
+ fillMode: Image.PreserveAspectFit
+ visible: false
+ }
+}
+
+/*##^##
+Designer {
+ D{i:0;formeditorZoom:1.3300000429153442}D{i:8}
+}
+##^##*/
diff --git a/src/plugins/studiowelcome/qml/welcomepage/MyButton.qml b/src/plugins/studiowelcome/qml/welcomepage/MyButton.qml
new file mode 100644
index 00000000000..a73191350e4
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/MyButton.qml
@@ -0,0 +1,59 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import QtQuick.Templates 2.3
+import welcome 1.0
+import StudioFonts 1.0
+
+Button {
+ id: button
+
+ property color hoverColor: Constants.textHoverColor
+ property color defaultColor: Constants.textDefaultColor
+ property color checkedColor: Constants.textDefaultColor
+
+ text: "test"
+
+ implicitWidth: background.width
+ implicitHeight: background.height
+
+ contentItem: Text {
+ id: textButton
+ text: button.text
+
+ color: checked ? button.checkedColor :
+ button.hovered ? button.hoverColor :
+ button.defaultColor
+ font.family: StudioFonts.titilliumWeb_regular
+ renderType: Text.NativeRendering
+ font.pixelSize: 18
+ }
+
+ background: Item {
+ width: textButton.implicitWidth
+ height: textButton.implicitHeight
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/MyTabButton.qml b/src/plugins/studiowelcome/qml/welcomepage/MyTabButton.qml
new file mode 100644
index 00000000000..420b3a2b67e
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/MyTabButton.qml
@@ -0,0 +1,33 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.9
+
+MyButton {
+ checkable: true
+ autoExclusive: true
+ defaultColor: "#686868"
+ hoverColor: "#79797C"
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/ProjectsGrid.qml b/src/plugins/studiowelcome/qml/welcomepage/ProjectsGrid.qml
new file mode 100644
index 00000000000..099c123ecfe
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/ProjectsGrid.qml
@@ -0,0 +1,67 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.9
+import welcome 1.0
+
+GridView {
+ id: root
+ cellHeight: 180
+ cellWidth: 285
+
+ clip: true
+
+ signal itemSelected(int index, variant item)
+
+ delegate: HoverOverDesaturate {
+ id: hoverOverDesaturate
+ imageSource: typeof(thumbnail) === "undefined" ? "images/thumbnail_test.png" : thumbnail;
+ labelText: displayName
+ downloadIcon: typeof(showDownload) === "undefined" ? false : showDownload;
+ onClicked: root.itemSelected(index, root.model.get(index))
+
+ SequentialAnimation {
+ id: animation
+ running: hoverOverDesaturate.visible
+
+ PropertyAction {
+ target: hoverOverDesaturate
+ property: "scale"
+ value: 0.0
+ }
+ PauseAnimation {
+ duration: model.index > 0 ? 100 * model.index : 0
+ }
+ NumberAnimation {
+ target: hoverOverDesaturate
+ property: "scale"
+ from: 0.0
+ to: 1.0
+ duration: 200
+ easing.type: Easing.InOutExpo
+ }
+ }
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/SaturationEffect.qml b/src/plugins/studiowelcome/qml/welcomepage/SaturationEffect.qml
new file mode 100644
index 00000000000..32d2448d6ee
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/SaturationEffect.qml
@@ -0,0 +1,41 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+Item {
+ id: root
+
+ property real desaturation: 1.0
+
+ Rectangle {
+ z: 10
+ anchors.fill: parent
+ color: "#2d2e30"
+ anchors.margins: -16
+
+ opacity: root.desaturation * 0.6
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/TutorialsModel.qml b/src/plugins/studiowelcome/qml/welcomepage/TutorialsModel.qml
new file mode 100644
index 00000000000..efb59e5a0ae
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/TutorialsModel.qml
@@ -0,0 +1,130 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+ListModel {
+ ListElement {
+ displayName: "The Designer Tool Developers Love"
+ thumbnail: "images/webinar1.png"
+ url: "https://youtu.be/gU_tDbebAzM"
+ }
+
+ ListElement {
+ displayName: "From Photoshop to Prototype"
+ thumbnail: "images/webinar2.png"
+ url: "https://youtu.be/ZzbucmQPU44"
+ }
+
+ ListElement {
+ displayName: "Qt for Designers and Developers"
+ thumbnail: "images/designer_and_developers.png"
+ url: "https://www.youtube.com/watch?v=EgjCvZWEPWk"
+ }
+
+ ListElement {
+ displayName: "QTWS - Designer and Developer Workflow"
+ thumbnail: "images/qtws_video_thumbnail.png"
+ url: "https://www.youtube.com/watch?v=4ug0EUdS2RM"
+ }
+
+ ListElement {
+ displayName: "QTWS - Turn UI designs into working prototypes"
+ thumbnail: "images/bridging_the_gap.png"
+ url: "https://www.youtube.com/watch?v=qQM2oEWRBOw&feature=emb_logo"
+ }
+
+ ListElement {
+ displayName: "What's New in Design Studio 1.5"
+ thumbnail: "images/what_is_new_15.png"
+ url: "https://www.youtube.com/watch?v=e-HAZrisi5o"
+ }
+
+ ListElement {
+ displayName: "Qt Design Studio QuickTip: UI Navigation"
+ thumbnail: "images/Qt_QT_nav.png"
+ url: "https://youtu.be/RfEYO-5Mw6s"
+ }
+
+ ListElement {
+ displayName: "Qt Design Studio QuickTip: Text Element"
+ thumbnail: "images/Qt_QT_textElement.png"
+ url: "https://youtu.be/yOUdg1o2KJM"
+ }
+
+ ListElement {
+ displayName: "Qt Design Studio QuickTip: Animated Image"
+ thumbnail: "images/Qt_QT_animatedImage.png"
+ url: "https://youtu.be/DVWd_xMMgvg"
+ }
+
+ ListElement {
+ displayName: "Qt Design Studio QuickTip: Slider Control"
+ thumbnail: "images/Qt_QT_sliderControl.png"
+ url: "https://youtu.be/Ed8WS03C-Vk"
+ }
+
+ ListElement {
+ displayName: "Qt Design Studio QuickTip: Bindings"
+ thumbnail: "images/Qt_QT_bindings.png"
+ url: "https://youtu.be/UfvA04CIXv0"
+ }
+
+ ListElement {
+ displayName: "Qt Design Studio QuickTip: Interactive 3D"
+ thumbnail: "images/Qt_QT_interactive3d.png"
+ url: "https://youtu.be/w1yhDl93YI0"
+ }
+
+ ListElement {
+ displayName: "Sketch Bridge Tutorial - Part 1"
+ thumbnail: "images/sketchTutorial_1.png"
+ url: "https://www.qt.io/blog/qt-design-studio-sketch-bridge-tutorial-part-1"
+ }
+
+ ListElement {
+ displayName: "Sketch Bridge Tutorial - Part 2"
+ thumbnail: "images/sketchTutorial_2.png"
+ url: "https://www.qt.io/blog/qt-design-studio-sketch-bridge-tutorial-part-2"
+ }
+
+ ListElement {
+ displayName: "Create New Project"
+ thumbnail: "images/gettingStarted_newProject.png"
+ url: "https://youtu.be/9ihYeC0YJ0M"
+ }
+
+ ListElement {
+ displayName: "Using Qt Quick 3D Components"
+ thumbnail: "images/gettingStarted_3dComponents.png"
+ url: "https://youtu.be/u3kZJjlk3CY"
+ }
+
+ ListElement {
+ displayName: "Using Custom Shaders, Materials, and Effects"
+ thumbnail: "images/gettingStarted_shaders.png"
+ url: "https://youtu.be/bMXeeQw6BYs"
+ }
+}
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_animatedImage.png b/src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_animatedImage.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_animatedImage.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_animatedImage.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_bindings.png b/src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_bindings.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_bindings.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_bindings.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_interactive3d.png b/src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_interactive3d.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_interactive3d.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_interactive3d.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_nav.png b/src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_nav.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_nav.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_nav.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_sliderControl.png b/src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_sliderControl.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_sliderControl.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_sliderControl.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_textElement.png b/src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_textElement.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/Qt_QT_textElement.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/Qt_QT_textElement.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/bridging_the_gap.png b/src/plugins/studiowelcome/qml/welcomepage/images/bridging_the_gap.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/bridging_the_gap.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/bridging_the_gap.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/coffeemachinedemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/coffeemachinedemo_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/coffeemachinedemo_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/coffeemachinedemo_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/cppdemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/cppdemo_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/cppdemo_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/cppdemo_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/designer_and_developers.png b/src/plugins/studiowelcome/qml/welcomepage/images/designer_and_developers.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/designer_and_developers.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/designer_and_developers.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/digital_cluster_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/digital_cluster_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/digital_cluster_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/digital_cluster_thumbnail.png
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/downloadCloud.svg b/src/plugins/studiowelcome/qml/welcomepage/images/downloadCloud.svg
new file mode 100644
index 00000000000..3a527c3e54f
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/images/downloadCloud.svg
@@ -0,0 +1,29 @@
+
+
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/ebike_demo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/ebike_demo_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/ebike_demo_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/ebike_demo_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/effectdemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/effectdemo_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/effectdemo_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/effectdemo_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/gettingStarted_3dComponents.png b/src/plugins/studiowelcome/qml/welcomepage/images/gettingStarted_3dComponents.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/gettingStarted_3dComponents.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/gettingStarted_3dComponents.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/gettingStarted_newProject.png b/src/plugins/studiowelcome/qml/welcomepage/images/gettingStarted_newProject.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/gettingStarted_newProject.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/gettingStarted_newProject.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/gettingStarted_shaders.png b/src/plugins/studiowelcome/qml/welcomepage/images/gettingStarted_shaders.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/gettingStarted_shaders.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/gettingStarted_shaders.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/highendivi_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/highendivi_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/highendivi_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/highendivi_thumbnail.png
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/icon_default.png b/src/plugins/studiowelcome/qml/welcomepage/images/icon_default.png
new file mode 100644
index 00000000000..82b852a408c
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/icon_default.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/icon_hover.png b/src/plugins/studiowelcome/qml/welcomepage/images/icon_hover.png
new file mode 100644
index 00000000000..693fdaf7b5a
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/icon_hover.png differ
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/particles_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/particles_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/particles_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/particles_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/progressbar_demo.png b/src/plugins/studiowelcome/qml/welcomepage/images/progressbar_demo.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/progressbar_demo.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/progressbar_demo.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/qtws_video_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/qtws_video_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/qtws_video_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/qtws_video_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/sidemenu_demo.png b/src/plugins/studiowelcome/qml/welcomepage/images/sidemenu_demo.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/sidemenu_demo.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/sidemenu_demo.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/sketchTutorial_1.png b/src/plugins/studiowelcome/qml/welcomepage/images/sketchTutorial_1.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/sketchTutorial_1.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/sketchTutorial_1.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/sketchTutorial_2.png b/src/plugins/studiowelcome/qml/welcomepage/images/sketchTutorial_2.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/sketchTutorial_2.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/sketchTutorial_2.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/thermo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/thermo_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/thermo_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/thermo_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/thumbnail_test.png b/src/plugins/studiowelcome/qml/welcomepage/images/thumbnail_test.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/thumbnail_test.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/thumbnail_test.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/tutorialclusterdemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/tutorialclusterdemo_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/tutorialclusterdemo_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/tutorialclusterdemo_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/virtualkeyboard_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/virtualkeyboard_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/virtualkeyboard_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/virtualkeyboard_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/washingmachinedemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/washingmachinedemo_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/washingmachinedemo_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/washingmachinedemo_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/webinar1.png b/src/plugins/studiowelcome/qml/welcomepage/images/webinar1.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/webinar1.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/webinar1.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/webinar2.png b/src/plugins/studiowelcome/qml/welcomepage/images/webinar2.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/webinar2.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/webinar2.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/webinardemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/webinardemo_thumbnail.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/webinardemo_thumbnail.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/webinardemo_thumbnail.png
diff --git a/share/qtcreator/qmldesigner/welcomepage/images/what_is_new_15.png b/src/plugins/studiowelcome/qml/welcomepage/images/what_is_new_15.png
similarity index 100%
rename from share/qtcreator/qmldesigner/welcomepage/images/what_is_new_15.png
rename to src/plugins/studiowelcome/qml/welcomepage/images/what_is_new_15.png
diff --git a/src/plugins/studiowelcome/qml/welcomepage/imports/welcome/Constants.qml b/src/plugins/studiowelcome/qml/welcomepage/imports/welcome/Constants.qml
new file mode 100644
index 00000000000..84f8da8d106
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/imports/welcome/Constants.qml
@@ -0,0 +1,37 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+pragma Singleton
+
+import QtQuick 2.6
+import StudioFonts 1.0
+
+QtObject {
+ readonly property color backgroundColor: "#443224"
+
+ readonly property color textDefaultColor: "#b9b9ba"
+
+ readonly property color textHoverColor: "#ffffff"
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/imports/welcome/qmldir b/src/plugins/studiowelcome/qml/welcomepage/imports/welcome/qmldir
new file mode 100644
index 00000000000..616ac203530
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/imports/welcome/qmldir
@@ -0,0 +1 @@
+singleton Constants 1.0 Constants.qml
diff --git a/src/plugins/studiowelcome/qml/welcomepage/main.qml b/src/plugins/studiowelcome/qml/welcomepage/main.qml
new file mode 100644
index 00000000000..ca09aa07a55
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/main.qml
@@ -0,0 +1,204 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.10
+import QtQuick.Controls 2.4
+import QtQuick.Layouts 1.3
+import welcome 1.0
+import projectmodel 1.0
+import StudioFonts 1.0
+
+Item {
+ width: 1024
+ height: 786
+
+ Rectangle {
+ id: rectangle
+ anchors.fill: parent
+ visible: true
+ color: "#2d2e30"
+
+ StackLayout {
+ id: stackLayout
+ anchors.margins: 10
+ anchors.top: topLine.bottom
+ anchors.bottom: bottomLine.top
+ anchors.right: parent.right
+ anchors.left: parent.left
+
+ CustomScrollView {
+ ProjectsGrid {
+ model: ProjectModel {
+ id: projectModel
+ }
+ onItemSelected: function(index, item) { projectModel.openProjectAt(index) }
+ }
+ }
+
+ CustomScrollView {
+ ProjectsGrid {
+ model: ExamplesModel {}
+ onItemSelected: function(index, item) {
+ projectModel.openExample(item.projectName, item.qmlFileName, item.url, item.explicitQmlproject)
+ }
+ }
+ }
+
+ CustomScrollView{
+ ProjectsGrid {
+ model: TutorialsModel {}
+ onItemSelected: function(index, item) { Qt.openUrlExternally(item.url) }
+ }
+ }
+ }
+ Rectangle {
+ id: topLine
+ height: 1
+ color: "#bababa"
+ anchors.right: parent.right
+ anchors.rightMargin: 10
+ anchors.left: parent.left
+ anchors.leftMargin: 10
+ anchors.top: parent.top
+ anchors.topMargin: 200
+ }
+
+ Rectangle {
+ id: bottomLine
+ height: 1
+ color: "#bababa"
+ anchors.left: topLine.left
+ anchors.right: topLine.right
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 60
+ }
+
+ Row {
+ x: 8
+ y: 160
+ spacing: 26
+
+ MyTabButton {
+ text: qsTr("Recent Projects")
+ checked: true
+ onClicked: stackLayout.currentIndex = 0
+ }
+
+ MyTabButton {
+ text: qsTr("Examples")
+ onClicked: stackLayout.currentIndex = 1
+ }
+
+ MyTabButton {
+ text: qsTr("Tutorials")
+ onClicked: stackLayout.currentIndex = 2
+ }
+ }
+
+ AccountImage {
+ id: account
+ x: 946
+ y: 29
+ anchors.right: parent.right
+ anchors.rightMargin: 40
+ }
+
+ GridLayout {
+ y: 78
+ anchors.horizontalCenter: parent.horizontalCenter
+ columnSpacing: 10
+ rows: 2
+ columns: 2
+
+ Text {
+ id: welcomeTo
+ color: Constants.textDefaultColor
+ text: qsTr("Welcome to")
+ renderType: Text.NativeRendering
+ font.pixelSize: 22
+ font.family: StudioFonts.titilliumWeb_regular
+ }
+
+ Text {
+ id: qtDesignStudio
+ color: "#4cd265"
+ text: qsTr("Qt Design Studio")
+ renderType: Text.NativeRendering
+ font.family: StudioFonts.titilliumWeb_regular
+ font.pixelSize: 22
+ }
+
+ MyButton {
+ text: qsTr("Create New")
+ onClicked: projectModel.createProject()
+ }
+
+ MyButton {
+ text: qsTr("Open Project")
+ onClicked: projectModel.openProject()
+ Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
+ }
+ }
+
+ RowLayout {
+ y: 732
+ height: 28
+ anchors.horizontalCenter: parent.horizontalCenter
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 26
+ spacing: 50
+
+ MyButton {
+ text: qsTr("Help")
+ onClicked: projectModel.showHelp()
+ }
+
+ MyButton {
+ text: qsTr("Community")
+ onClicked: Qt.openUrlExternally("https://forum.qt.io/")
+ }
+
+ MyButton {
+ text: qsTr("Blog")
+ onClicked: Qt.openUrlExternally("http://blog.qt.io/")
+ }
+ }
+
+ Text {
+ id: qtDesignStudio1
+ x: 891
+ y: 171
+ color: "#ffffff"
+ text: qsTr("Community Edition")
+ anchors.right: parent.right
+ anchors.rightMargin: 23
+ font.weight: Font.Light
+ font.pixelSize: 14
+ font.family: StudioFonts.titilliumWeb_regular
+ renderType: Text.NativeRendering
+ visible: projectModel.communityVersion
+ }
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/mockData/projectmodel/ProjectModel.qml b/src/plugins/studiowelcome/qml/welcomepage/mockData/projectmodel/ProjectModel.qml
new file mode 100644
index 00000000000..bca1783d422
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/mockData/projectmodel/ProjectModel.qml
@@ -0,0 +1,138 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+ListModel {
+
+ property bool communityVersion: true
+ ListElement {
+ displayName: "Project 01"
+ prettyFilePath: "my_file_1"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 02"
+ prettyFilePath: "my_file_2"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 03"
+ prettyFilePath: "my_file_3"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 04"
+ prettyFilePath: "my_file_4"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 05"
+ prettyFilePath: "my_file_5"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 06"
+ prettyFilePath: "my_file_6"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 07"
+ prettyFilePath: "my_file_7"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 08"
+ filename: "my_file_8"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 09"
+ filename: "my_file_9"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 10"
+ prettyFilePath: "my_file_10"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 11"
+ filename: "my_file_11"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 12"
+ prettyFilePath: "my_file_12"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 13"
+ filename: "my_file_13"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 14"
+ prettyFilePath: "my_file_14"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 15"
+ filename: "my_file_15"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 16"
+ filename: "my_file_16"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 17"
+ filename: "my_file_17"
+ thumbnail: "images/thumbnail_test.png"
+ }
+
+ ListElement {
+ displayName: "Project 18"
+ prettyFilePath: "my_file_18"
+ thumbnail: "images/thumbnail_test.png"
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/mockData/projectmodel/qmldir b/src/plugins/studiowelcome/qml/welcomepage/mockData/projectmodel/qmldir
new file mode 100644
index 00000000000..0d7bc345c2b
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/mockData/projectmodel/qmldir
@@ -0,0 +1 @@
+ProjectModel 1.0 ProjectModel.qml
diff --git a/src/plugins/studiowelcome/qml/welcomepage/mockData/usagestatistics/UsageStatisticModel.qml b/src/plugins/studiowelcome/qml/welcomepage/mockData/usagestatistics/UsageStatisticModel.qml
new file mode 100644
index 00000000000..c19250f2149
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/mockData/usagestatistics/UsageStatisticModel.qml
@@ -0,0 +1,30 @@
+/****************************************************************************
+**
+** Copyright (C) 2020 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QtQuick 2.0
+
+QtObject {
+ property bool usageStatisticEnabled: false
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/mockData/usagestatistics/qmldir b/src/plugins/studiowelcome/qml/welcomepage/mockData/usagestatistics/qmldir
new file mode 100644
index 00000000000..c83a43a8ae7
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/mockData/usagestatistics/qmldir
@@ -0,0 +1 @@
+UsageStatisticModel 1.0 UsageStatisticModel.qml
diff --git a/src/plugins/studiowelcome/qml/welcomepage/welcomepage.qmlproject b/src/plugins/studiowelcome/qml/welcomepage/welcomepage.qmlproject
new file mode 100644
index 00000000000..de393d88b07
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/welcomepage.qmlproject
@@ -0,0 +1,47 @@
+/****************************************************************************
+**
+** Copyright (C) 2019 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Creator.
+**
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 as published by the Free Software
+** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+****************************************************************************/
+
+import QmlProject 1.1
+
+Project {
+ mainFile: "main.qml"
+
+ /* Include .qml, .js, and image files from current directory and subdirectories */
+ QmlFiles {
+ directory: "."
+ }
+ JavaScriptFiles {
+ directory: "."
+ }
+ ImageFiles {
+ directory: "."
+ }
+ /* List of plugin directories passed to QML runtime */
+ importPaths: [ "imports", "mockData", "../../../../share/3rdparty/studiofonts" ]
+
+ Environment {
+ QT_AUTO_SCREEN_SCALE_FACTOR: "1"
+ }
+}
diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp
index 92531da3243..470ca731442 100644
--- a/src/plugins/studiowelcome/studiowelcomeplugin.cpp
+++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp
@@ -42,8 +42,6 @@
#include
#include
-#include
-
#include
#include
#include
@@ -57,7 +55,6 @@
#include
#include
#include
-#include
#include
#include
#include
@@ -380,7 +377,6 @@ void StudioWelcomePlugin::extensionsInitialized()
#endif
-
QTC_ASSERT(s_view->rootObject(),
qWarning() << "The StudioWelcomePlugin has a runtime depdendency on "
"qt/qtquicktimeline.";
@@ -454,22 +450,16 @@ WelcomeMode::WelcomeMode()
m_modeWidget = new QQuickWidget;
m_modeWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
- QmlDesigner::Theme::setupTheme(m_modeWidget->engine());
m_modeWidget->engine()->addImportPath("qrc:/studiofonts");
- m_modeWidget->engine()->addImportPath(Core::ICore::resourcePath("qmldesigner/propertyEditorQmlSources/imports").toString());
-
- const QString welcomePagePath = Core::ICore::resourcePath("qmldesigner/welcomepage").toString();
- m_modeWidget->engine()->addImportPath(welcomePagePath + "/imports");
- m_modeWidget->setSource(QUrl::fromLocalFile(welcomePagePath + "/main.qml"));
-
- QShortcut *updateShortcut = nullptr;
- if (Utils::HostOsInfo::isMacHost())
- updateShortcut = new QShortcut(QKeySequence(Qt::ALT + Qt::Key_F5), m_modeWidget);
- else
- updateShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_F5), m_modeWidget);
- connect(updateShortcut, &QShortcut::activated, this, [this, welcomePagePath](){
- m_modeWidget->setSource(QUrl::fromLocalFile(welcomePagePath + "/main.qml"));
- });
+#ifdef QT_DEBUG
+ m_modeWidget->engine()->addImportPath(QLatin1String(STUDIO_QML_PATH)
+ + "welcomepage/imports");
+ m_modeWidget->setSource(QUrl::fromLocalFile(QLatin1String(STUDIO_QML_PATH)
+ + "welcomepage/main.qml"));
+#else
+ m_modeWidget->engine()->addImportPath("qrc:/qml/welcomepage/imports");
+ m_modeWidget->setSource(QUrl("qrc:/qml/welcomepage/main.qml"));
+#endif
setWidget(m_modeWidget);