diff --git a/examples/quick/controls/gallery/content/Controls.qml b/examples/quick/controls/gallery/content/Controls.qml
deleted file mode 100644
index 54ee99b9dc256f61b698da9ae5e1e03a3b3e93bd..0000000000000000000000000000000000000000
--- a/examples/quick/controls/gallery/content/Controls.qml
+++ /dev/null
@@ -1,280 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt Quick Controls module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-**     of its contributors may be used to endorse or promote products derived
-**     from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.2
-import QtQuick.Controls 1.2
-import QtQuick.Layouts 1.1
-import QtQuick.Controls.Styles 1.1
-
-Item {
-    id: flickable
-    anchors.fill: parent
-    enabled: enabledCheck.checked
-
-    property int tabPosition: tabPositionGroup.current === r2 ? Qt.BottomEdge : Qt.TopEdge
-
-    property string loremIpsum:
-            "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor "+
-            "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor "+
-            "incididunt ut labore et dolore magna aliqua.\n Ut enim ad minim veniam, quis nostrud "+
-            "exercitation ullamco laboris nisi ut aliquip ex ea commodo cosnsequat. ";
-
-    ListModel {
-        id: choices
-        ListElement { text: "Banana" }
-        ListElement { text: "Orange" }
-        ListElement { text: "Apple" }
-        ListElement { text: "Coconut" }
-    }
-
-    RowLayout {
-        id: contentRow
-        anchors.fill:parent
-        anchors.margins: 8
-        spacing: 16
-        ColumnLayout {
-            id: firstColumn
-            Layout.minimumWidth: implicitWidth
-            Layout.fillWidth: false
-            RowLayout {
-                id: buttonrow
-                Button {
-                    id: button1
-                    text: "Button 1"
-                    tooltip:"This is an interesting tool tip"
-                    Layout.fillWidth: true
-                }
-                Button {
-                    id:button2
-                    text:"Button 2"
-                    Layout.fillWidth: true
-                    menu: Menu {
-                        MenuItem { text: "This Button" }
-                        MenuItem { text: "Happens To Have" }
-                        MenuItem { text: "A Menu Assigned" }
-                    }
-                }
-            }
-            ComboBox {
-                id: combo
-                model: choices
-                currentIndex: 2
-                Layout.fillWidth: true
-            }
-            ComboBox {
-                model: Qt.fontFamilies()
-                Layout.fillWidth: true
-                currentIndex: 47
-            }
-            ComboBox {
-                id: editableCombo
-                editable: true
-                model: choices
-                Layout.fillWidth: true
-                currentIndex: 2
-                onAccepted: {
-                    if (editableCombo.find(currentText) === -1) {
-                        choices.append({text: editText})
-                        currentIndex = editableCombo.find(editText)
-                    }
-                }
-            }
-            RowLayout {
-                SpinBox {
-                    id: t1
-                    Layout.fillWidth: true
-                    minimumValue: -50
-                    value: -20
-                }
-                SpinBox {
-                    id: t2
-                    Layout.fillWidth: true
-                }
-            }
-            TextField {
-                id: t3
-                placeholderText: "This is a placeholder for a TextField"
-                Layout.fillWidth: true
-            }
-            ProgressBar {
-                // normalize value [0.0 .. 1.0]
-                value: (slider.value - slider.minimumValue) / (slider.maximumValue - slider.minimumValue)
-                Layout.fillWidth: true
-            }
-            ProgressBar {
-                indeterminate: true
-                Layout.fillWidth: true
-            }
-            Slider {
-                id: slider
-                value: 0.5
-                Layout.fillWidth: true
-                tickmarksEnabled: tickmarkCheck.checked
-                stepSize: tickmarksEnabled ? 0.1 : 0
-            }
-            MouseArea {
-                id: busyCheck
-                Layout.fillWidth: true
-                Layout.fillHeight: true
-                hoverEnabled:true
-                Layout.preferredHeight: busyIndicator.height
-                BusyIndicator {
-                    id: busyIndicator
-                    running: busyCheck.containsMouse
-                    anchors.horizontalCenter: parent.horizontalCenter
-                }
-            }
-        }
-        ColumnLayout {
-            id: rightcol
-            Layout.fillWidth: true
-            anchors {
-                top: parent.top
-                bottom: parent.bottom
-            }
-
-            GroupBox {
-                id: group1
-                title: "CheckBox"
-                Layout.fillWidth: true
-                RowLayout {
-                    Layout.fillWidth: true
-                    CheckBox {
-                        id: frameCheckbox
-                        text: "Text frame"
-                        checked: true
-                        Layout.minimumWidth: 100
-                    }
-                    CheckBox {
-                        id: tickmarkCheck
-                        text: "Tickmarks"
-                        checked: false
-                        Layout.minimumWidth: 100
-                    }
-                    CheckBox {
-                        id: wrapCheck
-                        text: "Word wrap"
-                        checked: true
-                        Layout.minimumWidth: 100
-                    }
-                }
-            }
-            GroupBox {
-                id: group2
-                title:"Tab Position"
-                Layout.fillWidth: true
-                RowLayout {
-                    ExclusiveGroup { id: tabPositionGroup }
-                    RadioButton {
-                        id: r1
-                        text: "Top"
-                        checked: true
-                        exclusiveGroup: tabPositionGroup
-                        Layout.minimumWidth: 100
-                    }
-                    RadioButton {
-                        id: r2
-                        text: "Bottom"
-                        exclusiveGroup: tabPositionGroup
-                        Layout.minimumWidth: 100
-                    }
-                }
-            }
-
-            TextArea {
-                id: area
-                frameVisible: frameCheckbox.checked
-                text: loremIpsum + loremIpsum
-                textFormat: Qt.RichText
-                wrapMode: wrapCheck.checked ? TextEdit.WordWrap : TextEdit.NoWrap
-                Layout.fillWidth: true
-                Layout.fillHeight: true
-                menu: editmenu
-            }
-        }
-    }
-
-    ExclusiveGroup {
-        id: textFormatGroup
-
-        Action {
-            id: a1
-            text: "Align &Left"
-            checkable: true
-            Component.onCompleted: checked = true
-        }
-
-        Action {
-            id: a2
-            text: "&Center"
-            checkable: true
-        }
-
-        Action {
-            id: a3
-            text: "Align &Right"
-            checkable: true
-        }
-    }
-
-    Component {
-        id: editmenu
-        Menu {
-            MenuItem { action: cutAction }
-            MenuItem { action: copyAction }
-            MenuItem { action: pasteAction }
-            MenuSeparator {}
-            Menu {
-                title: "Text &Format"
-                MenuItem { action: a1 }
-                MenuItem { action: a2 }
-                MenuItem { action: a3 }
-                MenuSeparator { }
-                MenuItem { text: "Allow &Hyphenation"; checkable: true }
-            }
-            Menu {
-                title: "Font &Style"
-                MenuItem { text: "&Bold"; checkable: true }
-                MenuItem { text: "&Italic"; checkable: true }
-                MenuItem { text: "&Underline"; checkable: true }
-            }
-        }
-    }
-}
diff --git a/examples/quick/controls/gallery/content/Styles.qml b/examples/quick/controls/gallery/content/Styles.qml
deleted file mode 100644
index 03be93fd19273b3b483cd7987619737a012347e8..0000000000000000000000000000000000000000
--- a/examples/quick/controls/gallery/content/Styles.qml
+++ /dev/null
@@ -1,382 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
-** Contact: http://www.qt-project.org/legal
-**
-** This file is part of the Qt Quick Controls module of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:BSD$
-** You may use this file under the terms of the BSD license as follows:
-**
-** "Redistribution and use in source and binary forms, with or without
-** modification, are permitted provided that the following conditions are
-** met:
-**   * Redistributions of source code must retain the above copyright
-**     notice, this list of conditions and the following disclaimer.
-**   * Redistributions in binary form must reproduce the above copyright
-**     notice, this list of conditions and the following disclaimer in
-**     the documentation and/or other materials provided with the
-**     distribution.
-**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
-**     of its contributors may be used to endorse or promote products derived
-**     from this software without specific prior written permission.
-**
-**
-** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-import QtQuick 2.2
-import QtQuick.Controls 1.2
-import QtQuick.Controls.Styles 1.1
-import QtQuick.Particles 2.0
-import QtQuick.Layouts 1.0
-
-Item {
-    id: root
-    width: 300
-    height: 200
-
-    property int columnWidth: 120
-    GridLayout {
-        rowSpacing: 12
-        columnSpacing: 30
-        anchors.top: parent.top
-        anchors.horizontalCenter: parent.horizontalCenter
-        anchors.margins: 30
-
-        Button {
-            text: "Push me"
-            style: ButtonStyle { }
-            implicitWidth: columnWidth
-        }
-        Button {
-            text: "Push me"
-            style: ButtonStyle {
-                background: BorderImage {
-                    source: control.pressed ? "../images/button-pressed.png" : "../images/button.png"
-                    border.left: 4 ; border.right: 4 ; border.top: 4 ; border.bottom: 4
-                }
-            }
-            implicitWidth: columnWidth
-        }
-        Button {
-            text: "Push me"
-            style: buttonStyle
-            implicitWidth: columnWidth
-        }
-
-        TextField {
-            Layout.row: 1
-            style: TextFieldStyle { }
-            implicitWidth: columnWidth
-        }
-        TextField {
-            style: TextFieldStyle {
-                background: BorderImage {
-                    source: "../images/textfield.png"
-                    border.left: 4 ; border.right: 4 ; border.top: 4 ; border.bottom: 4
-                }
-            }
-            implicitWidth: columnWidth
-        }
-        TextField {
-            style: textfieldStyle
-            implicitWidth: columnWidth
-        }
-
-        Slider {
-            id: slider1
-            Layout.row: 2
-            value: 0.5
-            implicitWidth: columnWidth
-            style: SliderStyle { }
-        }
-        Slider {
-            id: slider2
-            value: 0.5
-            implicitWidth: columnWidth
-            style: SliderStyle {
-                groove: BorderImage {
-                    height: 6
-                    border.top: 1
-                    border.bottom: 1
-                    source: "../images/progress-background.png"
-                    border.left: 6
-                    border.right: 6
-                    BorderImage {
-                        anchors.verticalCenter: parent.verticalCenter
-                        source: "../images/progress-fill.png"
-                        border.left: 5 ; border.top: 1
-                        border.right: 5 ; border.bottom: 1
-                        width: styleData.handlePosition
-                        height: parent.height
-                    }
-                }
-                handle: Item {
-                    width: 13
-                    height: 13
-                    Image {
-                        anchors.centerIn: parent
-                        source: "../images/slider-handle.png"
-                    }
-                }
-            }
-        }
-        Slider {
-            id: slider3
-            value: 0.5
-            implicitWidth: columnWidth
-            style: sliderStyle
-        }
-
-        ProgressBar {
-            Layout.row: 3
-            value: slider1.value
-            implicitWidth: columnWidth
-            style: ProgressBarStyle{ }
-        }
-        ProgressBar {
-            value: slider2.value
-            implicitWidth: columnWidth
-            style: progressBarStyle
-        }
-        ProgressBar {
-            value: slider3.value
-            implicitWidth: columnWidth
-            style: progressBarStyle2
-        }
-
-        CheckBox {
-            text: "CheckBox"
-            style: CheckBoxStyle{}
-            Layout.row: 4
-            implicitWidth: columnWidth
-        }
-        RadioButton {
-            style: RadioButtonStyle{}
-            text: "RadioButton"
-            implicitWidth: columnWidth
-        }
-
-        ComboBox {
-            model: ["Paris", "Oslo", "New York"]
-            style: ComboBoxStyle{}
-            implicitWidth: columnWidth
-        }
-
-        TabView {
-            Layout.row: 5
-            Layout.columnSpan: 3
-            Layout.fillWidth: true
-            implicitHeight: 30
-            Tab { title: "One" ; Item {}}
-            Tab { title: "Two" ; Item {}}
-            Tab { title: "Three" ; Item {}}
-            Tab { title: "Four" ; Item {}}
-            style: TabViewStyle {}
-        }
-
-        TabView {
-            Layout.row: 6
-            Layout.columnSpan: 3
-            Layout.fillWidth: true
-            implicitHeight: 30
-            Tab { title: "One" ; Item {}}
-            Tab { title: "Two" ; Item {}}
-            Tab { title: "Three" ; Item {}}
-            Tab { title: "Four" ; Item {}}
-            style: tabViewStyle
-        }
-    }
-
-    // Style delegates:
-
-    property Component buttonStyle: ButtonStyle {
-        background: Rectangle {
-            implicitHeight: 22
-            implicitWidth: columnWidth
-            color: control.pressed ? "darkGray" : control.activeFocus ? "#cdd" : "#ccc"
-            antialiasing: true
-            border.color: "gray"
-            radius: height/2
-            Rectangle {
-                anchors.fill: parent
-                anchors.margins: 1
-                color: "transparent"
-                antialiasing: true
-                visible: !control.pressed
-                border.color: "#aaffffff"
-                radius: height/2
-            }
-        }
-    }
-
-    property Component textfieldStyle: TextFieldStyle {
-        background: Rectangle {
-            implicitWidth: columnWidth
-            implicitHeight: 22
-            color: "#f0f0f0"
-            antialiasing: true
-            border.color: "gray"
-            radius: height/2
-            Rectangle {
-                anchors.fill: parent
-                anchors.margins: 1
-                color: "transparent"
-                antialiasing: true
-                border.color: "#aaffffff"
-                radius: height/2
-            }
-        }
-    }
-
-    property Component sliderStyle: SliderStyle {
-        handle: Rectangle {
-            width: 18
-            height: 18
-            color: control.pressed ? "darkGray" : "lightGray"
-            border.color: "gray"
-            antialiasing: true
-            radius: height/2
-            Rectangle {
-                anchors.fill: parent
-                anchors.margins: 1
-                color: "transparent"
-                antialiasing: true
-                border.color: "#eee"
-                radius: height/2
-            }
-        }
-
-        groove: Rectangle {
-            height: 8
-            implicitWidth: columnWidth
-            implicitHeight: 22
-
-            antialiasing: true
-            color: "#ccc"
-            border.color: "#777"
-            radius: height/2
-            Rectangle {
-                anchors.fill: parent
-                anchors.margins: 1
-                color: "transparent"
-                antialiasing: true
-                border.color: "#66ffffff"
-                radius: height/2
-            }
-        }
-    }
-
-    property Component progressBarStyle: ProgressBarStyle {
-        background: BorderImage {
-            source: "../images/progress-background.png"
-            border.left: 2 ; border.right: 2 ; border.top: 2 ; border.bottom: 2
-        }
-        progress: Item {
-            clip: true
-            BorderImage {
-                anchors.fill: parent
-                anchors.rightMargin: (control.value < control.maximumValue) ? -4 : 0
-                source: "../images/progress-fill.png"
-                border.left: 10 ; border.right: 10
-                Rectangle {
-                    width: 1
-                    color: "#a70"
-                    opacity: 0.8
-                    anchors.top: parent.top
-                    anchors.bottom: parent.bottom
-                    anchors.bottomMargin: 1
-                    anchors.right: parent.right
-                    visible: control.value < control.maximumValue
-                    anchors.rightMargin: -parent.anchors.rightMargin
-                }
-            }
-            ParticleSystem{ id: bubbles; running: visible }
-            ImageParticle{
-                id: fireball
-                system: bubbles
-                source: "../images/bubble.png"
-                opacity: 0.7
-            }
-            Emitter{
-                system: bubbles
-                anchors.bottom: parent.bottom
-                anchors.margins: 4
-                anchors.bottomMargin: -4
-                anchors.left: parent.left
-                anchors.right: parent.right
-                size: 4
-                sizeVariation: 4
-                acceleration: PointDirection{ y: -6; xVariation: 3 }
-                emitRate: 6 * control.value
-                lifeSpan: 3000
-            }
-        }
-    }
-
-    property Component progressBarStyle2: ProgressBarStyle {
-        background: Rectangle {
-            implicitWidth: columnWidth
-            implicitHeight: 24
-            color: "#f0f0f0"
-            border.color: "gray"
-        }
-        progress: Rectangle {
-            color: "#ccc"
-            border.color: "gray"
-            Rectangle {
-                color: "transparent"
-                border.color: "#44ffffff"
-                anchors.fill: parent
-                anchors.margins: 1
-            }
-        }
-    }
-
-    property Component tabViewStyle: TabViewStyle {
-        tabOverlap: 16
-        frameOverlap: 4
-        tabsMovable: true
-
-        frame: Rectangle {
-            gradient: Gradient{
-                GradientStop { color: "#e5e5e5" ; position: 0 }
-                GradientStop { color: "#e0e0e0" ; position: 1 }
-            }
-            border.color: "#898989"
-            Rectangle { anchors.fill: parent ; anchors.margins: 1 ; border.color: "white" ; color: "transparent" }
-        }
-        tab: Item {
-            property int totalOverlap: tabOverlap * (control.count - 1)
-            implicitWidth: Math.min ((styleData.availableWidth + totalOverlap)/control.count - 4, image.sourceSize.width)
-            implicitHeight: image.sourceSize.height
-            BorderImage {
-                id: image
-                anchors.fill: parent
-                source: styleData.selected ? "../images/tab_selected.png" : "../images/tab.png"
-                border.left: 30
-                smooth: false
-                border.right: 30
-            }
-            Text {
-                text: styleData.title
-                anchors.centerIn: parent
-            }
-        }
-        leftCorner: Item { implicitWidth: 12 }
-    }
-}
diff --git a/examples/quick/controls/gallery/gallery.pro b/examples/quick/controls/gallery/gallery.pro
index 992dd89116472dce95ac5738df9de42ff3f9e3cc..f13f42135bd118c5eb355481b507e95a293bc28a 100644
--- a/examples/quick/controls/gallery/gallery.pro
+++ b/examples/quick/controls/gallery/gallery.pro
@@ -1,17 +1,20 @@
-QT += qml quick
+TEMPLATE = app
 TARGET = gallery
-!no_desktop: QT += widgets
 
-include(src/src.pri)
-include(../shared/shared.pri)
+SOURCES += \
+    main.cpp
+
+RESOURCES += \
+    gallery.qrc
 
 OTHER_FILES += \
     main.qml \
-    content/AboutDialog.qml \
-    content/Controls.qml \
-    content/ImageViewer.qml \
-    content/ModelView.qml \
-    content/Styles.qml
+    qml/ButtonPage.qml \
+    qml/InputPage.qml \
+    qml/ProgressPage.qml \
+    qml/UI.js \
+    qml/+android/UI.js \
+    qml/+ios/UI.js \
+    qml/+osx/UI.js
 
-RESOURCES += \
-    resources.qrc
+include(../shared/shared.pri)
diff --git a/examples/quick/controls/gallery/gallery.qmlproject b/examples/quick/controls/gallery/gallery.qmlproject
deleted file mode 100644
index e5a8bf02ca789d31c0265da83b2cb6f09e10ba15..0000000000000000000000000000000000000000
--- a/examples/quick/controls/gallery/gallery.qmlproject
+++ /dev/null
@@ -1,16 +0,0 @@
-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: "."
-    }
-}
diff --git a/examples/quick/controls/gallery/gallery.qrc b/examples/quick/controls/gallery/gallery.qrc
new file mode 100644
index 0000000000000000000000000000000000000000..873c8b5cacab3dde50e2965ec037c56f42759824
--- /dev/null
+++ b/examples/quick/controls/gallery/gallery.qrc
@@ -0,0 +1,12 @@
+<RCC>
+    <qresource prefix="/">
+        <file>main.qml</file>
+        <file>qml/ButtonPage.qml</file>
+        <file>qml/InputPage.qml</file>
+        <file>qml/ProgressPage.qml</file>
+        <file>qml/UI.js</file>
+        <file>qml/+android/UI.js</file>
+        <file>qml/+ios/UI.js</file>
+        <file>qml/+osx/UI.js</file>
+    </qresource>
+</RCC>
diff --git a/examples/quick/controls/gallery/images/bubble.png b/examples/quick/controls/gallery/images/bubble.png
deleted file mode 100644
index 62aa1efe54c76991fdaea3a103d362bcc635e5c6..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/bubble.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/button-pressed.png b/examples/quick/controls/gallery/images/button-pressed.png
deleted file mode 100644
index d64cdaa7876296e8ff5fe0953c5f364a0a6be118..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/button-pressed.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/button.png b/examples/quick/controls/gallery/images/button.png
deleted file mode 100644
index 8ab41cc804991d9da9d2c0dd2140579b8a405cf7..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/button.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/document-open.png b/examples/quick/controls/gallery/images/document-open.png
deleted file mode 100644
index f35f2583540678b7a544d9175245096082f302af..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/document-open.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/document-open@2x.png b/examples/quick/controls/gallery/images/document-open@2x.png
deleted file mode 100644
index 9fdbb6657744a38310d3fa4ab8b7558e5966987e..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/document-open@2x.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/document-save-as.png b/examples/quick/controls/gallery/images/document-save-as.png
deleted file mode 100644
index 5c9f6b343bdff4e1295342362486b2cc37387ecb..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/document-save-as.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/document-save-as@2x.png b/examples/quick/controls/gallery/images/document-save-as@2x.png
deleted file mode 100644
index a15e34c924abc6f343e2a3ff35368035930488d6..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/document-save-as@2x.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/folder_new.png b/examples/quick/controls/gallery/images/folder_new.png
deleted file mode 100644
index 8d8bb9bd768d8e8ab785d95483ead02ae6800dc5..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/folder_new.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/go-next.png b/examples/quick/controls/gallery/images/go-next.png
deleted file mode 100644
index a68e2db77531cb15a2cddd62f567f030513b60fa..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/go-next.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/go-previous.png b/examples/quick/controls/gallery/images/go-previous.png
deleted file mode 100644
index c37bc0414c24b6e4f34096d0c0f20fbe0bf84045..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/go-previous.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/preferences-system.png b/examples/quick/controls/gallery/images/preferences-system.png
deleted file mode 100644
index 6e52db7cfd482e228dae640a7717ea1dcaf523e8..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/preferences-system.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/process-stop.png b/examples/quick/controls/gallery/images/process-stop.png
deleted file mode 100644
index e7a8d1722f328be5fa649f774e2fa6bcf049ebef..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/process-stop.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/progress-background.png b/examples/quick/controls/gallery/images/progress-background.png
deleted file mode 100644
index 55a069dfce0cba716f426a78c04346cadb60cfad..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/progress-background.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/progress-fill.png b/examples/quick/controls/gallery/images/progress-fill.png
deleted file mode 100644
index b588c9586d9c9ba0d07966f448c19e23320bf6e3..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/progress-fill.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/slider-handle.png b/examples/quick/controls/gallery/images/slider-handle.png
deleted file mode 100644
index ac4d4a0d981cf7257756d5ecd7951154b70b87d5..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/slider-handle.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/tab.png b/examples/quick/controls/gallery/images/tab.png
deleted file mode 100644
index 74fefab78a719e4883756d2bcc1b968835dd4fa0..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/tab.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/tab_selected.png b/examples/quick/controls/gallery/images/tab_selected.png
deleted file mode 100644
index 665400ccfd2da9264fa4cf0e653e2573a8f7daf7..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/tab_selected.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/textfield.png b/examples/quick/controls/gallery/images/textfield.png
deleted file mode 100644
index 1d4a38ab38bea53d34f71c84e4f88669b99f3447..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/textfield.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/toplevel_window.png b/examples/quick/controls/gallery/images/toplevel_window.png
deleted file mode 100644
index 4dc6a8cee217d45990972ff43f27d06c6a851b61..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/toplevel_window.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/view-refresh.png b/examples/quick/controls/gallery/images/view-refresh.png
deleted file mode 100644
index 606ea9eba46b82eea04678e64369b97e595f9da5..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/view-refresh.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/images/window-new@2x.png b/examples/quick/controls/gallery/images/window-new@2x.png
deleted file mode 100644
index 36503018ef4157fa20f6cfdaf9fb851137384c53..0000000000000000000000000000000000000000
Binary files a/examples/quick/controls/gallery/images/window-new@2x.png and /dev/null differ
diff --git a/examples/quick/controls/gallery/src/main.cpp b/examples/quick/controls/gallery/main.cpp
similarity index 96%
rename from examples/quick/controls/gallery/src/main.cpp
rename to examples/quick/controls/gallery/main.cpp
index 8971aa153b8c8c1f4a0585c2ca10c2c4ec695204..c456e1cb6d4d46ab45e85a54e9f01e54417ec37c 100644
--- a/examples/quick/controls/gallery/src/main.cpp
+++ b/examples/quick/controls/gallery/main.cpp
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
 ** Contact: http://www.qt-project.org/legal
 **
 ** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -41,7 +41,6 @@
 #include "qtquickcontrolsapplication.h"
 #include <QtQml/QQmlApplicationEngine>
 #include <QtGui/QSurfaceFormat>
-#include <QtQuick/QQuickWindow>
 
 int main(int argc, char *argv[])
 {
diff --git a/examples/quick/controls/gallery/main.qml b/examples/quick/controls/gallery/main.qml
index 4d013c8b81e8d36e1a8cac0fbce64f5e5cfd493b..2de810d8d9cbccf53234dda113fe54224878403c 100644
--- a/examples/quick/controls/gallery/main.qml
+++ b/examples/quick/controls/gallery/main.qml
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
 ** Contact: http://www.qt-project.org/legal
 **
 ** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -39,37 +39,22 @@
 ****************************************************************************/
 
 import QtQuick 2.2
+import QtQuick.Layouts 1.1
+import QtQuick.Dialogs 1.1
 import QtQuick.Controls 1.2
-import QtQuick.Layouts 1.0
-import QtQuick.Dialogs 1.0
-import "content"
+import "qml/UI.js" as UI
+import "qml"
 
 ApplicationWindow {
     visible: true
     title: "Qt Quick Controls Gallery"
 
-    width: 640
-    height: 420
-    minimumHeight: 400
-    minimumWidth: 600
-
-    ImageViewer { id: imageViewer }
-
-    FileDialog {
-        id: fileDialog
-        nameFilters: [ "Image files (*.png *.jpg)" ]
-        onAccepted: imageViewer.open(fileUrl)
-    }
-
-    AboutDialog { id: aboutDialog }
-
-    Action {
-        id: openAction
-        text: "&Open"
-        shortcut: StandardKey.Open
-        iconSource: "images/document-open.png"
-        onTriggered: fileDialog.open()
-        tooltip: "Open an image"
+    MessageDialog {
+        id: aboutDialog
+        icon: StandardIcon.Information
+        title: "About"
+        text: "Qt Quick Controls Gallery"
+        informativeText: "This example demonstrates most of the available Qt Quick Controls."
     }
 
     Action {
@@ -100,20 +85,15 @@ ApplicationWindow {
     }
 
     toolBar: ToolBar {
-        id: toolbar
         RowLayout {
-            id: toolbarLayout
-            spacing: 0
             anchors.fill: parent
-            ToolButton { action: openAction }
-            ToolButton {
-                Accessible.name: "Save as"
-                iconSource: "images/document-save-as.png"
-                tooltip: "(Pretend to) Save as..."
+            anchors.margins: spacing
+            Label {
+                text: UI.label
             }
             Item { Layout.fillWidth: true }
             CheckBox {
-                id: enabledCheck
+                id: enabler
                 text: "Enabled"
                 checked: true
             }
@@ -123,7 +103,6 @@ ApplicationWindow {
     menuBar: MenuBar {
         Menu {
             title: "&File"
-            MenuItem { action: openAction }
             MenuItem {
                 text: "E&xit"
                 shortcut: StandardKey.Quit
@@ -132,6 +111,7 @@ ApplicationWindow {
         }
         Menu {
             title: "&Edit"
+            visible: tabView.currentIndex == 2
             MenuItem { action: cutAction }
             MenuItem { action: copyAction }
             MenuItem { action: pasteAction }
@@ -146,24 +126,34 @@ ApplicationWindow {
     }
 
     TabView {
-        id:frame
-        enabled: enabledCheck.checked
-        tabPosition: controlPage.item ? controlPage.item.tabPosition : Qt.TopEdge
+        id: tabView
+
         anchors.fill: parent
-        anchors.margins: Qt.platform.os === "osx" ? 12 : 2
+        anchors.margins: UI.margin
+        tabPosition: UI.tabPosition
+
+        Layout.minimumWidth: 360
+        Layout.minimumHeight: 360
+        Layout.preferredWidth: 480
+        Layout.preferredHeight: 640
 
         Tab {
-            id: controlPage
-            title: "Controls"
-            Controls { }
+            title: "Buttons"
+            ButtonPage {
+                enabled: enabler.checked
+            }
         }
         Tab {
-            title: "Itemviews"
-            ModelView { }
+            title: "Progress"
+            ProgressPage {
+                enabled: enabler.checked
+            }
         }
         Tab {
-            title: "Styles"
-            Styles { anchors.fill: parent }
+            title: "Input"
+            InputPage {
+                enabled: enabler.checked
+            }
         }
     }
 }
diff --git a/examples/quick/controls/gallery/content/AboutDialog.qml b/examples/quick/controls/gallery/qml/+android/UI.js
similarity index 85%
rename from examples/quick/controls/gallery/content/AboutDialog.qml
rename to examples/quick/controls/gallery/qml/+android/UI.js
index e4837ff76963464d817bb3dfed5acde3276dc4da..6050d16ec99882966940e8ec6938149a96fb2564 100644
--- a/examples/quick/controls/gallery/content/AboutDialog.qml
+++ b/examples/quick/controls/gallery/qml/+android/UI.js
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
 ** Contact: http://www.qt-project.org/legal
 **
 ** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,12 +38,8 @@
 **
 ****************************************************************************/
 
-import QtQuick 2.2
-import QtQuick.Dialogs 1.1
+.pragma library
 
-MessageDialog {
-    icon: StandardIcon.Information
-    text: "QtQuick.Controls gallery example"
-    detailedText: "This example demonstrates most of the available Qt Quick Controls."
-    title: "About Gallery"
-}
+var margin = 0
+var tabPosition = Qt.BottomEdge
+var label = "Gallery"
diff --git a/examples/quick/controls/gallery/content/ImageViewer.qml b/examples/quick/controls/gallery/qml/+ios/UI.js
similarity index 79%
rename from examples/quick/controls/gallery/content/ImageViewer.qml
rename to examples/quick/controls/gallery/qml/+ios/UI.js
index dfac2e0060a0ebbb4bafda21e62c56f78e902576..6050d16ec99882966940e8ec6938149a96fb2564 100644
--- a/examples/quick/controls/gallery/content/ImageViewer.qml
+++ b/examples/quick/controls/gallery/qml/+ios/UI.js
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
 ** Contact: http://www.qt-project.org/legal
 **
 ** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,22 +38,8 @@
 **
 ****************************************************************************/
 
-import QtQuick 2.2
-import QtQuick.Window 2.1
+.pragma library
 
-Window {
-    id: imageViewer
-    minimumWidth: viewerImage.width
-    minimumHeight: viewerImage.height
-    function open(source) {
-        viewerImage.source = source
-        width = viewerImage.implicitWidth + 20
-        height = viewerImage.implicitHeight + 20
-        title = source
-        visible = true
-    }
-    Image {
-        id: viewerImage
-        anchors.centerIn: parent
-    }
-}
+var margin = 0
+var tabPosition = Qt.BottomEdge
+var label = "Gallery"
diff --git a/examples/quick/controls/gallery/content/ModelView.qml b/examples/quick/controls/gallery/qml/+osx/UI.js
similarity index 63%
rename from examples/quick/controls/gallery/content/ModelView.qml
rename to examples/quick/controls/gallery/qml/+osx/UI.js
index a5d07d1557fedf7745c8c940afefdc69bcc50e5b..2f078ea7f2d2b794a0361ce33fa11921cafa5a86 100644
--- a/examples/quick/controls/gallery/content/ModelView.qml
+++ b/examples/quick/controls/gallery/qml/+osx/UI.js
@@ -1,6 +1,6 @@
 /****************************************************************************
 **
-** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies).
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
 ** Contact: http://www.qt-project.org/legal
 **
 ** This file is part of the Qt Quick Controls module of the Qt Toolkit.
@@ -38,51 +38,8 @@
 **
 ****************************************************************************/
 
-import QtQuick 2.2
-import QtQuick.Controls 1.2
+.pragma library
 
-Item {
-    id: root
-    width: 600
-    height: 300
-    anchors.fill: parent
-    anchors.margins: Qt.platform.os === "osx" ? 12 : 6
-
-    ListModel {
-        id: dummyModel
-        Component.onCompleted: {
-            for (var i = 0 ; i < 100 ; ++i) {
-                append({"index": i, "title": "A title " + i, "imagesource" :"http://someurl.com", "credit" : "N/A"})
-            }
-        }
-    }
-
-    TableView{
-        model: dummyModel
-        anchors.fill: parent
-
-        TableViewColumn {
-            role: "index"
-            title: "#"
-            width: 36
-            resizable: false
-            movable: false
-        }
-        TableViewColumn {
-            role: "title"
-            title: "Title"
-            width: 120
-        }
-        TableViewColumn {
-            role: "credit"
-            title: "Credit"
-            width: 120
-        }
-        TableViewColumn {
-            role: "imagesource"
-            title: "Image source"
-            width: 200
-            visible: true
-        }
-    }
-}
+var margin = 12
+var tabPosition = Qt.TopEdge
+var label = ""
diff --git a/examples/quick/controls/gallery/qml/ButtonPage.qml b/examples/quick/controls/gallery/qml/ButtonPage.qml
new file mode 100644
index 0000000000000000000000000000000000000000..0ed7e2d6ad6301713672f5bd7bb6192bde616cc8
--- /dev/null
+++ b/examples/quick/controls/gallery/qml/ButtonPage.qml
@@ -0,0 +1,128 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+**     of its contributors may be used to endorse or promote products derived
+**     from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 1.2
+
+ScrollView {
+    id: page
+
+    horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
+
+    Item {
+        id: content
+
+        width: Math.max(page.viewport.width, grid.implicitWidth + 2 * grid.rowSpacing)
+        height: Math.max(page.viewport.height, grid.implicitHeight + 2 * grid.columnSpacing)
+
+        GridLayout {
+            id: grid
+
+            anchors.top: parent.top
+            anchors.left: parent.left
+            anchors.right: parent.right
+            anchors.leftMargin: grid.rowSpacing
+            anchors.rightMargin: grid.rowSpacing
+            anchors.topMargin: grid.columnSpacing
+
+            columns: page.width < page.height ? 1 : 2
+
+            GroupBox {
+                title: "Button"
+                Layout.fillWidth: true
+                Layout.columnSpan: grid.columns
+                RowLayout {
+                    anchors.fill: parent
+                    Button { text: "OK"; isDefault: true }
+                    Button { text: "Cancel" }
+                    Item { Layout.fillWidth: true }
+                    Button {
+                        text: "Attach"
+                        menu: Menu {
+                            MenuItem { text: "Image" }
+                            MenuItem { text: "Document" }
+                        }
+                    }
+                }
+            }
+
+            GroupBox {
+                title: "CheckBox"
+                Layout.fillWidth: true
+                ColumnLayout {
+                    anchors.fill: parent
+                    CheckBox { text: "E-mail"; checked: true }
+                    CheckBox { text: "Calendar"; checked: true }
+                    CheckBox { text: "Contacts" }
+                }
+            }
+
+            GroupBox {
+                title: "RadioButton"
+                Layout.fillWidth: true
+                ColumnLayout {
+                    anchors.fill: parent
+                    ExclusiveGroup { id: radioGroup }
+                    RadioButton { text: "Portrait"; exclusiveGroup: radioGroup }
+                    RadioButton { text: "Landscape"; exclusiveGroup: radioGroup }
+                    RadioButton { text: "Automatic"; exclusiveGroup: radioGroup; checked: true }
+                }
+            }
+
+            GroupBox {
+                title: "Switch"
+                Layout.fillWidth: true
+                Layout.columnSpan: grid.columns
+                ColumnLayout {
+                    anchors.fill: parent
+                    RowLayout {
+                        Label { text: "Wi-Fi"; Layout.fillWidth: true }
+                        Switch { checked: true }
+                    }
+                    RowLayout {
+                        Label { text: "Bluetooth"; Layout.fillWidth: true }
+                        Switch { checked: false }
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/examples/quick/controls/gallery/qml/InputPage.qml b/examples/quick/controls/gallery/qml/InputPage.qml
new file mode 100644
index 0000000000000000000000000000000000000000..cb1878d023c7475d6a5cf0727d71087bd882482c
--- /dev/null
+++ b/examples/quick/controls/gallery/qml/InputPage.qml
@@ -0,0 +1,114 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+**     of its contributors may be used to endorse or promote products derived
+**     from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 1.2
+
+ScrollView {
+    id: page
+
+    horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
+
+    Item {
+        id: content
+
+        width: Math.max(page.viewport.width, column.implicitWidth + 2 * column.spacing)
+        height: Math.max(page.viewport.height, column.implicitHeight + 2 * column.spacing)
+
+        ColumnLayout {
+            id: column
+
+            anchors.top: parent.top
+            anchors.left: parent.left
+            anchors.right: parent.right
+            anchors.margins: column.spacing
+
+            GroupBox {
+                title: "TextField"
+                Layout.fillWidth: true
+                ColumnLayout {
+                    anchors.fill: parent
+                    TextField { placeholderText: "..."; Layout.fillWidth: true; z: 1 }
+                    TextField { placeholderText: "Password"; echoMode: TextInput.Password; Layout.fillWidth: true }
+                }
+            }
+
+            GroupBox {
+                title: "ComboBox"
+                Layout.fillWidth: true
+                ColumnLayout {
+                    anchors.fill: parent
+                    ComboBox {
+                        model: Qt.fontFamilies()
+                        Layout.fillWidth: true
+                    }
+                    ComboBox {
+                        editable: true
+                        model: ListModel {
+                            id: listModel
+                            ListElement { text: "Apple" }
+                            ListElement { text: "Banana" }
+                            ListElement { text: "Coconut" }
+                            ListElement { text: "Orange" }
+                        }
+                        onAccepted: {
+                            if (find(currentText) === -1) {
+                                listModel.append({text: editText})
+                                currentIndex = find(editText)
+                            }
+                        }
+                        Layout.fillWidth: true
+                    }
+                }
+            }
+
+            GroupBox {
+                title: "SpinBox"
+                Layout.fillWidth: true
+                ColumnLayout {
+                    anchors.fill: parent
+                    SpinBox { value: 99; Layout.fillWidth: true; z: 1 }
+                    SpinBox { decimals: 2; Layout.fillWidth: true }
+                }
+            }
+        }
+    }
+}
diff --git a/examples/quick/controls/gallery/qml/ProgressPage.qml b/examples/quick/controls/gallery/qml/ProgressPage.qml
new file mode 100644
index 0000000000000000000000000000000000000000..a1fa596f79ab05116c44800c47bfb5c521d1bf2e
--- /dev/null
+++ b/examples/quick/controls/gallery/qml/ProgressPage.qml
@@ -0,0 +1,90 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+**     of its contributors may be used to endorse or promote products derived
+**     from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick 2.2
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 1.2
+
+ScrollView {
+    id: page
+
+    horizontalScrollBarPolicy: Qt.ScrollBarAlwaysOff
+
+    Item {
+        id: content
+
+        width: Math.max(page.viewport.width, column.implicitWidth + 2 * column.spacing)
+        height: Math.max(page.viewport.height, column.implicitHeight + 2 * column.spacing)
+
+        ColumnLayout {
+            id: column
+
+            anchors.top: parent.top
+            anchors.left: parent.left
+            anchors.right: parent.right
+            anchors.margins: column.spacing
+
+            GroupBox {
+                title: "ProgressBar"
+                Layout.fillWidth: true
+                ColumnLayout {
+                    anchors.fill: parent
+                    ProgressBar { indeterminate: true; Layout.fillWidth: true }
+                    ProgressBar { value: slider.value; Layout.fillWidth: true }
+                }
+            }
+
+            GroupBox {
+                title: "Slider"
+                Layout.fillWidth: true
+                ColumnLayout {
+                    anchors.fill: parent
+                    Slider { id: slider; value: 0.5; Layout.fillWidth: true }
+                }
+            }
+
+            GroupBox {
+                title: "BusyIndicator"
+                Layout.fillWidth: true
+                BusyIndicator { running: true }
+            }
+        }
+    }
+}
diff --git a/examples/quick/controls/gallery/qml/UI.js b/examples/quick/controls/gallery/qml/UI.js
new file mode 100644
index 0000000000000000000000000000000000000000..0286ac56a67cfde67fba7b4942f7d402ec8b81c3
--- /dev/null
+++ b/examples/quick/controls/gallery/qml/UI.js
@@ -0,0 +1,45 @@
+/****************************************************************************
+**
+** Copyright (C) 2014 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Quick Controls module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:BSD$
+** You may use this file under the terms of the BSD license as follows:
+**
+** "Redistribution and use in source and binary forms, with or without
+** modification, are permitted provided that the following conditions are
+** met:
+**   * Redistributions of source code must retain the above copyright
+**     notice, this list of conditions and the following disclaimer.
+**   * Redistributions in binary form must reproduce the above copyright
+**     notice, this list of conditions and the following disclaimer in
+**     the documentation and/or other materials provided with the
+**     distribution.
+**   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
+**     of its contributors may be used to endorse or promote products derived
+**     from this software without specific prior written permission.
+**
+**
+** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+.pragma library
+
+var margin = 2
+var tabPosition = Qt.TopEdge
+var label = ""
diff --git a/examples/quick/controls/gallery/resources.qrc b/examples/quick/controls/gallery/resources.qrc
deleted file mode 100644
index 57d803b228cbc26d75cd031e184cad5481025899..0000000000000000000000000000000000000000
--- a/examples/quick/controls/gallery/resources.qrc
+++ /dev/null
@@ -1,24 +0,0 @@
-<RCC>
-    <qresource prefix="/">
-        <file>main.qml</file>
-        <file>content/AboutDialog.qml</file>
-        <file>content/Controls.qml</file>
-        <file>content/ImageViewer.qml</file>
-        <file>content/ModelView.qml</file>
-        <file>content/Styles.qml</file>
-        <file>images/document-open.png</file>
-        <file>images/document-open@2x.png</file>
-        <file>images/document-save-as.png</file>
-        <file>images/document-save-as@2x.png</file>
-        <file>images/folder_new.png</file>
-        <file>images/tab.png</file>
-        <file>images/tab_selected.png</file>
-        <file>images/bubble.png</file>
-        <file>images/button-pressed.png</file>
-        <file>images/button.png</file>
-        <file>images/progress-background.png</file>
-        <file>images/progress-fill.png</file>
-        <file>images/textfield.png</file>
-        <file>images/slider-handle.png</file>
-    </qresource>
-</RCC>
diff --git a/examples/quick/controls/gallery/src/src.pri b/examples/quick/controls/gallery/src/src.pri
deleted file mode 100644
index 66d903eacf02b2c8c3cf57b9c10fc4835937357a..0000000000000000000000000000000000000000
--- a/examples/quick/controls/gallery/src/src.pri
+++ /dev/null
@@ -1,2 +0,0 @@
-SOURCES += \
-    $$PWD/main.cpp
diff --git a/examples/quick/controls/shared/shared.pri b/examples/quick/controls/shared/shared.pri
index 8ca347371def1dd256b14cf2fe0d5ef4615160e7..1d9e0592f2fa16a34a19965046c41e896003bd73 100644
--- a/examples/quick/controls/shared/shared.pri
+++ b/examples/quick/controls/shared/shared.pri
@@ -1,3 +1,6 @@
+QT += quick
+!no_desktop: QT += widgets
+
 INCLUDEPATH += $$PWD
 
 SOURCES += \