diff --git a/src/plugins/plugins.pro b/src/plugins/plugins.pro
index 9efcf77bf11..7b7b88967d0 100644
--- a/src/plugins/plugins.pro
+++ b/src/plugins/plugins.pro
@@ -60,7 +60,8 @@ SUBDIRS = \
cppcheck \
compilationdatabaseprojectmanager \
perfprofiler \
- qmlpreview
+ qmlpreview \
+ studiowelcome
qtHaveModule(serialport) {
SUBDIRS += serialterminal
diff --git a/src/plugins/studiowelcome/StudioWelcome.json.in b/src/plugins/studiowelcome/StudioWelcome.json.in
new file mode 100644
index 00000000000..5a4173de12f
--- /dev/null
+++ b/src/plugins/studiowelcome/StudioWelcome.json.in
@@ -0,0 +1,21 @@
+{
+ \"Name\" : \"StudioWelcome\",
+ \"Version\" : \"$$QTCREATOR_VERSION\",
+ \"CompatVersion\" : \"$$QTCREATOR_COMPAT_VERSION\",
+ \"Revision\" : \"$$QTC_PLUGIN_REVISION\",
+ \"DisabledByDefault\" : true,
+ \"Vendor\" : \"The Qt Company Ltd\",
+ \"Copyright\" : \"(C) $$QTCREATOR_COPYRIGHT_YEAR The Qt Company Ltd\",
+ \"License\" : [ \"Commercial Usage\",
+ \"\",
+ \"Licensees holding valid Qt Commercial licenses may use this plugin in accordance with the Qt 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.\",
+ \"\",
+ \"GNU General Public License Usage\",
+ \"\",
+ \"Alternatively, this plugin 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 plugin. 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.\"
+ ],
+ \"Category\" : \"Qt Quick\",
+ \"Description\" : \"Qt Design Studio Welcome Page.\",
+ \"Url\" : \"http://www.qt.io\",
+ $$dependencyList
+}
diff --git a/src/plugins/studiowelcome/images/mode_welcome_mask.png b/src/plugins/studiowelcome/images/mode_welcome_mask.png
new file mode 100644
index 00000000000..696af0c5499
Binary files /dev/null and b/src/plugins/studiowelcome/images/mode_welcome_mask.png differ
diff --git a/src/plugins/studiowelcome/images/mode_welcome_mask@2x.png b/src/plugins/studiowelcome/images/mode_welcome_mask@2x.png
new file mode 100644
index 00000000000..060ada0cf54
Binary files /dev/null and b/src/plugins/studiowelcome/images/mode_welcome_mask@2x.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Arc.qml b/src/plugins/studiowelcome/qml/splashscreen/Arc.qml
new file mode 100644
index 00000000000..2a63c1a7de3
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Arc.qml
@@ -0,0 +1,97 @@
+/****************************************************************************
+**
+** 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.Shapes 1.0
+
+Shape {
+ id: root
+
+ //Antialiasing workaround
+ layer.enabled: true
+ layer.textureSize: Qt.size(width * 2, height * 2)
+ layer.smooth: true
+
+ implicitWidth: 100
+ implicitHeight: 100
+
+ property alias fillColor: path.fillColor
+ property alias strokeColor: path.strokeColor
+ property alias strokeWidth: path.strokeWidth
+ property alias capStyle: path.capStyle
+ property alias strokeStyle: path.strokeStyle
+ property alias fillGradient: path.fillGradient
+
+ property real begin: 0
+ property real end: 90
+
+ property real alpha: end - begin
+
+ function polarToCartesianX(centerX, centerY, radius, angleInDegrees) {
+ var angleInRadians = angleInDegrees * Math.PI / 180.0
+ var x = centerX + radius * Math.cos(angleInRadians)
+ return x
+ }
+
+ function polarToCartesianY(centerX, centerY, radius, angleInDegrees) {
+ var angleInRadians = angleInDegrees * Math.PI / 180.0
+ var y = centerY + radius * Math.sin(angleInRadians)
+ return y
+ }
+
+ ShapePath {
+ id: path
+
+ property real __xRadius: width / 2 - strokeWidth / 2
+ property real __yRadius: height / 2 - strokeWidth / 2
+
+ property real __Xcenter: width / 2
+ property real __Ycenter: height / 2
+ strokeColor: "#000000"
+
+ fillColor: "transparent"
+ strokeWidth: 1
+ capStyle: ShapePath.FlatCap
+
+ startX: root.polarToCartesianX(path.__Xcenter, path.__Ycenter,
+ path.__xRadius, root.begin - 180)
+ startY: root.polarToCartesianY(path.__Xcenter, path.__Ycenter,
+ path.__yRadius, root.begin - 180)
+
+ PathArc {
+ id: arc
+
+ x: root.polarToCartesianX(path.__Xcenter, path.__Ycenter,
+ path.__xRadius, root.end - 180)
+ y: root.polarToCartesianY(path.__Xcenter, path.__Ycenter,
+ path.__yRadius, root.end - 180)
+
+ radiusY: path.__yRadius
+ radiusX: path.__xRadius
+
+ useLargeArc: root.alpha > 180
+ }
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/ArcAnimation.qml b/src/plugins/studiowelcome/qml/splashscreen/ArcAnimation.qml
new file mode 100644
index 00000000000..08fae81a2cc
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/ArcAnimation.qml
@@ -0,0 +1,148 @@
+/****************************************************************************
+**
+** 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
+import QtQuick.Timeline 1.0
+
+Item {
+ id: arcItem
+ width: 549
+ height: 457
+ Arc {
+ id: arc
+ x: 401
+ y: 191
+ width: 52
+ height: 52
+ strokeColor: "#5d9dea"
+ end: 0
+ scale: 0.8
+ strokeWidth: 7
+ }
+
+ Arc {
+ id: arc1
+ x: 353
+ y: 203
+ width: 52
+ height: 52
+ rotation: -45
+ strokeWidth: 7
+ scale: 0.6
+ strokeColor: "#ea6d60"
+ end: 0
+ }
+
+ Arc {
+ id: arc2
+ x: 390
+ y: 226
+ width: 52
+ height: 52
+ rotation: 90
+ scale: 0.5
+ strokeWidth: 7
+ strokeColor: "#aa97f4"
+ end: 0
+ }
+
+ Timeline {
+ id: timeline
+ startFrame: 0
+ enabled: true
+ endFrame: 1000
+
+ KeyframeGroup {
+ target: arc
+ property: "end"
+
+ Keyframe {
+ value: 0
+ frame: 0
+ }
+
+ Keyframe {
+ value: 280
+ frame: 520
+ }
+
+ Keyframe {
+ value: 0
+ frame: 1000
+ }
+ }
+
+ KeyframeGroup {
+ target: arc1
+ property: "end"
+
+ Keyframe {
+ value: 0
+ frame: 0
+ }
+
+ Keyframe {
+ value: 320
+ frame: 690
+ }
+
+ Keyframe {
+ value: 0
+ frame: 1000
+ }
+ }
+
+ KeyframeGroup {
+ target: arc2
+ property: "end"
+
+ Keyframe {
+ value: 0
+ frame: 0
+ }
+
+ Keyframe {
+ value: 290
+ frame: 320
+ }
+
+ Keyframe {
+ value: 0
+ frame: 1000
+ }
+ }
+ }
+
+ PropertyAnimation {
+ id: propertyAnimation
+ target: timeline
+ property: "currentFrame"
+ running: true
+ loops: -1
+ duration: 2600
+ from: timeline.startFrame
+ to: timeline.endFrame
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Dof_Effect.qml b/src/plugins/studiowelcome/qml/splashscreen/Dof_Effect.qml
new file mode 100644
index 00000000000..010228b88b4
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Dof_Effect.qml
@@ -0,0 +1,93 @@
+/****************************************************************************
+**
+** 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
+import QtGraphicalEffects 1.0
+
+Item {
+ id: root
+ default property alias content: stack.children
+ property alias maskBlurRadius: maskedBlur.radius
+ property alias maskBlurSamples: maskedBlur.samples
+ property alias gradientStopPosition1: stop1.position
+ property alias gradientStopPosition2: stop2.position
+ property alias gradientStopPosition3: stop3.position
+ property alias gradientStopPosition4: stop4.position
+ property alias maskRotation: gradient.rotation
+
+ Row {
+ visible: true
+ id: stack
+ }
+
+ Item {
+ id: mask
+ width: stack.width
+ height: stack.height
+ visible: false
+
+ LinearGradient {
+ id: gradient
+ height: stack.height * 2
+ width: stack.width * 2
+ y: -stack.height / 2
+ x: -stack.width / 2
+ rotation: 0
+ gradient: Gradient {
+ GradientStop {
+ id: stop1
+ position: 0.2
+ color: "#ffffffff"
+ }
+ GradientStop {
+ id: stop2
+ position: 0.5
+ color: "#00ffffff"
+ }
+ GradientStop {
+ id: stop3
+ position: 0.8
+ color: "#00ffffff"
+ }
+ GradientStop {
+ id: stop4
+ position: 1.0
+ color: "#ffffffff"
+ }
+ }
+ start: Qt.point(stack.width / 2, 0)
+ end: Qt.point(stack.width + stack.width / 2, 100)
+ }
+ }
+
+ MaskedBlur {
+ id: maskedBlur
+ anchors.fill: stack
+ source: stack
+ maskSource: mask
+ radius: 32
+ samples: 16
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Image1.qml b/src/plugins/studiowelcome/qml/splashscreen/Image1.qml
new file mode 100644
index 00000000000..044a8eae845
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Image1.qml
@@ -0,0 +1,32 @@
+/****************************************************************************
+**
+** 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
+
+Image {
+ id: slidersOn
+ scale: 0.5
+ source: "welcome_windows/splash_pngs/Slider_on.png"
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Image2.qml b/src/plugins/studiowelcome/qml/splashscreen/Image2.qml
new file mode 100644
index 00000000000..774723c23a4
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Image2.qml
@@ -0,0 +1,152 @@
+/****************************************************************************
+**
+** 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
+import QtQuick.Timeline 1.0
+
+Item {
+ width: 174
+ height: 200
+
+ Image {
+ id: image2
+ x: 93
+ y: 133
+ source: "welcome_windows/splash_pngs/ring_1_out.png"
+
+ Image {
+ id: image1
+ x: 13
+ y: 13
+ source: "welcome_windows/splash_pngs/ring_1_in.png"
+ }
+ }
+
+ Image {
+ id: image3
+ x: 13
+ y: 72
+ source: "welcome_windows/splash_pngs/ring_2.png"
+ }
+
+ Image {
+ id: image4
+ x: 73
+ y: 44
+ source: "welcome_windows/splash_pngs/ring_line_2.png"
+ }
+
+ Image {
+ id: image5
+ x: 103
+ y: 13
+ source: "welcome_windows/splash_pngs/ring_3.png"
+ }
+
+ Timeline {
+ id: timeline
+ startFrame: 0
+ enabled: true
+ endFrame: 1000
+
+ KeyframeGroup {
+ target: image1
+ property: "scale"
+
+ Keyframe {
+ value: 0.01
+ frame: 0
+ }
+
+ Keyframe {
+ value: 1
+ frame: 200
+ }
+ }
+
+ KeyframeGroup {
+ target: image2
+ property: "scale"
+
+ Keyframe {
+ value: 0.01
+ frame: 70
+ }
+
+ Keyframe {
+ value: 1
+ frame: 300
+ }
+ }
+
+ KeyframeGroup {
+ target: image3
+ property: "scale"
+
+ Keyframe {
+ value: 0.01
+ frame: 300
+ }
+
+ Keyframe {
+ value: 1
+ frame: 555
+ }
+ }
+
+ KeyframeGroup {
+ target: image5
+ property: "scale"
+
+ Keyframe {
+ value: 0.01
+ frame: 555
+ }
+
+ Keyframe {
+ value: 1
+ frame: 820
+ }
+ }
+ }
+
+ PropertyAnimation {
+ id: propertyAnimation
+ target: timeline
+ property: "currentFrame"
+ running: true
+ loops: -1
+ duration: 1000
+ from: timeline.startFrame
+ to: timeline.endFrame
+ }
+
+ Image {
+ id: image
+ x: 46
+ y: 105
+ source: "welcome_windows/splash_pngs/ring_line_1.png"
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/RectangleMask.qml b/src/plugins/studiowelcome/qml/splashscreen/RectangleMask.qml
new file mode 100644
index 00000000000..d0652d84b00
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/RectangleMask.qml
@@ -0,0 +1,86 @@
+/****************************************************************************
+**
+** 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
+import QtQuick.Timeline 1.0
+
+Item {
+ width: 174
+ height: 200
+
+ Item {
+ id: rectangleMask
+ width: 0
+ height: 200
+ clip: true
+
+ Image {
+ id: image1
+ x: 0
+ y: 45
+ source: "welcome_windows/splash_pngs/Audio_Waves.png"
+ }
+
+ Timeline {
+ id: timeline
+ startFrame: 0
+ enabled: true
+ endFrame: 2000
+
+ KeyframeGroup {
+ target: rectangleMask
+ property: "width"
+
+ Keyframe {
+ value: 0
+ frame: 0
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.25, 0.10, 0.25, 1.00, 1, 1]
+ value: 175
+ frame: 997
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.00, 0.00, 0.58, 1.00, 1, 1]
+ value: 0
+ frame: 1998
+ }
+ }
+ }
+
+ PropertyAnimation {
+ id: propertyAnimation
+ target: timeline
+ property: "currentFrame"
+ running: true
+ loops: -1
+ duration: 2000
+ from: timeline.startFrame
+ to: timeline.endFrame
+ }
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Sequencer.qml b/src/plugins/studiowelcome/qml/splashscreen/Sequencer.qml
new file mode 100644
index 00000000000..8f3d8fc56a0
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Sequencer.qml
@@ -0,0 +1,629 @@
+/****************************************************************************
+**
+** 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
+import QtQuick.Timeline 1.0
+
+Item {
+ id: blocks
+ anchors.right: parent.right
+ anchors.rightMargin: 175
+ anchors.left: parent.left
+ anchors.leftMargin: 0
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 77
+ anchors.top: parent.top
+ anchors.topMargin: 0
+
+ Image {
+ id: sequencer
+ width: 175
+ height: 77
+ clip: false
+ fillMode: Image.PreserveAspectFit
+ source: "welcome_windows/splash_pngs/Step_sequencer.png"
+
+ Image {
+ id: blue_seq_block2
+ x: 3
+ y: 16
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/blue_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: peach_seq_block
+ x: 49
+ y: 24
+ width: 10
+ height: 5
+ fillMode: Image.PreserveAspectFit
+ source: "welcome_windows/sequencer_images/peach_seq.png"
+ }
+
+ Image {
+ id: pink_seq_block
+ x: 26
+ y: 23
+ width: 10
+ height: 5
+ fillMode: Image.PreserveAspectFit
+ source: "welcome_windows/sequencer_images/pink_seq.png"
+ }
+
+ Image {
+ id: blue_seq_block
+ x: 83
+ y: 23
+ width: 10
+ height: 5
+ fillMode: Image.PreserveAspectFit
+ source: "welcome_windows/sequencer_images/blue_seq.png"
+ }
+
+ Image {
+ id: pink_seq_block1
+ x: 26
+ y: 16
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/pink_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: peach_seq_block1
+ x: 15
+ y: 31
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/peach_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: pink_seq_block2
+ x: 49
+ y: 16
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/pink_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: blue_seq_block3
+ x: 61
+ y: 29
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/blue_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: pink_seq_block3
+ x: 106
+ y: 23
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/pink_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: pink_seq_block4
+ x: 129
+ y: 16
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/pink_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: blue_seq_block4
+ x: 106
+ y: 16
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/blue_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: peach_seq_block2
+ x: 118
+ y: 30
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/peach_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Image {
+ id: peach_seq_block3
+ x: 141
+ y: 30
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/peach_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+ }
+
+ Image {
+ id: blue_seq_block1
+ x: 3
+ y: 23
+ width: 10
+ height: 5
+ source: "welcome_windows/sequencer_images/blue_seq.png"
+ fillMode: Image.PreserveAspectFit
+ }
+
+ Sequencer_Bars {
+ id: seq_bars
+ x: -7
+ y: 39
+ width: 199
+ height: 69
+ }
+
+ Timeline {
+ id: timeline
+ enabled: true
+ startFrame: 0
+ endFrame: 1000
+
+ KeyframeGroup {
+ target: blue_seq_block2
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 52
+ value: 0
+ }
+
+ Keyframe {
+ frame: 53
+ value: 1
+ }
+
+ Keyframe {
+ frame: 300
+ value: 1
+ }
+
+ Keyframe {
+ frame: 301
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: blue_seq_block1
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 100
+ value: 0
+ }
+
+ Keyframe {
+ frame: 101
+ value: 1
+ }
+
+ Keyframe {
+ frame: 340
+ value: 1
+ }
+
+ Keyframe {
+ frame: 341
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: peach_seq_block1
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 175
+ value: 0
+ }
+
+ Keyframe {
+ frame: 176
+ value: 1
+ }
+
+ Keyframe {
+ frame: 432
+ value: 1
+ }
+
+ Keyframe {
+ frame: 435
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: pink_seq_block1
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 222
+ value: 0
+ }
+
+ Keyframe {
+ frame: 227
+ value: 1
+ }
+
+ Keyframe {
+ frame: 508
+ value: 1
+ }
+
+ Keyframe {
+ frame: 512
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: pink_seq_block
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 247
+ value: 0
+ }
+
+ Keyframe {
+ frame: 251
+ value: 1
+ }
+
+ Keyframe {
+ frame: 524
+ value: 1
+ }
+
+ Keyframe {
+ frame: 529
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: pink_seq_block2
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 286
+ value: 0
+ }
+
+ Keyframe {
+ frame: 290
+ value: 1
+ }
+
+ Keyframe {
+ frame: 575
+ value: 1
+ }
+
+ Keyframe {
+ frame: 580
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: peach_seq_block
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 352
+ value: 0
+ }
+
+ Keyframe {
+ frame: 357
+ value: 1
+ }
+
+ Keyframe {
+ frame: 647
+ value: 1
+ }
+
+ Keyframe {
+ frame: 652
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: blue_seq_block3
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 419
+ value: 0
+ }
+
+ Keyframe {
+ frame: 424
+ value: 1
+ }
+
+ Keyframe {
+ frame: 695
+ value: 1
+ }
+
+ Keyframe {
+ frame: 699
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: blue_seq_block
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 461
+ value: 0
+ }
+
+ Keyframe {
+ frame: 756
+ value: 1
+ }
+
+ Keyframe {
+ frame: 761
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: blue_seq_block4
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 502
+ value: 0
+ }
+
+ Keyframe {
+ frame: 508
+ value: 1
+ }
+
+ Keyframe {
+ frame: 799
+ value: 1
+ }
+
+ Keyframe {
+ frame: 804
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: pink_seq_block3
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 525
+ value: 0
+ }
+
+ Keyframe {
+ frame: 530
+ value: 1
+ }
+
+ Keyframe {
+ frame: 840
+ value: 1
+ }
+
+ Keyframe {
+ frame: 848
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: peach_seq_block2
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 661
+ value: 0
+ }
+
+ Keyframe {
+ frame: 667
+ value: 1
+ }
+
+ Keyframe {
+ frame: 901
+ value: 1
+ }
+
+ Keyframe {
+ frame: 906
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: pink_seq_block4
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 756
+ value: 0
+ }
+
+ Keyframe {
+ frame: 760
+ value: 1
+ }
+
+ Keyframe {
+ frame: 955
+ value: 1
+ }
+
+ Keyframe {
+ frame: 961
+ value: 0
+ }
+ }
+
+ KeyframeGroup {
+ target: peach_seq_block3
+ property: "opacity"
+
+ Keyframe {
+ frame: 0
+ value: 0
+ }
+
+ Keyframe {
+ frame: 831
+ value: 0
+ }
+
+ Keyframe {
+ frame: 837
+ value: 1
+ }
+
+ Keyframe {
+ frame: 989
+ value: 1
+ }
+
+ Keyframe {
+ frame: 999
+ value: 0
+ }
+ }
+ }
+
+ PropertyAnimation {
+ id: propertyAnimation
+ target: timeline
+ property: "currentFrame"
+ running: true
+ duration: 1200
+ loops: -1
+ from: timeline.startFrame
+ to: timeline.endFrame
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Sequencer_Bars.qml b/src/plugins/studiowelcome/qml/splashscreen/Sequencer_Bars.qml
new file mode 100644
index 00000000000..477cd00b8cd
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Sequencer_Bars.qml
@@ -0,0 +1,643 @@
+/****************************************************************************
+**
+** 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
+import QtQuick.Timeline 1.0
+
+Item {
+ id: item1
+ width: 200
+ height: 100
+
+ Rectangle {
+ id: mask_1
+ x: 0
+ y: 8
+ width: 7
+ height: 4
+ color: "#00000000"
+ clip: true
+
+ Image {
+ id: bar_1
+ width: 72
+ anchors.top: parent.top
+ anchors.topMargin: 0
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 0
+ anchors.left: parent.left
+ anchors.leftMargin: 8
+ source: "welcome_windows/sequencer_images/seq_bar_1.png"
+ }
+ }
+
+ Rectangle {
+ id: mask_2
+ x: 0
+ y: 13
+ width: 6
+ height: 6
+ color: "#00000000"
+ clip: true
+
+ Image {
+ id: bar_2
+ width: 55
+ anchors.left: parent.left
+ anchors.leftMargin: 8
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 0
+ anchors.top: parent.top
+ anchors.topMargin: 0
+ source: "welcome_windows/sequencer_images/seq_bar_2.png"
+ }
+ }
+
+ Rectangle {
+ id: mask_3
+ x: 0
+ y: 21
+ width: 50
+ height: 5
+ color: "#00000000"
+ clip: true
+
+ Image {
+ id: bar_3
+ x: 8
+ y: 0
+ width: 36
+ height: 5
+ source: "welcome_windows/sequencer_images/seq_bar_3.png"
+ }
+ }
+
+ Rectangle {
+ id: mask_4
+ x: 0
+ y: 28
+ width: 99
+ height: 4
+ color: "#00000000"
+ clip: true
+
+ Image {
+ id: bar_4
+ width: 79
+ anchors.left: parent.left
+ anchors.leftMargin: 8
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 0
+ anchors.top: parent.top
+ anchors.topMargin: 0
+ source: "welcome_windows/sequencer_images/seq_bar_4.png"
+ }
+ }
+
+ Rectangle {
+ id: mask_5
+ x: 115
+ y: 8
+ width: 85
+ height: 4
+ color: "#00000000"
+ clip: true
+
+ Image {
+ id: bar_5
+ width: 72
+ anchors.left: parent.left
+ anchors.leftMargin: 5
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 0
+ anchors.top: parent.top
+ anchors.topMargin: 0
+ source: "welcome_windows/sequencer_images/seq_bar_5.png"
+ }
+ }
+
+ Rectangle {
+ id: mask_6
+ x: 115
+ y: 13
+ width: 69
+ height: 6
+ color: "#00000000"
+ clip: true
+
+ Image {
+ id: bar_6
+ width: 45
+ anchors.left: parent.left
+ anchors.leftMargin: 5
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 0
+ anchors.top: parent.top
+ anchors.topMargin: 0
+ source: "welcome_windows/sequencer_images/seq_bar_6.png"
+ }
+ }
+
+ Rectangle {
+ id: mask_7
+ x: 115
+ y: 21
+ width: 4
+ height: 5
+ color: "#00000000"
+ clip: true
+
+ Image {
+ id: bar_7
+ width: 64
+ anchors.left: parent.left
+ anchors.leftMargin: 5
+ anchors.bottom: parent.bottom
+ anchors.bottomMargin: 0
+ anchors.top: parent.top
+ anchors.topMargin: 0
+ source: "welcome_windows/sequencer_images/seq_bar_7.png"
+ }
+ }
+
+ Timeline {
+ id: timeline
+ enabled: true
+ startFrame: 0
+ endFrame: 1000
+
+ KeyframeGroup {
+ target: mask_1
+ property: "width"
+ Keyframe {
+ frame: 0
+ value: 6
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.25, 0.46, 0.45, 0.94, 1, 1]
+ frame: 499
+ value: 87
+ }
+
+ Keyframe {
+ frame: 999
+ value: 6
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_1
+ property: "height"
+ Keyframe {
+ frame: 0
+ value: 4
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.25, 0.46, 0.45, 0.94, 1, 1]
+ frame: 499
+ value: 4
+ }
+
+ Keyframe {
+ frame: 999
+ value: 4
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_2
+ property: "width"
+ Keyframe {
+ frame: 0
+ value: 6
+ }
+
+ Keyframe {
+ frame: 151
+ value: 7
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.55, 0.08, 0.68, 0.53, 1, 1]
+ frame: 677
+ value: 64
+ }
+
+ Keyframe {
+ frame: 999
+ value: 6
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_2
+ property: "height"
+ Keyframe {
+ frame: 0
+ value: 6
+ }
+
+ Keyframe {
+ frame: 151
+ value: 6
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.55, 0.08, 0.68, 0.53, 1, 1]
+ frame: 677
+ value: 6
+ }
+
+ Keyframe {
+ frame: 999
+ value: 6
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_3
+ property: "width"
+ Keyframe {
+ frame: 0
+ value: 6
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.25, 0.25, 0.75, 0.75, 1, 1]
+ frame: 317
+ value: 47
+ }
+
+ Keyframe {
+ frame: 999
+ value: 6
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.17, 0.84, 0.44, 1.00, 1, 1]
+ frame: 544
+ value: 50
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_3
+ property: "height"
+ Keyframe {
+ frame: 0
+ value: 5
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.25, 0.25, 0.75, 0.75, 1, 1]
+ frame: 317
+ value: 5
+ }
+
+ Keyframe {
+ frame: 999
+ value: 5
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.17, 0.84, 0.44, 1.00, 1, 1]
+ frame: 544
+ value: 5
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_4
+ property: "width"
+ Keyframe {
+ frame: 0
+ value: 6
+ }
+
+ Keyframe {
+ frame: 243
+ value: 6
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.00, 0.00, 0.20, 1.00, 1, 1]
+ frame: 682
+ value: 92
+ }
+
+ Keyframe {
+ frame: 755
+ value: 90
+ }
+
+ Keyframe {
+ frame: 999
+ value: 6
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_4
+ property: "height"
+ Keyframe {
+ frame: 0
+ value: 4
+ }
+
+ Keyframe {
+ frame: 243
+ value: 4
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.00, 0.00, 0.20, 1.00, 1, 1]
+ frame: 682
+ value: 4
+ }
+
+ Keyframe {
+ frame: 755
+ value: 4
+ }
+
+ Keyframe {
+ frame: 999
+ value: 4
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_5
+ property: "width"
+ Keyframe {
+ frame: 0
+ value: 3
+ }
+
+ Keyframe {
+ frame: 182
+ value: 3
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.77, 0.00, 0.17, 1.00, 1, 1]
+ frame: 462
+ value: 85
+ }
+
+ Keyframe {
+ frame: 625
+ value: 85
+ }
+
+ Keyframe {
+ frame: 999
+ value: 4
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_5
+ property: "height"
+ Keyframe {
+ frame: 0
+ value: 4
+ }
+
+ Keyframe {
+ frame: 182
+ value: 4
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.77, 0.00, 0.17, 1.00, 1, 1]
+ frame: 462
+ value: 4
+ }
+
+ Keyframe {
+ frame: 625
+ value: 4
+ }
+
+ Keyframe {
+ frame: 999
+ value: 4
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_6
+ property: "width"
+ Keyframe {
+ frame: 0
+ value: 3
+ }
+
+ Keyframe {
+ frame: 364
+ value: 3
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.19, 1.00, 0.22, 1.00, 1, 1]
+ frame: 695
+ value: 54
+ }
+
+ Keyframe {
+ frame: 999
+ value: 4
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_6
+ property: "height"
+ Keyframe {
+ frame: 0
+ value: 6
+ }
+
+ Keyframe {
+ frame: 364
+ value: 6
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.19, 1.00, 0.22, 1.00, 1, 1]
+ frame: 695
+ value: 6
+ }
+
+ Keyframe {
+ frame: 999
+ value: 6
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_7
+ property: "width"
+ Keyframe {
+ frame: 0
+ value: 3
+ }
+
+ Keyframe {
+ frame: 444
+ value: 3
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.00, 0.00, 0.20, 1.00, 1, 1]
+ frame: 759
+ value: 77
+ }
+
+ Keyframe {
+ frame: 845
+ value: 77
+ }
+
+ Keyframe {
+ frame: 999
+ value: 4
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_7
+ property: "height"
+ Keyframe {
+ frame: 0
+ value: 5
+ }
+
+ Keyframe {
+ frame: 444
+ value: 5
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.00, 0.00, 0.20, 1.00, 1, 1]
+ frame: 759
+ value: 5
+ }
+
+ Keyframe {
+ frame: 845
+ value: 5
+ }
+
+ Keyframe {
+ frame: 999
+ value: 5
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_8
+ property: "width"
+ Keyframe {
+ frame: 0
+ value: 3
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.55, 0.06, 0.68, 0.19, 1, 1]
+ frame: 303
+ value: 85
+ }
+
+ Keyframe {
+ frame: 516
+ value: 85
+ }
+
+ Keyframe {
+ frame: 999
+ value: 4
+ }
+ }
+
+ KeyframeGroup {
+ target: mask_8
+ property: "height"
+ Keyframe {
+ frame: 0
+ value: 4
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.55, 0.06, 0.68, 0.19, 1, 1]
+ frame: 303
+ value: 4
+ }
+
+ Keyframe {
+ frame: 516
+ value: 4
+ }
+
+ Keyframe {
+ frame: 999
+ value: 4
+ }
+ }
+ }
+
+ PropertyAnimation {
+ id: propertyAnimation
+ target: timeline
+ property: "currentFrame"
+ running: true
+ duration: 3400
+ loops: -1
+ from: timeline.startFrame
+ to: timeline.endFrame
+ }
+
+ Rectangle {
+ id: mask_8
+ x: 115
+ y: 28
+ width: 85
+ height: 4
+ color: "#00000000"
+ clip: true
+
+ Image {
+ id: bar_8
+ x: 5
+ y: 0
+ width: 72
+ height: 4
+ source: "welcome_windows/sequencer_images/seq_bar_8.png"
+ }
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/SlidersTogether.qml b/src/plugins/studiowelcome/qml/splashscreen/SlidersTogether.qml
new file mode 100644
index 00000000000..c05c6efce9a
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/SlidersTogether.qml
@@ -0,0 +1,104 @@
+/****************************************************************************
+**
+** 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
+import QtQuick.Timeline 1.0
+
+Item {
+ width: 174
+ height: 200
+
+ Item {
+ id: rectangleMask
+ x: -1
+ y: -2
+ width: 31
+ height: 49
+ clip: true
+
+ Item {
+ id: rectangle
+ x: 0
+ y: 0
+ width: 200
+ height: 200
+ clip: true
+
+ Image {
+ id: slidersTogether
+ scale: 0.5
+ source: "welcome_windows/splash_pngs/Sliders_together.png"
+ }
+ }
+ }
+
+ Timeline {
+ id: timeline
+ startFrame: 0
+ enabled: true
+ endFrame: 1000
+
+ KeyframeGroup {
+ target: rectangleMask
+ property: "width"
+
+ Keyframe {
+ value: 30
+ frame: 0
+ }
+
+ Keyframe {
+ easing.bezierCurve: [0.55, 0.06, 0.68, 0.19, 1, 1]
+ value: 106
+ frame: 740
+ }
+
+ Keyframe {
+ value: 0
+ frame: 1000
+ }
+ }
+
+ KeyframeGroup {
+ target: rectangleMask
+ property: "height"
+ Keyframe {
+ value: 49
+ frame: 505
+ }
+ }
+ }
+
+ PropertyAnimation {
+ id: propertyAnimation
+ target: timeline
+ property: "currentFrame"
+ running: true
+ loops: -1
+ duration: 1300
+ from: timeline.startFrame
+ to: timeline.endFrame
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Splash_Image25d.qml b/src/plugins/studiowelcome/qml/splashscreen/Splash_Image25d.qml
new file mode 100644
index 00000000000..3d54304195b
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Splash_Image25d.qml
@@ -0,0 +1,80 @@
+/****************************************************************************
+**
+** 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.3
+
+Rectangle {
+ id: splashBackground
+ width: 460
+ height: 480
+ color: "#11102d"
+
+ layer.enabled: true
+ layer.textureSize: Qt.size(width * 2, height * 2)
+ layer.smooth: true
+
+ Item {
+ id: composition
+ width: 460
+ height: 480
+
+ layer.enabled: true
+ layer.textureSize: Qt.size(width * 2, height * 2)
+ layer.smooth: true
+
+ Splash_Image2d_png {
+ x: 25
+ y: 15
+ antialiasing: false
+ scale: 1.4
+ transform: Matrix4x4 {
+ matrix: Qt.matrix4x4(1.12606, 0.06371, 0, 0, 0.26038, 0.90592,
+ 0, 0, 0.00000, 0.0000, 1.0, 0,
+ 0.00121, -0.00009, 0.0, 1)
+ }
+ }
+ }
+
+ Image {
+ id: highlight
+ x: -56
+ y: -19
+ width: 520
+ height: 506
+ fillMode: Image.PreserveAspectFit
+ source: "welcome_windows/highlight.png"
+ }
+
+ Image {
+ id: hand
+ x: 245
+ y: 227
+ width: 224
+ height: 264
+ visible: true
+ fillMode: Image.PreserveAspectFit
+ source: "welcome_windows/hand.png"
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Splash_Image2d_png.qml b/src/plugins/studiowelcome/qml/splashscreen/Splash_Image2d_png.qml
new file mode 100644
index 00000000000..5f07be16728
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Splash_Image2d_png.qml
@@ -0,0 +1,96 @@
+/****************************************************************************
+**
+** 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
+
+Rectangle {
+ id: splashBackground
+ width: 460
+ height: 480
+ color: "#00ffffff"
+ visible: true
+
+ Image {
+ id: image
+ x: -228
+ y: -66
+ scale: 0.5
+ source: "welcome_windows/splash_pngs/UI_Background.png"
+ }
+
+ RectangleMask {
+ id: rectangleMask
+ x: 23
+ y: 156
+ width: 209
+ height: 199
+ scale: 0.5
+ }
+
+ Image1 {
+ id: sliderBackground
+ x: 155
+ y: 267
+ height: 86
+ }
+
+ SlidersTogether {
+ id: slidersTogether
+ x: 185
+ y: 295
+ }
+
+ Image {
+ id: slidersOff
+ x: 191
+ y: 316
+ scale: 0.5
+ source: "welcome_windows/splash_pngs/sliders_off.png"
+ }
+
+ Image2 {
+ id: rings
+ x: 84
+ y: 227
+ scale: 0.5
+ }
+
+ ArcAnimation {
+ id: arcAnimation
+ x: 9
+ y: 13
+ scale: 0.5
+ }
+
+ Sequencer {
+ id: sequencer
+ x: 152
+ y: 119
+ anchors.rightMargin: 119
+ anchors.bottomMargin: 264
+ anchors.leftMargin: 154
+ anchors.topMargin: 108
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml b/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml
new file mode 100644
index 00000000000..310861184de
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/Welcome_splash.qml
@@ -0,0 +1,252 @@
+/****************************************************************************
+**
+** 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.7
+import QtQuick.Controls 2.3
+import StudioFonts 1.0
+import QtQuick.Layouts 1.0
+
+Image {
+ id: welcome_splash
+ width: 800
+ height: 480
+ source: "welcome_windows/welcome_1.png"
+
+ signal goNext
+ signal closeClicked
+
+ property alias showSplashScreen: do_not_show_checkBox.checked
+ property bool loadingPlugins: true
+
+ Image {
+ id: logo
+ x: 16
+ y: 18
+ width: 76
+ height: 66
+ fillMode: Image.PreserveAspectFit
+ source: "welcome_windows/logo.png"
+ }
+
+ Text {
+ id: qt_design_studio
+ x: 14
+ y: 93
+ color: "#4cd265"
+ text: qsTr("Qt Design Studio")
+ font.pixelSize: 36
+ font.family: StudioFonts.titilliumWeb_light
+ }
+
+ Text {
+ id: software_for_ui
+ x: 15
+ y: 141
+ width: 250
+ height: 30
+ color: "#ffffff"
+ text: qsTr("Software for UI and UX Designers")
+ renderType: Text.QtRendering
+ font.pixelSize: 18
+ font.family: StudioFonts.titilliumWeb_light
+ }
+
+ Text {
+ id: copyright
+ x: 15
+ y: 183
+ width: 270
+ height: 24
+ color: "#ffffff"
+ text: qsTr("Copyright 2008 - 2018 The Qt Company")
+ font.pixelSize: 16
+ font.family: StudioFonts.titilliumWeb_light
+ }
+
+ Text {
+ id: all_rights_reserved
+ x: 15
+ y: 207
+ width: 250
+ height: 24
+ color: "#ffffff"
+ text: qsTr("All Rights Reserved")
+ font.pixelSize: 16
+ font.family: StudioFonts.titilliumWeb_light
+ }
+
+ Text {
+ id: marketing_1
+ x: 16
+ y: 302
+ width: 355
+ height: 31
+ color: "#ffffff"
+ text: qsTr("Multi-paradigm language for creating highly dynamic applications.")
+ wrapMode: Text.WordWrap
+ font.family: StudioFonts.titilliumWeb_light
+ font.pixelSize: 12
+ font.wordSpacing: 0
+ }
+
+ Text {
+ id: marketing_2
+ x: 16
+ y: 323
+ width: 311
+ height: 31
+ color: "#ffffff"
+ text: qsTr("Run your concepts and prototypes on your final hardware.")
+ wrapMode: Text.WordWrap
+ font.family: StudioFonts.titilliumWeb_light
+ font.pixelSize: 12
+ font.wordSpacing: 0
+ }
+
+ Text {
+ id: marketing_3
+ x: 16
+ y: 344
+ width: 311
+ height: 31
+ color: "#ffffff"
+ text: qsTr("Seamless integration between designer and developer.")
+ wrapMode: Text.WordWrap
+ font.family: StudioFonts.titilliumWeb_light
+ font.pixelSize: 12
+ font.wordSpacing: 0
+ }
+
+ Dof_Effect {
+ id: dof_Effect
+ x: 358
+ width: 442
+ height: 480
+ visible: true
+ maskBlurSamples: 64
+ maskBlurRadius: 32
+ gradientStopPosition4: 1.3
+ gradientStopPosition3: 0.9
+ gradientStopPosition2: 0.6
+ gradientStopPosition1: 0
+
+ Splash_Image25d {
+ id: animated_artwork
+ x: 358
+ y: 0
+ width: 442
+ height: 480
+ clip: true
+ }
+ }
+
+ Image {
+ id: close_window
+ x: 779
+ y: 5
+ width: 13
+ height: 13
+ fillMode: Image.PreserveAspectFit
+ source: "welcome_windows/close.png"
+ opacity: area.containsMouse ? 1 : 0.8
+ MouseArea {
+ id: area
+ hoverEnabled: true
+ anchors.fill: parent
+ anchors.margins: -10
+ onClicked: welcome_splash.closeClicked()
+ }
+ }
+
+ Text {
+ id: do_not_show_text
+ x: 42
+ y: 432
+ width: 143
+ height: 31
+ color: "#ffffff"
+ text: qsTr("Don't show this again")
+ font.wordSpacing: 0
+ font.pixelSize: 12
+ font.family: StudioFonts.titilliumWeb_light
+ wrapMode: Text.WordWrap
+ }
+
+ CheckBox {
+ id: do_not_show_checkBox
+ x: 7
+ y: 421
+ width: 34
+ height: 40
+ text: qsTr("")
+ scale: 0.5
+ font.pointSize: 9
+ }
+
+ RowLayout {
+ x: 16
+ y: 254
+
+ visible: welcome_splash.loadingPlugins
+
+ Text {
+ id: text1
+ color: "#ffffff"
+ text: qsTr("%")
+ font.pixelSize: 12
+ RotationAnimator {
+ target: text1
+ from: 0
+ to: 360
+ duration: 1800
+ running: true
+ loops: -1
+ }
+ }
+
+ Text {
+ id: loading_progress
+ color: "#ffffff"
+ text: qsTr("Loading Plugins")
+ font.family: StudioFonts.titilliumWeb_light
+ font.pixelSize: 16
+ }
+
+ Text {
+ id: text2
+ color: "#ffffff"
+ text: qsTr("%")
+ font.pixelSize: 12
+ RotationAnimator {
+ target: text2
+ from: 0
+ to: 360
+ duration: 2000
+ running: true
+ loops: -1
+ }
+ }
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/main.qml b/src/plugins/studiowelcome/qml/splashscreen/main.qml
new file mode 100644
index 00000000000..190f41e2e5d
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/main.qml
@@ -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 QtQuick 2.0
+
+Item {
+ id: root
+ width: 800
+ height: 480
+
+ signal closeClicked
+ signal checkBoxToggled
+
+ property alias showSplashScreen: welcome_splash.showSplashScreen
+ property alias loadingPlugins: welcome_splash.loadingPlugins
+
+ Welcome_splash {
+ onShowSplashScreenChanged: root.checkBoxToggled()
+ id: welcome_splash
+ x: 0
+ y: 0
+ antialiasing: true
+ onCloseClicked: root.closeClicked()
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_screens.qmlproject b/src/plugins/studiowelcome/qml/splashscreen/welcome_screens.qmlproject
new file mode 100644
index 00000000000..415e8f203dc
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/splashscreen/welcome_screens.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: [ "../../../../share/3rdparty/studiofonts" ]
+
+ Environment {
+ QT_AUTO_SCREEN_SCALE_FACTOR: "1"
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/close.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/close.png
new file mode 100644
index 00000000000..940e1687faf
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/close.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/hand.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/hand.png
new file mode 100644
index 00000000000..73944a4bad8
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/hand.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/highlight.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/highlight.png
new file mode 100644
index 00000000000..d9e6db2b053
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/highlight.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/logo.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/logo.png
new file mode 100644
index 00000000000..f7b6fb1736e
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/logo.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/blue_seq.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/blue_seq.png
new file mode 100644
index 00000000000..7697fc47471
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/blue_seq.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/peach_seq.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/peach_seq.png
new file mode 100644
index 00000000000..28fd238433c
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/peach_seq.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/pink_seq.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/pink_seq.png
new file mode 100644
index 00000000000..714f1f79d40
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/pink_seq.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_1.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_1.png
new file mode 100644
index 00000000000..6ac5b5c43f8
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_1.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_2.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_2.png
new file mode 100644
index 00000000000..eb942aadad8
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_2.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_3.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_3.png
new file mode 100644
index 00000000000..b33feda2a24
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_3.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_4.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_4.png
new file mode 100644
index 00000000000..3e6a6ea8176
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_4.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_5.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_5.png
new file mode 100644
index 00000000000..471f62da7da
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_5.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_6.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_6.png
new file mode 100644
index 00000000000..b6612b192b2
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_6.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_7.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_7.png
new file mode 100644
index 00000000000..7bffeb9921c
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_7.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_8.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_8.png
new file mode 100644
index 00000000000..0fe2a943db5
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/sequencer_images/seq_bar_8.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Audio_Waves.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Audio_Waves.png
new file mode 100644
index 00000000000..177a13e6ef4
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Audio_Waves.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Slider_on.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Slider_on.png
new file mode 100644
index 00000000000..326bb72d2eb
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Slider_on.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Sliders_together.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Sliders_together.png
new file mode 100644
index 00000000000..870eb34e1e5
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Sliders_together.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Step_sequencer.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Step_sequencer.png
new file mode 100644
index 00000000000..79e05d8ada9
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/Step_sequencer.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/UI_Background.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/UI_Background.png
new file mode 100644
index 00000000000..edf9debd10a
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/UI_Background.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_1_in.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_1_in.png
new file mode 100644
index 00000000000..0388a99ea0a
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_1_in.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_1_out.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_1_out.png
new file mode 100644
index 00000000000..662fcb0fe87
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_1_out.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_2.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_2.png
new file mode 100644
index 00000000000..1bc54f88276
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_2.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_3.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_3.png
new file mode 100644
index 00000000000..df8c7b5c70d
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_3.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_line_1.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_line_1.png
new file mode 100644
index 00000000000..022a6bc08dc
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_line_1.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_line_2.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_line_2.png
new file mode 100644
index 00000000000..f857c92b74b
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/ring_line_2.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/sliders_off.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/sliders_off.png
new file mode 100644
index 00000000000..9e8c2c7bdf3
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/splash_pngs/sliders_off.png differ
diff --git a/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/welcome_1.png b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/welcome_1.png
new file mode 100644
index 00000000000..58b68511be9
Binary files /dev/null and b/src/plugins/studiowelcome/qml/splashscreen/welcome_windows/welcome_1.png differ
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/ExamplesModel.qml b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml
new file mode 100644
index 00000000000..3f8ce9bc821
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/ExamplesModel.qml
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** 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 {
+ projectName: "ClusterTutorial"
+ qmlFileName: "Cluster_Art.ui.qml"
+ thumbnail: "images/tutorialclusterdemo_thumbnail.png"
+ displayName: "Cluster Tutorial"
+ }
+
+ ListElement {
+ projectName: "CoffeeMachine"
+ qmlFileName: "ApplicationFlowForm.ui.qml"
+ thumbnail: "images/coffeemachinedemo_thumbnail.png"
+ displayName: "Coffee Machine"
+ }
+
+ ListElement {
+ projectName: "SideMenu"
+ qmlFileName: "MainFile.ui.qml"
+ thumbnail: "images/sidemenu_demo.png"
+ displayName: "Side Menu"
+ }
+
+ ListElement {
+ projectName: "WebinarDemo"
+ qmlFileName: "MainApp.ui.qml"
+ thumbnail: "images/webinardemo_thumbnail.png"
+ displayName: "Webinar Demo"
+ }
+
+ ListElement {
+ projectName: "EBikeDesign"
+ qmlFileName: "Screen01.ui.qml"
+ thumbnail: "images/ebike_demo_thumbnail.png"
+ displayName: "E-Bike Design"
+ }
+
+ ListElement {
+ projectName: "ProgressBar"
+ qmlFileName: "ProgressBar.ui.qml"
+ thumbnail: "images/progressbar_demo.png"
+ displayName: "Progress Bar"
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/HoverOverDesaturate.qml b/src/plugins/studiowelcome/qml/welcomepage/HoverOverDesaturate.qml
new file mode 100644
index 00000000000..823d9407e66
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/HoverOverDesaturate.qml
@@ -0,0 +1,188 @@
+/****************************************************************************
+**
+** 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 {
+ visible: true
+ width: 270
+ height: 175
+ property alias imageSource: image.source
+ property alias labelText: label.text
+
+ 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.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"
+ }
+ }
+ }
+
+ 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
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/MyButton.qml b/src/plugins/studiowelcome/qml/welcomepage/MyButton.qml
new file mode 100644
index 00000000000..304adc31c30
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/MyButton.qml
@@ -0,0 +1,51 @@
+/****************************************************************************
+**
+** 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.Controls 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
+
+ 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 {
+ }
+}
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..6faf3a65547
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/ProjectsGrid.qml
@@ -0,0 +1,70 @@
+/****************************************************************************
+**
+** 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
+
+ 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
+ }
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: root.itemSelected(index, root.model.get(index))
+ }
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/SaturationEffect.qml b/src/plugins/studiowelcome/qml/welcomepage/SaturationEffect.qml
new file mode 100644
index 00000000000..4f85e681a46
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/SaturationEffect.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.
+**
+****************************************************************************/
+
+import QtQuick 2.0
+import QtGraphicalEffects 1.0
+
+Item {
+ id: root
+
+ property real desaturation: 1.0
+ layer.enabled: true
+ layer.effect: Desaturate {
+ desaturation: root.desaturation
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/TutorialsModel.qml b/src/plugins/studiowelcome/qml/welcomepage/TutorialsModel.qml
new file mode 100644
index 00000000000..aa797b07524
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/TutorialsModel.qml
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** 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: "Learn to use Qt Design Studio (Part 1)"
+ thumbnail: "images/tutorial1.png"
+ url: "https://www.youtube.com/watch?v=aV6kFxH3Xws"
+ }
+
+ ListElement {
+ displayName: "Learn to use Qt Design Studio (Part 2)"
+ thumbnail: "images/tutorial2.png"
+ url: "https://www.youtube.com/watch?v=Z3uPoe-4UAw"
+ }
+
+ ListElement {
+ displayName: "Learn to use Qt Design Studio (Part 3)"
+ thumbnail: "images/tutorial3.png"
+ url: "https://www.youtube.com/watch?v=9AjvxoeqAKo"
+ }
+
+ ListElement {
+ displayName: "Learn to use Qt Design Studio (Part 4)"
+ thumbnail: "images/tutorial4.png"
+ url: "https://www.youtube.com/watch?v=8pJpdMwLaAg"
+ }
+
+ ListElement {
+ displayName: "Learn to use Qt Design Studio (Part 5)"
+ thumbnail: "images/tutorial5.png"
+ url: "https://www.youtube.com/watch?v=U91nAFReAoU"
+ }
+
+ 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: "Qt Design Studio: 1.0 and Ready to Go!"
+ thumbnail: "images/ready_to_go.png"
+ url: "https://www.youtube.com/watch?v=i9ToZ_04kTk"
+ }
+
+ ListElement {
+ displayName: "QTWS - Designer and Developer Workflow"
+ thumbnail: "images/qtws_video_thumbnail.png"
+ url: "https://www.youtube.com/watch?v=4ug0EUdS2RM"
+ }
+}
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/coffeemachinedemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/coffeemachinedemo_thumbnail.png
new file mode 100644
index 00000000000..565b1d62b1a
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/coffeemachinedemo_thumbnail.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/designer_and_developers.png b/src/plugins/studiowelcome/qml/welcomepage/images/designer_and_developers.png
new file mode 100644
index 00000000000..870a597282f
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/designer_and_developers.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/ebike_demo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/ebike_demo_thumbnail.png
new file mode 100644
index 00000000000..67cf3b9bff0
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/ebike_demo_thumbnail.png differ
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/src/plugins/studiowelcome/qml/welcomepage/images/progressbar_demo.png b/src/plugins/studiowelcome/qml/welcomepage/images/progressbar_demo.png
new file mode 100644
index 00000000000..b1af2d8f410
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/progressbar_demo.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/qtws_video_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/qtws_video_thumbnail.png
new file mode 100644
index 00000000000..e24783aee01
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/qtws_video_thumbnail.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/ready_to_go.png b/src/plugins/studiowelcome/qml/welcomepage/images/ready_to_go.png
new file mode 100644
index 00000000000..af81a8a1d3a
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/ready_to_go.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/sidemenu_demo.png b/src/plugins/studiowelcome/qml/welcomepage/images/sidemenu_demo.png
new file mode 100644
index 00000000000..b577ed4a0db
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/sidemenu_demo.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/thumbnail_test.png b/src/plugins/studiowelcome/qml/welcomepage/images/thumbnail_test.png
new file mode 100644
index 00000000000..3c4834e6448
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/thumbnail_test.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/tutorial1.png b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial1.png
new file mode 100644
index 00000000000..6d8d8bbe61c
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial1.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/tutorial2.png b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial2.png
new file mode 100644
index 00000000000..753e5d0937a
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial2.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/tutorial3.png b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial3.png
new file mode 100644
index 00000000000..82c5e1cdd5b
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial3.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/tutorial4.png b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial4.png
new file mode 100644
index 00000000000..1e1180fddb6
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial4.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/tutorial5.png b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial5.png
new file mode 100644
index 00000000000..f0cefc0e6d8
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/tutorial5.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/tutorialclusterdemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/tutorialclusterdemo_thumbnail.png
new file mode 100644
index 00000000000..925a1247ca6
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/tutorialclusterdemo_thumbnail.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/webinar1.png b/src/plugins/studiowelcome/qml/welcomepage/images/webinar1.png
new file mode 100644
index 00000000000..ba24ffc3bf2
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/webinar1.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/webinar2.png b/src/plugins/studiowelcome/qml/welcomepage/images/webinar2.png
new file mode 100644
index 00000000000..325c7cdc33e
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/webinar2.png differ
diff --git a/src/plugins/studiowelcome/qml/welcomepage/images/webinardemo_thumbnail.png b/src/plugins/studiowelcome/qml/welcomepage/images/webinardemo_thumbnail.png
new file mode 100644
index 00000000000..3cd777ab3fc
Binary files /dev/null and b/src/plugins/studiowelcome/qml/welcomepage/images/webinardemo_thumbnail.png differ
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..3a37cc15987
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/main.qml
@@ -0,0 +1,189 @@
+/****************************************************************************
+**
+** 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
+
+ ScrollView{
+ ProjectsGrid {
+ model: ProjectModel {
+ id: projectModel
+ }
+ onItemSelected: projectModel.openProjectAt(index)
+ }
+ }
+
+ ScrollView {
+ ProjectsGrid {
+ model: ExamplesModel {}
+ onItemSelected: projectModel.openExample(item.projectName, item.qmlFileName)
+ }
+ }
+
+ ScrollView{
+ ProjectsGrid {
+ model: TutorialsModel {}
+ onItemSelected: 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")
+ bottomPadding: 6
+ topPadding: 6.8
+ 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/")
+ }
+ }
+ }
+}
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..d0524f3b465
--- /dev/null
+++ b/src/plugins/studiowelcome/qml/welcomepage/mockData/projectmodel/ProjectModel.qml
@@ -0,0 +1,136 @@
+/****************************************************************************
+**
+** 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: "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/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/studiowelcome.pro b/src/plugins/studiowelcome/studiowelcome.pro
new file mode 100644
index 00000000000..183f955a490
--- /dev/null
+++ b/src/plugins/studiowelcome/studiowelcome.pro
@@ -0,0 +1,27 @@
+DEFINES += STUDIOWELCOME_LIBRARY
+
+QT += quick quickwidgets
+
+include(../../qtcreatorplugin.pri)
+
+## magic fix for unix builds
+RCC_DIR = .
+
+DEFINES += STUDIO_QML_PATH=\\\"$$PWD/qml/\\\"
+
+HEADERS += \
+ studiowelcome_global.h \
+ studiowelcomeplugin.h \
+
+SOURCES += \
+ studiowelcomeplugin.cpp
+
+OTHER_FILES += \
+ StudioWelcome.json.in
+
+RESOURCES += \
+ ../../share/3rdparty/studiofonts/studiofonts.qrc \
+ studiowelcome.qrc
+
+RESOURCES += \
+ $$files(qml/*)
diff --git a/src/plugins/studiowelcome/studiowelcome.qrc b/src/plugins/studiowelcome/studiowelcome.qrc
new file mode 100644
index 00000000000..59e410ba55a
--- /dev/null
+++ b/src/plugins/studiowelcome/studiowelcome.qrc
@@ -0,0 +1,6 @@
+
+
+ images/mode_welcome_mask.png
+ images/mode_welcome_mask@2x.png
+
+
diff --git a/src/plugins/studiowelcome/studiowelcome_dependencies.pri b/src/plugins/studiowelcome/studiowelcome_dependencies.pri
new file mode 100644
index 00000000000..748b036fc1e
--- /dev/null
+++ b/src/plugins/studiowelcome/studiowelcome_dependencies.pri
@@ -0,0 +1,11 @@
+QTC_PLUGIN_NAME = StudioWelcome
+QTC_LIB_DEPENDS += \
+ extensionsystem \
+ utils
+
+QTC_PLUGIN_DEPENDS += \
+ coreplugin \
+ projectexplorer \
+ qtsupport
+
+CONFIG(licensechecker): QTC_PLUGIN_DEPENDS += licensechecker
diff --git a/src/plugins/studiowelcome/studiowelcome_global.h b/src/plugins/studiowelcome/studiowelcome_global.h
new file mode 100644
index 00000000000..6822c2a128f
--- /dev/null
+++ b/src/plugins/studiowelcome/studiowelcome_global.h
@@ -0,0 +1,34 @@
+/****************************************************************************
+**
+** 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 once
+
+#include
+
+#if defined(STUDIOWELCOME_LIBRARY)
+# define STUDIOWELCOME_EXPORT Q_DECL_EXPORT
+#else
+# define STUDIOWELCOME_EXPORT Q_DECL_IMPORT
+#endif
diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.cpp b/src/plugins/studiowelcome/studiowelcomeplugin.cpp
new file mode 100644
index 00000000000..5963faafeac
--- /dev/null
+++ b/src/plugins/studiowelcome/studiowelcomeplugin.cpp
@@ -0,0 +1,289 @@
+/****************************************************************************
+**
+** 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.
+**
+****************************************************************************/
+
+#include "studiowelcomeplugin.h"
+
+#include
+#include
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#include
+#include
+#include
+
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+#include
+
+namespace StudioWelcome {
+namespace Internal {
+
+const char SHOW_SPLASHSCREEN[] = "Studiowelcomeplugin/showSplashScreen";
+
+QPointer s_view = nullptr;
+
+class ProjectModel : public QAbstractListModel
+{
+ Q_OBJECT
+public:
+ enum { FilePathRole = Qt::UserRole+1, PrettyFilePathRole };
+
+ explicit ProjectModel(QObject *parent = nullptr);
+
+ int rowCount(const QModelIndex &parent) const override;
+ QVariant data(const QModelIndex &index, int role) const override;
+ QHash roleNames() const override;
+
+ Q_INVOKABLE void createProject()
+ {
+ ProjectExplorer::ProjectExplorerPlugin::openNewProjectDialog();
+ }
+
+ Q_INVOKABLE void openProject()
+ {
+ ProjectExplorer::ProjectExplorerPlugin::openOpenProjectDialog();
+ }
+
+ Q_INVOKABLE void openProjectAt(int row)
+ {
+ const QString projectFile = data(index(row, 0),
+ ProjectModel::FilePathRole).toString();
+ ProjectExplorer::ProjectExplorerPlugin::openProjectWelcomePage(projectFile);
+ }
+
+ Q_INVOKABLE void showHelp()
+ {
+ QDesktopServices::openUrl(QUrl("qthelp://org.qt-project.qtcreator/doc/index.html"));
+ }
+
+ Q_INVOKABLE void openExample(const QString &example, const QString &formFile)
+ {
+ const QString projectFile = Core::ICore::resourcePath() + "/examples/" + example + "/" + example + ".qmlproject";
+ ProjectExplorer::ProjectExplorerPlugin::openProjectWelcomePage(projectFile);
+ const QString qmlFile = Core::ICore::resourcePath() + "/examples/" + example + "/" + formFile;
+ Core::EditorManager::openEditor(qmlFile);
+ }
+public slots:
+ void resetProjects();
+};
+
+ProjectModel::ProjectModel(QObject *parent)
+ : QAbstractListModel(parent)
+{
+ connect(ProjectExplorer::ProjectExplorerPlugin::instance(),
+ &ProjectExplorer::ProjectExplorerPlugin::recentProjectsChanged,
+ this,
+ &ProjectModel::resetProjects);
+}
+
+int ProjectModel::rowCount(const QModelIndex &) const
+{
+ return ProjectExplorer::ProjectExplorerPlugin::recentProjects().count();
+}
+
+QVariant ProjectModel::data(const QModelIndex &index, int role) const
+{
+ QPair data =
+ ProjectExplorer::ProjectExplorerPlugin::recentProjects().at(index.row());
+ switch (role) {
+ case Qt::DisplayRole:
+ return data.second;
+ break;
+ case FilePathRole:
+ return data.first;
+ case PrettyFilePathRole:
+ return Utils::withTildeHomePath(data.first);
+ default:
+ return QVariant();
+ }
+
+ return QVariant();
+}
+
+QHash ProjectModel::roleNames() const
+{
+ QHash roleNames;
+ roleNames[Qt::DisplayRole] = "displayName";
+ roleNames[FilePathRole] = "filePath";
+ roleNames[PrettyFilePathRole] = "prettyFilePath";
+ return roleNames;
+}
+
+void ProjectModel::resetProjects()
+{
+ beginResetModel();
+ endResetModel();
+}
+
+class WelcomeMode : public Core::IMode
+{
+ Q_OBJECT
+public:
+ WelcomeMode();
+ ~WelcomeMode() override;
+
+private:
+
+ QQuickWidget *m_modeWidget = nullptr;
+};
+
+void StudioWelcomePlugin::closeSplashScreen()
+{
+ if (!s_view.isNull())
+ s_view->deleteLater();
+}
+
+void StudioWelcomePlugin::handleSplashCheckBoxChanged()
+{
+ if (s_view.isNull())
+ return;
+
+ bool show = s_view->rootObject()->property("showSplashScreen").toBool();
+ Core::ICore::settings()->setValue(SHOW_SPLASHSCREEN, !show);
+}
+
+StudioWelcomePlugin::~StudioWelcomePlugin()
+{
+ delete m_welcomeMode;
+}
+
+bool StudioWelcomePlugin::initialize(const QStringList &arguments, QString *errorString)
+{
+ Q_UNUSED(arguments);
+ Q_UNUSED(errorString);
+
+ qmlRegisterType("projectmodel", 1, 0, "ProjectModel");
+
+ m_welcomeMode = new WelcomeMode;
+ return true;
+}
+
+void StudioWelcomePlugin::extensionsInitialized()
+{
+ Core::ModeManager::activateMode(m_welcomeMode->id());
+ if (Core::ICore::settings()->value(SHOW_SPLASHSCREEN, true).toBool()) {
+ connect(Core::ICore::instance(), &Core::ICore::coreOpened, this, [this] (){
+ s_view = new QQuickWidget(Core::ICore::dialogParent());
+ s_view->setResizeMode(QQuickWidget::SizeRootObjectToView);
+ s_view->setWindowFlag(Qt::SplashScreen, true);
+ s_view->setWindowModality(Qt::ApplicationModal);
+ #ifdef QT_DEBUG
+ s_view->engine()->addImportPath(QLatin1Literal(STUDIO_QML_PATH)
+ + "splashscreen/imports");
+ s_view->setSource(QUrl::fromLocalFile(QLatin1Literal(STUDIO_QML_PATH)
+ + "splashscreen/main.qml"));
+ #else
+ s_view->engine()->addImportPath("qrc:/qml/splashscreen/imports");
+ s_view->setSource(QUrl("qrc:/qml/splashscreen/main.qml"));
+ #endif
+
+ QTC_ASSERT(s_view->rootObject(),
+ qWarning() << "The StudioWelcomePlugin has a runtime depdendency on qt/qtquicktimeline.";
+ return);
+
+ connect(s_view->rootObject(), SIGNAL(closeClicked()), this, SLOT(closeSplashScreen()));
+ connect(s_view->rootObject(), SIGNAL(checkBoxToggled()), this, SLOT(handleSplashCheckBoxChanged()));
+
+ s_view->show();
+ s_view->raise();
+ });
+ }
+}
+
+bool StudioWelcomePlugin::delayedInitialize()
+{
+ if (s_view.isNull())
+ return true;
+
+ QTC_ASSERT(s_view->rootObject() , return true);
+
+ s_view->rootObject()->setProperty("loadingPlugins", false);
+
+ QPointer view = s_view;
+
+ connect(Core::ICore::mainWindow()->windowHandle(), &QWindow::visibleChanged, this, [view](){
+ if (!view.isNull()) {
+ view->close();
+ view->deleteLater();
+ }
+ });
+
+ return false;
+}
+
+WelcomeMode::WelcomeMode()
+{
+ setDisplayName(tr("Studio"));
+
+ const Utils::Icon FLAT({{":/studiowelcome/images/mode_welcome_mask.png",
+ Utils::Theme::IconsBaseColor}});
+ const Utils::Icon FLAT_ACTIVE({{":/studiowelcome/images/mode_welcome_mask.png",
+ Utils::Theme::IconsModeWelcomeActiveColor}});
+ setIcon(Utils::Icon::modeIcon(FLAT, FLAT, FLAT_ACTIVE));
+
+ setPriority(Core::Constants::P_MODE_WELCOME);
+ setId(Core::Constants::MODE_WELCOME);
+ setContextHelp("Qt Creator Manual");
+ setContext(Core::Context(Core::Constants::C_WELCOME_MODE));
+
+ m_modeWidget = new QQuickWidget;
+ m_modeWidget->setResizeMode(QQuickWidget::SizeRootObjectToView);
+ m_modeWidget->engine()->addImportPath("qrc:/studiofonts");
+#ifdef QT_DEBUG
+ m_modeWidget->engine()->addImportPath(QLatin1Literal(STUDIO_QML_PATH)
+ + "welcomepage/imports");
+ m_modeWidget->setSource(QUrl::fromLocalFile(QLatin1Literal(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);
+}
+
+WelcomeMode::~WelcomeMode()
+{
+ delete m_modeWidget;
+}
+
+} // namespace Internal
+} // namespace StudioWelcome
+
+#include "studiowelcomeplugin.moc"
diff --git a/src/plugins/studiowelcome/studiowelcomeplugin.h b/src/plugins/studiowelcome/studiowelcomeplugin.h
new file mode 100644
index 00000000000..28834b4a07f
--- /dev/null
+++ b/src/plugins/studiowelcome/studiowelcomeplugin.h
@@ -0,0 +1,54 @@
+/****************************************************************************
+**
+** 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 once
+
+#include
+
+namespace StudioWelcome {
+namespace Internal {
+
+class StudioWelcomePlugin : public ExtensionSystem::IPlugin
+{
+ Q_OBJECT
+ Q_PLUGIN_METADATA(IID "org.qt-project.Qt.QtCreatorPlugin" FILE "StudioWelcome.json")
+
+public slots:
+ void closeSplashScreen();
+ void handleSplashCheckBoxChanged();
+
+public:
+ ~StudioWelcomePlugin() final;
+
+ bool initialize(const QStringList &arguments, QString *errorString) override;
+ void extensionsInitialized() override;
+ bool delayedInitialize() override;
+
+private:
+ class WelcomeMode *m_welcomeMode = nullptr;
+};
+
+} // namespace Internal
+} // namespace StudioWelcome
diff --git a/src/share/3rdparty/studiofonts/StudioFonts/StudioFonts.qml b/src/share/3rdparty/studiofonts/StudioFonts/StudioFonts.qml
new file mode 100644
index 00000000000..677dd7e0d19
--- /dev/null
+++ b/src/share/3rdparty/studiofonts/StudioFonts/StudioFonts.qml
@@ -0,0 +1,44 @@
+/****************************************************************************
+**
+** 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
+
+QtObject {
+ property FontLoader fontLoader_regular: FontLoader {
+ id: fontLoader_regular
+ source: "../TitilliumWeb-Regular.ttf"
+ }
+
+ readonly property alias titilliumWeb_regular: fontLoader_regular.name
+
+ property FontLoader fontLoader_light: FontLoader {
+ id: fontLoader_light
+ source: "../TitilliumWeb-Light.ttf"
+ }
+
+ readonly property alias titilliumWeb_light: fontLoader_light.name
+}
diff --git a/src/share/3rdparty/studiofonts/StudioFonts/qmldir b/src/share/3rdparty/studiofonts/StudioFonts/qmldir
new file mode 100644
index 00000000000..7d39f37fcb7
--- /dev/null
+++ b/src/share/3rdparty/studiofonts/StudioFonts/qmldir
@@ -0,0 +1 @@
+singleton StudioFonts 1.0 StudioFonts.qml
diff --git a/src/share/3rdparty/studiofonts/TitilliumWeb-Light.ttf b/src/share/3rdparty/studiofonts/TitilliumWeb-Light.ttf
new file mode 100644
index 00000000000..2685cbe55d8
Binary files /dev/null and b/src/share/3rdparty/studiofonts/TitilliumWeb-Light.ttf differ
diff --git a/src/share/3rdparty/studiofonts/TitilliumWeb-Regular.ttf b/src/share/3rdparty/studiofonts/TitilliumWeb-Regular.ttf
new file mode 100644
index 00000000000..4fd6b7fba0b
Binary files /dev/null and b/src/share/3rdparty/studiofonts/TitilliumWeb-Regular.ttf differ
diff --git a/src/share/3rdparty/studiofonts/TitilliumWeb.txt b/src/share/3rdparty/studiofonts/TitilliumWeb.txt
new file mode 100644
index 00000000000..cc2b593f345
--- /dev/null
+++ b/src/share/3rdparty/studiofonts/TitilliumWeb.txt
@@ -0,0 +1,8 @@
+Titillium is a free open source font and it is born inside the Accademia
+di Belle Arti di Urbino as a didactic project Course Type design of the
+Master of Visual Design Campi Visivi. It has 11 different weights and is
+well suited for headlines and body type.
+
+Titillium is used as the brand font for Qt.
+
+https://brand.qt.io/fonts/
\ No newline at end of file
diff --git a/src/share/3rdparty/studiofonts/studiofonts.qrc b/src/share/3rdparty/studiofonts/studiofonts.qrc
new file mode 100644
index 00000000000..0dfcd932329
--- /dev/null
+++ b/src/share/3rdparty/studiofonts/studiofonts.qrc
@@ -0,0 +1,8 @@
+
+
+ TitilliumWeb-Light.ttf
+ TitilliumWeb-Regular.ttf
+ StudioFonts/qmldir
+ StudioFonts/StudioFonts.qml
+
+