From 033f9ab794b7411943f8cb973968952bbfbe052e Mon Sep 17 00:00:00 2001
From: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Date: Mon, 14 Jan 2013 16:19:19 +0100
Subject: [PATCH] Introduce example usage of components on touch

The example shows a typical android application
developed using components and custom styling.

Some style fixes had to be added to support
custom fonts on Android.

Change-Id: Idb4417571ae2235fd06e41145883f38a2a56931d
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
---
 examples/touch/content/AndroidDelegate.qml    |  88 +++++++++++
 examples/touch/content/ButtonPage.qml         | 107 +++++++++++++
 examples/touch/content/ProgressBarPage.qml    | 108 +++++++++++++
 examples/touch/content/SliderPage.qml         |  95 ++++++++++++
 examples/touch/content/TabBarPage.qml         |  95 ++++++++++++
 examples/touch/content/TextInputPage.qml      |  99 ++++++++++++
 examples/touch/images/NOTICE.txt              |   2 +
 examples/touch/images/button_default.png      | Bin 0 -> 1406 bytes
 examples/touch/images/button_pressed.png      | Bin 0 -> 1694 bytes
 .../touch/images/navigation_next_item.png     | Bin 0 -> 1341 bytes
 .../touch/images/navigation_previous_item.png | Bin 0 -> 1343 bytes
 examples/touch/images/tab_selected.png        | Bin 0 -> 217 bytes
 examples/touch/images/tabs_standard.png       | Bin 0 -> 1230 bytes
 examples/touch/images/textinput.png           | Bin 0 -> 4132 bytes
 examples/touch/images/toolbar.png             | Bin 0 -> 1643 bytes
 examples/touch/main.qml                       | 144 ++++++++++++++++++
 examples/touch/touch.qmlproject               |  16 ++
 src/qtdesktop/ApplicationWindow.qml           |  14 +-
 src/qtdesktop/TextField.qml                   |   1 +
 src/styles/ButtonStyle.qml                    |   2 +
 src/styles/Desktop/TextFieldStyle.qml         |   1 +
 src/styles/TextFieldStyle.qml                 |   1 +
 22 files changed, 766 insertions(+), 7 deletions(-)
 create mode 100644 examples/touch/content/AndroidDelegate.qml
 create mode 100644 examples/touch/content/ButtonPage.qml
 create mode 100644 examples/touch/content/ProgressBarPage.qml
 create mode 100644 examples/touch/content/SliderPage.qml
 create mode 100644 examples/touch/content/TabBarPage.qml
 create mode 100644 examples/touch/content/TextInputPage.qml
 create mode 100644 examples/touch/images/NOTICE.txt
 create mode 100644 examples/touch/images/button_default.png
 create mode 100644 examples/touch/images/button_pressed.png
 create mode 100644 examples/touch/images/navigation_next_item.png
 create mode 100644 examples/touch/images/navigation_previous_item.png
 create mode 100644 examples/touch/images/tab_selected.png
 create mode 100644 examples/touch/images/tabs_standard.png
 create mode 100644 examples/touch/images/textinput.png
 create mode 100644 examples/touch/images/toolbar.png
 create mode 100644 examples/touch/main.qml
 create mode 100644 examples/touch/touch.qmlproject

diff --git a/examples/touch/content/AndroidDelegate.qml b/examples/touch/content/AndroidDelegate.qml
new file mode 100644
index 000000000..08f8b5621
--- /dev/null
+++ b/examples/touch/content/AndroidDelegate.qml
@@ -0,0 +1,88 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Components project.
+**
+** $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.0
+
+Item {
+    id: root
+    width: parent.width
+    height: 88
+
+    property alias text: textitem.text
+    signal clicked
+
+    Rectangle {
+        anchors.fill: parent
+        color: "#11ffffff"
+        visible: mouse.pressed
+    }
+
+    Text {
+        id: textitem
+        color: "white"
+        font.pixelSize: 32
+        text: modelData
+        anchors.verticalCenter: parent.verticalCenter
+        anchors.left: parent.left
+        anchors.leftMargin: 30
+    }
+
+    Rectangle {
+        anchors.left: parent.left
+        anchors.right: parent.right
+        anchors.margins: 15
+        height: 1
+        color: "#424246"
+    }
+
+    Image {
+        anchors.right: parent.right
+        anchors.rightMargin: 20
+        anchors.verticalCenter: parent.verticalCenter
+        source: "../images/navigation_next_item.png"
+    }
+
+    MouseArea {
+        id: mouse
+        anchors.fill: parent
+        onClicked: root.clicked()
+
+    }
+}
diff --git a/examples/touch/content/ButtonPage.qml b/examples/touch/content/ButtonPage.qml
new file mode 100644
index 000000000..06b983db8
--- /dev/null
+++ b/examples/touch/content/ButtonPage.qml
@@ -0,0 +1,107 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Components project.
+**
+** $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.0
+import QtDesktop 1.0
+import QtDesktop.Styles 1.0
+
+Page {
+
+    property real progress: 0
+    SequentialAnimation on progress {
+        loops: Animation.Infinite
+        running: true
+        NumberAnimation {
+            from: 0
+            to: 1
+            duration: 3000
+        }
+        NumberAnimation {
+            from: 1
+            to: 0
+            duration: 3000
+        }
+    }
+
+    Column {
+        spacing: 40
+        anchors.centerIn: parent
+
+        Button {
+            anchors.margins: 20
+            text: "Press me"
+            style: touchStyle
+        }
+
+        Button {
+            anchors.margins: 20
+            style: touchStyle
+            text: "Press me too"
+        }
+
+        Button {
+            anchors.margins: 20
+            style: touchStyle
+            text: "Dont press me"
+            onClicked: if (pageStack) pageStack.pop()
+        }
+
+    }
+
+    Component {
+        id: touchStyle
+        ButtonStyle {
+            implicitHeight: 50
+            implicitWidth: 320
+            background: BorderImage {
+                anchors.fill: parent
+                antialiasing: true
+                border.bottom: 8
+                border.top: 8
+                border.left: 8
+                border.right: 8
+                anchors.margins: control.pressed ? -4 : 0
+                source: control.pressed ? "../images/button_pressed.png" : "../images/button_default.png"
+            }
+            foregroundColor: "white"
+            font.pixelSize: 23
+        }
+    }
+}
diff --git a/examples/touch/content/ProgressBarPage.qml b/examples/touch/content/ProgressBarPage.qml
new file mode 100644
index 000000000..f8885a428
--- /dev/null
+++ b/examples/touch/content/ProgressBarPage.qml
@@ -0,0 +1,108 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Components project.
+**
+** $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.0
+import QtDesktop 1.0
+import QtDesktop.Styles 1.0
+
+Page {
+
+    property real progress: 0
+    SequentialAnimation on progress {
+        loops: Animation.Infinite
+        running: true
+        NumberAnimation {
+            from: 0
+            to: 1
+            duration: 3000
+        }
+        NumberAnimation {
+            from: 1
+            to: 0
+            duration: 3000
+        }
+    }
+
+    Column {
+        spacing: 40
+        anchors.centerIn: parent
+
+        ProgressBar {
+            anchors.margins: 20
+            style: touchStyle
+            width: 400
+            value: progress
+        }
+
+        ProgressBar {
+            anchors.margins: 20
+            style: touchStyle
+            width: 400
+            value: 1 - progress
+        }
+
+        ProgressBar {
+            anchors.margins: 20
+            style: touchStyle
+            value: 1
+            width: 400
+        }
+
+    }
+
+    Component {
+        id: touchStyle
+        ProgressBarStyle {
+            implicitHeight: 15
+            implicitWidth: 300
+            background: Rectangle {
+                color: "#444"
+                opacity: 0.8
+                Rectangle {
+                    antialiasing: true
+                    radius: 1
+                    color: "#468bb7"
+                    height: parent.height
+                    width: parent.width * control.value / control.maximumValue
+                }
+            }
+        }
+    }
+}
diff --git a/examples/touch/content/SliderPage.qml b/examples/touch/content/SliderPage.qml
new file mode 100644
index 000000000..e14ecaa57
--- /dev/null
+++ b/examples/touch/content/SliderPage.qml
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Components project.
+**
+** $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.0
+import QtDesktop 1.0
+import QtDesktop.Styles 1.0
+
+Page {
+    Column {
+        spacing: 12
+        anchors.centerIn: parent
+
+        Slider {
+            anchors.margins: 20
+            style: touchStyle
+            value: 0
+        }
+        Slider {
+            anchors.margins: 20
+            style: touchStyle
+            value: 0.5
+        }
+        Slider {
+            anchors.margins: 20
+            style: touchStyle
+            value: 1.0
+        }
+
+    }
+
+    Component {
+        id: touchStyle
+        SliderStyle {
+            implicitHeight: 50
+            implicitWidth: 400
+            handle: Rectangle {
+                width: 30
+                height: 30
+                radius: height
+                antialiasing: true
+                color: Qt.lighter("#468bb7", 1.2)
+            }
+            background: Rectangle {
+                implicitHeight: 8
+                implicitWidth: 300
+                color: "#444"
+                opacity: 0.8
+                Rectangle {
+                    antialiasing: true
+                    radius: 1
+                    color: "#468bb7"
+                    height: parent.height
+                    width: parent.width * control.value / control.maximumValue
+                }
+            }
+        }
+    }
+}
diff --git a/examples/touch/content/TabBarPage.qml b/examples/touch/content/TabBarPage.qml
new file mode 100644
index 000000000..ae4a73b88
--- /dev/null
+++ b/examples/touch/content/TabBarPage.qml
@@ -0,0 +1,95 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Components project.
+**
+** $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.0
+import QtDesktop 1.0
+import QtDesktop.Styles 1.0
+
+Page {
+
+    TabFrame {
+        anchors.fill: parent
+        style: touchStyle
+        Tab {
+            title: "Buttons"
+            ButtonPage{ visible: true }
+        }
+        Tab {
+            title: "Sliders"
+            SliderPage{ visible: true }
+        }
+        Tab {
+            title: "Progress"
+            ProgressBarPage{ visible: true }
+        }
+    }
+
+    Component {
+        id: touchStyle
+        TabFrameStyle {
+            tabBarAlignment: "center"
+            frame: Item { }
+            tab: Item {
+                implicitWidth: control.width/control.count
+                implicitHeight: 50
+                BorderImage {
+                    anchors.fill: parent
+                    border.bottom: 8
+                    border.top: 8
+                    source: tab.selected ? "../images/tab_selected.png":"../images/tabs_standard.png"
+                    Text {
+                        anchors.centerIn: parent
+                        color: "white"
+                        text: tab.title.toUpperCase()
+                        font.pixelSize: 16
+                    }
+                    Rectangle {
+                        visible: index > 0
+                        anchors.top: parent.top
+                        anchors.bottom: parent.bottom
+                        anchors.margins: 10
+                        width:1
+                        color: "#3a3a3a"
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/examples/touch/content/TextInputPage.qml b/examples/touch/content/TextInputPage.qml
new file mode 100644
index 000000000..3174c1b71
--- /dev/null
+++ b/examples/touch/content/TextInputPage.qml
@@ -0,0 +1,99 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Components project.
+**
+** $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.0
+import QtDesktop 1.0
+import QtDesktop.Styles 1.0
+
+Page {
+
+    property real progress: 0
+    SequentialAnimation on progress {
+        loops: Animation.Infinite
+        running: true
+        NumberAnimation {
+            from: 0
+            to: 1
+            duration: 3000
+        }
+        NumberAnimation {
+            from: 1
+            to: 0
+            duration: 3000
+        }
+    }
+
+    Column {
+        spacing: 40
+        anchors.centerIn: parent
+
+        TextField {
+            anchors.margins: 20
+            text: "Text input"
+            style: touchStyle
+        }
+
+        TextField {
+            anchors.margins: 20
+            text: "Disabled Text input"
+            style: touchStyle
+        }
+    }
+    Component {
+        id: touchStyle
+
+        TextFieldStyle {
+            implicitHeight: 50
+            implicitWidth: 320
+            foregroundColor: "white"
+            font.pixelSize: 28
+            background: Item{
+                BorderImage {
+                    source: "../images/textinput.png"
+                    border.left: 8
+                    border.right: 8
+                    anchors.bottom: parent.bottom
+                    anchors.left: parent.left
+                    anchors.right: parent.right
+                }
+            }
+        }
+    }
+}
diff --git a/examples/touch/images/NOTICE.txt b/examples/touch/images/NOTICE.txt
new file mode 100644
index 000000000..93a9afc8c
--- /dev/null
+++ b/examples/touch/images/NOTICE.txt
@@ -0,0 +1,2 @@
+Notice some of these images are derived from Google applications resources. They were provided under the following license:
+You may use the materials in this directory without restriction to develop your apps and to use in your apps.
diff --git a/examples/touch/images/button_default.png b/examples/touch/images/button_default.png
new file mode 100644
index 0000000000000000000000000000000000000000..6d6cfd9ad25d629e34c4341542fce7fab8bd685a
GIT binary patch
literal 1406
zcmeAS@N?(olHy`uVBq!ia0vp^wm_`O!3HGTR25Tz6lZ})WHAE+w=f7ZGR&GI!N9<x
zkr@(E65;D(m7Jfemza{Dl&V*eTL4tez+h8h1!U%?mLw`v<mTiRTUFR9fmK)m*&tzk
zB?YjOl5AV02;Tq&=lr5n1yemkJtHMME(HYzo1&C7s~{IQsCFRFRw<*Tq`*pFzr4I$
zuiRKKzbIYb(9+UU-@r)U$VeBcLbtdwuOzWTH?LS3VhGF}m(=3qqRfJl%=|nBkhzIT
z`K2YcN=hJ$-~j5*+yb~odBsp)0sW_6kyxN_sAr%LHyNnW2IxmC-~5!!v`Ux6l2kh*
z14Cn714CUylMq8QD+5C-69XH4G&Kl2!MdG`QWHz^i$e1AbL;{#D^hcEL0knRU`Uui
z^dhT(YPQh_`2xvT;2;Az2u+-jZ%Z=M5aEjAU62f>e?g*F{zaLoz;FhIrk$aUK86^Q
z55aPgL8-<0Ii+Cr=0;Er$b#q^obz)Fic*V<K^B-o)gz0ct4Ek0nwMDucN3a0x~>R>
zydB(G$bwJ}R156XicB1V4U)kOY>=oGI88*jWag&kfy2WL7~)tZkh}+$ch1krFA6S5
zOir~kGc`2^h9kN#x(={akqE0yP^?0dz#A}--~#4cJ1$`Qg_Qz!Tr<sfY6A;~Kb|g*
zAsMW1XBu)fJBYYk)sb-YNKBo0S;hQBs_vwF%1gFx65wU*=IDG@uP87>x@YqT@i}*&
zo!xwU$EsD{k<*@Qbd{OCd3|}?TT>I?;4iiH^2a}>9^p1Do%8(XJ&W#y1J%r_>}Aut
zyG!q-%zJM7A(uJ3@Lme@f(DI@6)h$cGJ`fYs9p}>%v89%B#F^`*+QX94$C}`GEMVw
zR$bEQGr5aZXJ(t12lGrdQSJyM-l-GVjC{4kHl#>tDe|Vw3eib8X%gZjb;4w2#DOT^
z+plYQ)LRbr8%wq+zTTy$oWi2=yyRZM^{>gZmI>cc;JswB_h)|X7RwtfLFek%Y_GN1
YKU>(9<>GXYS)dZq)78&qol`;+0G?sUi2wiq

literal 0
HcmV?d00001

diff --git a/examples/touch/images/button_pressed.png b/examples/touch/images/button_pressed.png
new file mode 100644
index 0000000000000000000000000000000000000000..ab78b6ea363a132ed3210c611bc2622984601e90
GIT binary patch
literal 1694
zcmeAS@N?(olHy`uVBq!ia0vp^E<kL+!3HE(EVz>jq&N#aB8wRqxP?KOkzv*x2?hoh
zjm(gUk_cZPtK|G#y~LFKq*T3%+ybC#1_ql7D<CsBwIorYA~z?m*s8)-39P~j$OZ}P
zD=C1Llw{i~Mfe6NIOi9oDwygS>KQ57aVaP$*c7FtSp~VcLA3*Uwn`Z#B?VUc`sL;2
zdgaD?`9<mahL)C=`UXb&Mn<|o6}rWhc_oPzx_QOQ5JO<*xTF>*7iAWdWaj57fXq!y
z$}cUkRZ;?31P4%e<`%#$$}5KY3g|!mio^naLp=k1xXD0`Hb6gG`R1o&rd7HmmZaJl
z85kPt8W`#tnuHjdSs55wnOoZEqp3mI3D)ggl$uzQUlfv`pJNx0S&^EP3*ssm0YkzB
zq8C{ORI`mf$QMYy0tXq$L1^NHd|Q&4h6q;_?}B77{R<Mc@-NCv1%@*yH0=y+^fAPc
zd<d3{3`#A|&nX3~H#dT6Ko&&T;GCaZP?TC+46?u!svcPkT|L75(7enNxSP;~(RD>2
z<n7?jLKcK-pju$3R%GG`Y>*6QV1q=hz-c1FB{MfQ4;&t57B>1=C6K%amUqt2$u9~n
zNK8((Gcz?c28JWLFuD$~Rgnm*Oi-*slE51<kl+I5Tstmc`h}GOc3gGl2lq2DFv)nj
zIEG}fzP)|c@3w;g`-hodtvEdcR&!_xPVMSqW_QSC-NO<T`t?9?*wkN3?VR-ADhkC|
zC@5;ghjy-zntbEl-9+;vf@c)@6Z%z;|Ga%JvF@k!a$X_9mfX*ue{Sl#vn=Qb4@cJH
z$)OdFC*~}+Kep=c-}1Y`JPPag&)MIpbZh0IKbzCGh}A#3cKosGs@K~$=dHP9>f8Hb
zYQ4)b>C}}*+dW+tH>wpylyUSZwQrr)d;2q6iA~st=GA(BE<Qzz<ICpliI04<Zo2H^
z8Sh`Lx^MmS`~U1eTPC*`-%5V*(KY?z)5y;~&%)OK&a^Ud&F|`;_Wni}qwv+3#czID
zAF%DHGFfKmp>|X&p=IY}8I3<a6SfAozntxEAj-#dXkQJZpn%$eMJ6r|GZ?xr2{0xy
z>3BJ_v~X_F;H9F(OwL6nH%nTk^n2}BF}7&2{L7bEnf7o|qXGL8i4d1n7ri#Ep6qNc
zlOtk2<(G%Ys+;d#o|~lm?8<^Wt?reAelOBa$G@oi#9h8WH1FX%7nkJ;Ri&3sH`J}Z
z8vEvZ(%H0yVKW!U|5(pg7OtneQ~qB(!{z5Ij2QUYct88gyc6G*U-RQ`=9!CT40-}d
uzYp$RTK8I!?cejS?=w2~^L?B5{XN5ax!s9|^H*DeY7kFXKbLh*2~7YeJyo&*

literal 0
HcmV?d00001

diff --git a/examples/touch/images/navigation_next_item.png b/examples/touch/images/navigation_next_item.png
new file mode 100644
index 0000000000000000000000000000000000000000..6665c9d85b8ac4717ccfa7ae07d06c188cd93735
GIT binary patch
literal 1341
zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?3oVGw3ym^DX&fq_XP
zGbExU!q>+tIX_n~F(p4KRj(qq0H~UQ!KT6r$jnVGNmQuF&B-gas<2f8tFQvHLBje<
z3ScEA*|tg%z5xo(`9-M;rh0~YMoM;E3JMA~MJZ`kK`w4k?LeNbQbtKhft9{~d3m{B
zxv^e;QM$gNrKP35fswwEkuFe$ZgFK^Nn(X=Ua>O75STeGsl~}fnFS@8`FRQ;a}$&D
zOG|8(lt3220o0wj1#pY<ilM#&`cJ<iu|VHY&p;n;GEk!p(2rKmMX8A;`9&f5`8jru
zpg>Rv$jC3rFV4s>P;d?gdP%`IF*!32Bx0kFt^w)-8-0+okemq)1CR}9;)I-El9`4G
zC=~aDWH3Dd61DO#%1i|Y94L6~3~lr=#PB*2;&fn4*>M5A2a9z(u58ceeZVww+SA1`
zB!l(s4BrmlM49&3`}bWvZ$>Hzc`sd-w`rM1>cYIRWA2$*J!t`YY$uN&S`c}&Gbu4!
zEZ8eE%&Vn!?xb0~$F{$&%=<p=o!i~d_3^%Q<88m&KEG!B{Cl<izvs5wFJ+jd`J|tn
zbMD#KIJO`6l_UBbESXrV7tC>5%Qwe0y7}wc&pBt`G+3W~EX5qq%=x0#^TZ;rgX$mE
zV&od-e(-cB@cepUtrC9Gbc0O$>WAWg+Wa@j_Bo1)$};-qwFyRWeXC*>J76l&x<t#0
zX;wAc@`vg>mfex9Yj)niJV{HbfldCPszJl`60entH!j(DeGwFOs4jnCW>GuG%|1af
zreW&@mx+uf6{2!YS3NAJh8-$cy|gp5gkkx)$O@*n0>Lu*Ex+RL7fLLC!LaKWhx!9v
zi@8&tZslqgSS7+}@`LZ!L*_HAsU5KeHzsQ=<yx>myg(?1z4*YVU!r^m<TwIPF-X<$
zgeks%+;-md(dR>ZgGITtOBs0YwM#!(cK%ZqgZmOb=>-#tSS~#9{a~5M@pRhZ+AE?j
z8rMzLcDT;=|Esh7U&|-fhvI%*+BI`(rqHhkuCI5mn<b;XK{}oNU{;FirptHI<}^7y
z`&ql$>c+B3pMP8YSeL-MNl5a6Qjc@uQkllm9oEcxG1YgtOyu(p+HwT0Vpv`992j5`
zg;$a)7_QrP26Zub8$55z<J}^@_Sx}72`5q61Fv}xhJ8?t|LONZCT7dq_ZB^YB@K&j
z+~Uk#eD42ugBw|yNurVmtoF;#F`MSSojW)|w2IeLL^MJA-LHeSeX5s>R-QX}`B~ti
z{tkwJYlGNd?`G7Q?l)KP!&jq~U2H2Jy))8bp1<W(_{rS{uROCvc^}k0)3r$5Gwo>+
z&pBr?*FVP3OC%eld>r&8bh?$8GOh^TVAs1beS&Ww<0i>>djc<-UZ~vr=6Pzvo7j7W
phl^OOtW<tyS~A_-z2|XTJ;N5|dY%Xt{!gF+&ePS;Wt~$(69D#g1a<%b

literal 0
HcmV?d00001

diff --git a/examples/touch/images/navigation_previous_item.png b/examples/touch/images/navigation_previous_item.png
new file mode 100644
index 0000000000000000000000000000000000000000..f8be011976b608cdce6a6a42f1c82130fe000b13
GIT binary patch
literal 1343
zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC&H|6fVg?3oVGw3ym^DX&fq_XP
zGbExU!q>+tIX_n~F(p4KRj(qq0H~UQ!KT6r$jnVGNmQuF&B-gas<2f8tFQvHLBje<
z3ScEA*|tg%z5xo(`9-M;rh0~YMoM;E3JMA~MJZ`kK`w4k?LeNbQbtKhft9{~d3m{B
zxv^e;QM$gNrKP35fswwEkuFe$ZgFK^Nn(X=Ua>O75STeGsl~}fnFS@8`FRQ;a}$&D
zOG|8(lt3220o0wj1#pY<ilM#&`cJ<iu|VHY&p;n;GEk!p(2rKmMX8A;`9&f5`8jru
zpg>Rv$jC3rFV4s>P;d?gdP%`IF*!32Bx0kFt^w)-8-0+okemq)1CR}9;)I-El9`4G
zC=~aDWH3Dd61DO#%1i|Y94L6~3~lr=#PB*2;&fn4*>M5A2a9z(u58ceeZVww*3-o?
zB!l(sbju9UK#{il#hunG6q;HS777WjadHreTe!BhX+fx#;8wv-ub57$sXIj0MX>6)
zIC5uCY*2{MQd-eESD{Jl-RsZ46XGU^oU<)=N~rr$k<XU)?Em|{#n0}f?Y^7mljb|~
z%(Jg?>@!|Su1Q}oukncBis=EJjBlRJvYQe0=vLu$AL(+n_nobG{#krE5M;q^zhKKO
z(Ynsv1(l3u2gGME_dgJ_X%1Rd#P;oRz~}h~|2^f`VNPGVWfj*3=JwkMCx#n8P=3?A
zJRmAGWTEel+q~;a-S0X6=5<#*X>&dOeQQ<aF-7^77$d$JjBO7URkWY;tT}L3at81I
z1)Q4`Sn?b@idZ9hb}N3^9;~+3>ia{b7EO1CUcN(FKcXzY-buFL)LUxsl*6E5w^)SU
z)YH#QW!n4&R=r@TF4!(<^=$W#|8l<`>b7Vb9SFPgw&i`o&N+PR{wseF+N7c7z+KLM
z;MY5;?SY@~g(=={&FSJuD7WP3+rg+ay)JY8q1Y3vt}whVDCc{VUMJ>fnm>1cm`wU#
zPu>S#6>Dp6P7!?jMN6(u_F41h3qK#-QcIuTdPVX;@?+K;Gj8hLcplNX#%^~4cS@)W
z18-l`Zf)irOV+s5KU7%Lp3}v(;Gp$`pjn)H%IQbMf3d7-(dpt@aPV{i|Ff!w8g;RQ
z20D!euIv{c2=q9qA2I)@&n~^QQec$~;~leKLH6w5nNAgFA8gax^5z*w!|`L*5*l^2
z{8JR~#J&5f;I)(K#e30+);q#C(jwww{c1PxI!!TdV4Htn<)M|{$1i2=zrruA7`c-<
z<3jEe(E`oLINk@}A4#lfR0$PyXf}Ufwqt8Z-AeHTl^Kqip`s4W%O5gE#MQ3ze#KkU
zaH%Wf*}vxxx7{_Xur*-XCV$Q?GgQ`L@!bpD<_G6#dI}3FocwU3dvy)_F+1xgJNN{Q
rdN|EjrYj_VaMD|wu8<-jocD?Uol#vO=S=olpd!xG)z4*}Q$iB}2Q35C

literal 0
HcmV?d00001

diff --git a/examples/touch/images/tab_selected.png b/examples/touch/images/tab_selected.png
new file mode 100644
index 0000000000000000000000000000000000000000..2345f7a8ef06a6ed09d6c14d7988e24a279da70b
GIT binary patch
literal 217
zcmeAS@N?(olHy`uVBq!ia0vp^f<SD<!2~2t&6k@3Db50q$YKTtZeb8+WSBKa0w~z+
z>EamT(fRh;MqVaEp4Nx|UBiNc6z(#tjA-amm6+&yqrK}N*Eti97bOo>%tOjvE<fLQ
zN#)gEVV%`m-yL~pXRvl_;)d<+la@@-yr}BXsmJIgvcz+;n(r)=OtaKas=tbEe=aF>
zUvu}oA>WP1HFwqS3o2)SPVAb?)ALl+w0`&N$A7nF)$FsEGA(4;!+1wr&XxN_+)1Fb
O7(8A5T-G@yGywo&no&Fe

literal 0
HcmV?d00001

diff --git a/examples/touch/images/tabs_standard.png b/examples/touch/images/tabs_standard.png
new file mode 100644
index 0000000000000000000000000000000000000000..7140ab7b75b2ae40deb654405a6632964705c11c
GIT binary patch
literal 1230
zcmb_c&x_MQ7>%okHCitVt7wIo1@Y2Ml5Q&vX~b>R7PsA6TWG<<X4|O-lT1ivNfs1D
z5Z0S`5K#{vJ$Vs96g+uXMDK!vAbJr0fORI#wlVd`#nLp%``-J$d5`JbY&Onh*n=#?
zFqv9aZ;|^xa>=tZ<oDz4t4(s-?N)m}!|a)(*AC|1g98k+>zLW@;%<Fe=_6Y(251cm
zq3sej!>FM`9&LyXF0?JjSHdzMF%<GlVZd_{1z#@n-FlO&AP;f{K@wzMV>ymfy}?jv
z>8E2kc`NgmFm@FHf*=rrynwumKq{3=K$L+j=LjR`Z#dWpbB@0-YO>u&hkoBPU2GzU
zqkWAvw2sR>PX~=Z@j7jHJjn55SHvF(4Hrm)2*#a>P$eFfIvSY64c)*{lSL_?6Q!KA
z*p`ZlC@Eq|1u4#CW~8oo(7?!RBV=h!GlZ5+Upbj1u{hEu8L?Oe)J4Ko6d7Gm3jdc|
zYz`;6{$iI_ru|Y>S@BFra;9l&k_x7<gu|%TYe64b>k<FB91D_QT2Mi@>p|bA0}3%e
ziKY3I{vF4}<29w=w5mI)YvW}l!C3I$!iJ&whp=g7I&6w6(Vpn)rVX7a4~guG-xd<~
zqIv~c$UE;EeW(=+g*?eI4W|{+sNQ5$K}?QH6#g2_C@%8P)mXBBw@(3$z5nXSBXTe-
z*YuO^YUbN5iDksuoliGczHhyr%UTa#Ji}-2a2K+Tg{Ap(9Y1(CGhZoY?>_mo`IgDN
riN06ztDPI4{pW|S!J}Ue|M)Po|HR(+)!^k<dg9bhHT1_ztJi-5RbO{Y

literal 0
HcmV?d00001

diff --git a/examples/touch/images/textinput.png b/examples/touch/images/textinput.png
new file mode 100644
index 0000000000000000000000000000000000000000..b0256db2c16658d849695c6e240ecac68ccbaa54
GIT binary patch
literal 4132
zcmb_ec|6nqA0H-XTIGn8wHzI6?jq(GW<?0K$+a;IGtDxRGshQ`yJaOwiR36MVeUx!
zS#qU9a^(soxBNzZ`}+0$9sm6H*gkuIp0DTY^?JXbuh-}G_(YqZL~iAm;0FKzTT#Xa
zrvLzsE$lTP@A~zXaF`wY59q3Ass{i(h!<GFasvSTdISW*9ECuD&B-Jef+rpTFy5Me
zg=%HlEgHpQ9$~)P0RhX*N?hOrzdmLx0<?%mg_v_jhRgaIa2pA4KX}^Ns+t2C1#vPI
z7Pu6K>*D(YGH<A{FfbhIp?UC4<*R+|Wvn)0`npG+balH<1$LDI%vZvIwG=c*h-xNU
z`15#;?T($z_4Ay&KpaA7j_Q6F7a(%MfU|vtshyUVW86?Y_Zb@ET>ehJ%3Ri`b1gU#
zas(m01;B6Ep{^AqD>lTLVp;r5TzL)nVm9@la-@>7XeQsS`;dY9LeIIo!-vb8uF_=(
zGbJ!B;uWelXyxX;44M8c8ZguLs>}!1tcyH&rWJ|-7@9xO*0yln1fVFK=J0YvHq$d&
z*-%*gbMzNZ0B=gYMg>_Yc2UFa2EZ@dbub1PjlyMb@48AD`t;moX{Ok65vO!GrOvef
z4?h#uY>D7yMX``V(iKAv84NMaEpakma&i*WIqbGr)!nx@$Z}Qt`GsZc8QBTe4L#Zo
zOrPh(eHc>|FehzuZBKD!sx_d5xJ7rU|GwE281RJ~P||z->)uFD`=t7hf^q_}6BC|3
z92p+a!=H{UXM~YnR7Gmcr!{|GK7A}(Oeb_dN<;;3IFx-i`-H*Emx4lcmh<X7Xl<Zc
zgYb{0I{E7v)nYRdpR6rDrSOGEyOl?1g`yLn&ivuQ9sR+()a7`@gVH^O-Of7z0wXlc
zOHn+}N!kF!elBS*oeP|S<7Yui{Ld>Z-0~9(ed3ibd>>ho60nW&>NnAYSPst##ygW`
zZpn*h^@V%ZaPCOpq1@zG4TUOl$~$hA3{mms>IDPBLySROSGb_YoCICqLp}H#b_*)K
z;qblW?hR-Uz3>WnGECiji!Ja>^;T~I!4RY_e`L)GMULK30&mzfNaU8@y#&$Q+tTzq
zLAz~u{SkWRM}@hbA)*sNNxF-#WOH^Mx^yoSVXi&9pCVDlYj<hsCeJId>XucG!0_!?
zIoq&X-vAzmbQc|y<VDste=zV9xy~b2{jUFbsVH3NNv&A_?rDI0ghOpIukLeRu2v&7
z@9r4`{RFf$$M$_5iICfzxrU4cq1(Hk#u+D`8|2y&m5IH&OSD0JAPPh4$DPJ@;*KkJ
zTy?s7+C*$v-36o)x)^o`*YO}5Eq7nXmrs5BwK#?P(~j|uXN%|$xZYqVj!6nNR*Qd>
z^bRWBWvlF^Rsejmt&3J3GG4c}Uv|c?;!v;fRM@r}pK091eU<#dlEHiX;-wm@<P!L7
zfF5Dn_FVx>drDh@BzQ-7SHrj0s#=8Rm{A~+Apd$>+`$Kz-{@7KBxO$~3!@^X#ZE~d
zOe+bsLb*fiWVL0P`;wb9osr~S7+rg_0_hB}gUq%h9rKg}vchJ^B@OkvPih>0s_U=o
zkGOMcYmQet`rg&DbQ?3KLE!N~7&2Lf{*^w^l%JfJ=#e^350EiS>7rBV4$urahke1v
zzh|$Ma$3~r)>wvS6`jsB>MyC)jzAeQZl&V>z%g*qxJw_^o>|CLB!wnD*<qHeJ6iNw
z=FUC|{kA*)uS-izOEll&-zx4w9=W~TmOT1wR_YUTmJct3KRa|_NODMGsQAUHEwze{
z3o56?@6eKI<+S*(s>4rN1FU!Ig#`Pxii4?(hrAA5OogPnq;jOj-!ri$bqIH)-y_~L
zYgcrab;r7QyDxV@^Ws={S=1Y>bO+V7!Ih}7qO#}<rAzML>c+Ikk|h`tl@j6-))I8p
z1~qYp7o&+W#28U+EOE0Dcm%W=vKe_~ub7(l`K6VMOmVD6W`4osU4>To?VddCe5agZ
zv}@MM;+CCuNzk)L^q$y0v83vooq(ZX4uuv|nQ)7Y{EXXG$f~o!FREXG-#W(XU8~8-
zjLEFR-oR${JMF)hnAdtJ%O>ks!%?Tl=VE5y17~H6qSH}HsJJFm%Qx-4R*q$?5|*IH
zu$!!Eo?3b1t)llB%zdNIn;Lam&o5^AUt2sZpdE{jO&9GEb&#Kww^SIHm%<#xaHEMO
zV?|4KZ|fNzc20qfk?sRd#Vy%A!;kWF75aRuCIgQ#?239s%TJcG=7i=T%d*Q#Jlauy
zQB0xvHx%Ck<>7%H+s8lkm$uB%26*HG<Q}x4?)If)S`M~sZOIZ46q^=nSJ*{vJ=b3<
zNlt`1Lun3v-kI&z?@|YB#+P22cEyeO))VV{-e`BPmM$OOc4Av1GPW`0Zt{o(OThjQ
zdf}PGGlfr*=5bT*Q+MH-@Mw4(d}pO^WnLg`0lUh%>bunQwQG80scYE`cocY_?-T!R
zpb_vi4_rW*ZwL2zU|kJIO?j9U?6rfmZM!I^{tCi3LW@sL&`xB@XBSjn^}g(cf2p-!
zkRKJOfHO2e)R!B_KY#rk85<{hLX>LMgnVY$fiyJ?Fr*uvprhq6#e+sP8yYxUTU2Vd
zNPx62Id}eb&xxpkiI4mPpP?$YSBfXzk{=D_HnR#69BMG<4(;77wWklX7QM4JcgUn*
z*5N622-uZe9<`h_(r|brZpLl_zmf=~hd&H&HK5nqMLVGiP$H-SPBXnnAI?8?_!2sp
zo05={bx<X@HTNHc@REg+HhmdvOwnOG6>T{ttWGsc5mEMn(DB)N=PljVM3VzP7?<*^
zm%p2QGp0#jlevTuD0Y9?>x#r@ys&t=eRy_|G3eF2r|E0ca*&#f8uh$urSJF1l^V6r
z9zyvModve<o}Q%I)s*#rs~nFff{Di6)6GWBaroVRUNODx7B?-5DjnU5r-mE!pXyum
zGZk9S3VA;B6!DzwaVgGse@BPdw|>Jle~kHPCi6aNyblw2X0hkxT=*pO&fJ}4>IYw5
z>ieG2vajeg9LB!;Rlx_l{Gpd$Zhd)DerBTbH1_N{$8Cgo=lBxkoQKTgh3?3XyJNS<
zLM7rE!_2XOCzI)K8{c(R^$~;HIO4dT@xb>AOI8FwpEvi&*CRf|zVE+Z#~QyiR#xR2
z>=0})X*`q2LPj9(G}gwS?>N@pbtLCVih6BaQp1CRbB(0c58n_0JM%`(RkEHg0FUm|
znEBYaAT@PEP^;TNCh*><+-k<$<5xB@HkqC8JEI@pRwo3Q1oVxDw59K9*`uIyZSCSL
zZ7z*b{KEAFE3rl7`ZbLVYS0(`hKQNiXt5~GGZc7P$>8hsf}(=n=1_W}{mfHx?mOo4
ziZwmYwLrt}SYUb}b24%@u5)ksjVlflL4?sqQ$*&dck$|#f&9yr+<_xYcFVBdxw62a
z%WLVoxnj30eTG&Btl7WU9u4eWZRN?`X0P+|!qHW?Ri}x8TXOtnhi=@{$zSbQ=yJ(r
z&Q9Fya%2_%;Tj)Vih!-9E*6^AakFw+hmA^%#*q0)7HyH%bK$}4v*~6Uy=@?(>fras
z^Qo<Q89~%#rYo+ge%hmTJWc0#Z%(DgQs*3T#QD=;8<jAXeK)2zuTp0&bTxC?X|^$O
zbi!=GEHxuehkB83<%^#z(Pg-AKK$#lvL+^I{Y}%`7~=x~2<%+{aR3<Ccd=hMdkI!(
z3fj~}(}_fcVx37iJk*cq&1M4tT7H`BB@s`-g8hh|UOt+B+K>%~CVRaO!yw=d3dKVk
zf;Ke=BS>UCSPiNKRffR%!C<f!+1W+&l!4JtclMn&#EnAn)`Y>RR4SCJ0ws}MVM-br
z8Zbp=n6k10o1x(2??u7-DR}wp{}JTRI0kqhCo;jCLLhm8*W+Swr1KPQ2xL9cug{Nt
zQV1@8W%Ba*c`Wt;Ve1x{5>yfPD>mCzYaP`*h4&$Oo?j1d?M0x#m9#d<zr%lJ`{9Kk
z5xvQHA0M_GT<xdJX6$!9`mZ$bBg#J=HiN%An2`y1wjk^K`n9Lc*zbJIze}(g{OO<t
zTNiPYs2deqSK~MQe~FFvBm4)k*DZe+dmYs@C-~t#(FOz}-fKfTWp%a||JJhUd>eKI
z$&*C3^u{{j*X8&f`klRz2lH1Rjm=p$;s0+@oSlAky7zgq=SH79JHhatc=m}YK5SK#
z{<Q_2oiu&U<J|F1lt1h6qo+5jp^tTiZGyF6e`o*S%E^A>e{KC=9vwfd_uq@jW^0;~
zoCz-e23QInuB@n}qM)dxprmT0q^_x`#Qti*e&cK^(Ygge#$zcYvK5Ks3E!v|as3vo
z%$_2uKYTYc{%f6nXuzH~aDKMupR)_j|LsNm74|rbM;Yi@xp7avZRHCAg8;8+-#zHQ
z?m52hbVju*i2q#Z#jwHAF6PIhnII=gK~5lV1$P70(KG}QDt}XPL5LTW1I#XxV%b5w
zJaSGFLE!0tP%EzCl)<#&)UoQMot;X~+?N2M@gcR-{U8uHfjhg_yg*oHPFnY-1IHdj
p)s+1(kil6KENHr$2UsRj$`Mzw-M2S#O=x}8q6|+O6zDsK{S(CY{8<11

literal 0
HcmV?d00001

diff --git a/examples/touch/images/toolbar.png b/examples/touch/images/toolbar.png
new file mode 100644
index 0000000000000000000000000000000000000000..e9eba4c7442d595517fe863682e58535226eaae4
GIT binary patch
literal 1643
zcmeAS@N?(olHy`uVBq!ia0vp^@<1%j!2~3^V-HsVDb50q$YLN*7=#%aX3ddcU|`Y6
z42dX-@b$4u&d=3LOvz75)vL%Y0IFtSu&J;DGILW)5)~?PbMlI<Dr}X&Dy)EPkg&dz
z0$52&wyjcxZ-9bxeo?A|sh**pk&+#kf`WogQA(Oskc%5sJCJ9qlu=SrV5P5LUS6(O
zZmgGIl&)`RX=$l%V5DzkqzhD`TU?n}l31aeSF8*%1ZIv)YH@N=W<g12ex3rz+{C2(
z(h^%GC6GmM0Ci_>0o<azVyLfx{?o5WEYLU9Gth^d4Af`?^rMw;eoAIqrAuN-s-2O6
zp|P%kp{}7xh@pv<fuWU!k&Ql@8ibu--Ofd+i6!|(A^G_^b^)0csX4hIu7VLTBupTB
zkySu7+vtOQf#fT2kbxY8CQit=C7Ef6a7FPhNCwltAW<v-qRdoaID<md&d^35Lk!7>
zV7bVk)Z+Y{Qm}e+V1Qr<qHA!@&n+lQEiMLGU<y@_EQYQgVSZ>{W(nL)Xu{~aA`tR+
zaAzS4LN!n=uv05CaRfF<1~afhqE_HE5#f@Vo0<m>4`X16W0gSi9$4NvKPSH^xF9h(
z)y~Y+)EF3!=)&kaz*a>ftTHl3whBoCZ@@r;3z&25xPa*wRtng0d0NkxW?*1^>FMGa
z;=wyN^mgD81A*@1f6G~SEnu!%B(jS4(!M>?>IaMGDQ??3sqC*+)a~!Nw{JD}Z+XW2
zo}btB`4-(B3mhtZgp#-PUi)v-5o*8F=fKUC+ybq=yFxTm+fFu`#BepHWgm!`ppYoF
z+VL&3{qnf^&(C_TiraosX`%sJkmBMMk+Wpm9k?RqYTV&pytI~G#yhC}x&EuYnvzy~
z)pos4dR$s1e~(}8;7aE04ZHc)>o!;kSMjkb-rRmdzxc~Mj_8SH&l2aV?O5l~bY0PA
z*%XGOvH7;|lTNMc4p_yy$@Xy0&k)(m9)InQYHdDqY2~vwt<9cQigI3@JD-;Eyj<k8
zRoUV85mQS6=H*+IUGg}yg%lZ%XYa~i#=O*`AkC=ksAH$!`sH5FCPYOACl`xo<Sm-O
zu+((R)cYrj-_!-Jo;de7<L$|xdu~kfvsrR5Rg_)tfcQh5y>INaO&!(VFm|1u@k~(m
z!}I-}%X+0He>zVN$`Y#)ezu3P^69LOCv#T^Zfu^S*`dEhXzQlV6T4;SE%|Y#I%>no
zb8{Sdb!*ZSU3Wd1`pMuC=hjbmY>q0vpSXEPSz1boj$drd!8-Z>M$Zz|*7amR3@Ev_
zXvMtjbBr><mqT98=$$ypkiY-m&(FJqu2s+Z_wnoBc}1>QZ@=DpsJj0%dqQWC|Mz&-
QpP=f%)78&qol`;+0Qv(+s{jB1

literal 0
HcmV?d00001

diff --git a/examples/touch/main.qml b/examples/touch/main.qml
new file mode 100644
index 000000000..6a26b9d5d
--- /dev/null
+++ b/examples/touch/main.qml
@@ -0,0 +1,144 @@
+/****************************************************************************
+**
+** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/legal
+**
+** This file is part of the Qt Components project.
+**
+** $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.0
+import QtDesktop 1.0
+import "content"
+
+ApplicationWindow {
+    width: 800
+    height: 1280
+
+    Rectangle {
+        color: "#212126"
+        anchors.fill: parent
+    }
+
+    // Implements back key navigation
+    Keys.onReleased: {
+        if (event.key === Qt.Key_Back) {
+            if (pageStack.depth > 1) {
+                pageStack.pop();
+                event.accepted = true;
+            } else { Qt.quit(); }
+        }
+    }
+
+    toolBar: BorderImage {
+        border.bottom: 8
+        source: "images/toolbar.png"
+        width: parent.width
+        height: 100
+
+        Rectangle {
+            id: backButton
+            width: opacity ? 60 : 0
+            anchors.left: parent.left
+            anchors.leftMargin: 20
+            opacity: pageStack.depth > 1 ? 1 : 0
+            anchors.verticalCenter: parent.verticalCenter
+            antialiasing: true
+            height: 60
+            radius: 4
+            color: backmouse.pressed ? "#222" : "transparent"
+            Behavior on opacity { NumberAnimation{} }
+            Image {
+                anchors.verticalCenter: parent.verticalCenter
+                source: "images/navigation_previous_item.png"
+            }
+            MouseArea {
+                id: backmouse
+                anchors.fill: parent
+                anchors.margins: -10
+                onClicked: pageStack.pop()
+            }
+        }
+
+        Text {
+            font.pixelSize: 42
+            Behavior on x { NumberAnimation{ easing.type: Easing.OutCubic} }
+            x: backButton.x + backButton.width + 20
+            anchors.verticalCenter: parent.verticalCenter
+            color: "white"
+            text: "Widget Gallery"
+        }
+    }
+
+    ListModel {
+        id: pageModel
+        ListElement {
+            title: "Buttons"
+            page: "content/ButtonPage.qml"
+        }
+        ListElement {
+            title: "Sliders"
+            page: "content/SliderPage.qml"
+        }
+        ListElement {
+            title: "ProgressBar"
+            page: "content/ProgressBarPage.qml"
+        }
+        ListElement {
+            title: "Tabs"
+            page: "content/TabBarPage.qml"
+        }
+        ListElement {
+            title: "TextInput"
+            page: "content/TextInputPage.qml"
+        }
+    }
+
+    PageStack {
+        id: pageStack
+        anchors.fill: parent
+
+        initialPage: Page {
+            ListView {
+                model: pageModel
+                anchors.fill: parent
+                delegate: AndroidDelegate {
+                    text: title
+                    onClicked: pageStack.push(Qt.resolvedUrl(page))
+                }
+            }
+        }
+    }
+
+}
diff --git a/examples/touch/touch.qmlproject b/examples/touch/touch.qmlproject
new file mode 100644
index 000000000..e5a8bf02c
--- /dev/null
+++ b/examples/touch/touch.qmlproject
@@ -0,0 +1,16 @@
+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/src/qtdesktop/ApplicationWindow.qml b/src/qtdesktop/ApplicationWindow.qml
index ac0f22eb2..453edfa95 100644
--- a/src/qtdesktop/ApplicationWindow.qml
+++ b/src/qtdesktop/ApplicationWindow.qml
@@ -106,13 +106,6 @@ Window {
         }
     }
 
-    Row {
-        id: toolBarArea
-        anchors.top: menuBarArea.bottom
-        anchors.left: parent.left
-        anchors.right: parent.right
-    }
-
     Item {
         id: contentArea
         anchors.top: toolBarArea.bottom
@@ -121,6 +114,13 @@ Window {
         anchors.bottom: statusBarArea.top
     }
 
+    Row {
+        id: toolBarArea
+        anchors.top: menuBarArea.bottom
+        anchors.left: parent.left
+        anchors.right: parent.right
+    }
+
     Row {
         id: statusBarArea
         anchors.bottom: parent.bottom
diff --git a/src/qtdesktop/TextField.qml b/src/qtdesktop/TextField.qml
index 05a39494b..078bc2052 100644
--- a/src/qtdesktop/TextField.qml
+++ b/src/qtdesktop/TextField.qml
@@ -147,6 +147,7 @@ FocusScope {
         selectedTextColor: loader.item ? loader.item.selectedTextColor : "black"
 
         property Item styleItem: loader.item
+        font: styleItem ? styleItem.font : font
         anchors.leftMargin: styleItem ? styleItem.leftMargin : 0
         anchors.topMargin: styleItem ? styleItem.topMargin : 0
         anchors.rightMargin: styleItem ? styleItem.rightMargin : 0
diff --git a/src/styles/ButtonStyle.qml b/src/styles/ButtonStyle.qml
index 48b13a958..a51e9f66c 100644
--- a/src/styles/ButtonStyle.qml
+++ b/src/styles/ButtonStyle.qml
@@ -52,6 +52,7 @@ Item {
 
     property color backgroundColor: "lightGray"
     property color foregroundColor: "black"
+    property alias font: textitem.font
 
     property Component background: Rectangle {
         implicitWidth: 100
@@ -72,6 +73,7 @@ Item {
     }
 
     Text {
+        id: textitem
         anchors.centerIn: backgroundLoader
         renderType: Text.NativeRendering
         text: control.text
diff --git a/src/styles/Desktop/TextFieldStyle.qml b/src/styles/Desktop/TextFieldStyle.qml
index 1ef5c18e8..1db3e52c2 100644
--- a/src/styles/Desktop/TextFieldStyle.qml
+++ b/src/styles/Desktop/TextFieldStyle.qml
@@ -69,6 +69,7 @@ StyleItem {
     property color selectionColor: syspal.highlight
     property color selectedTextColor: syspal.highlightedText
 
+
     hint: control.styleHints
 
     Item {
diff --git a/src/styles/TextFieldStyle.qml b/src/styles/TextFieldStyle.qml
index 4cdeef5fe..086acc454 100644
--- a/src/styles/TextFieldStyle.qml
+++ b/src/styles/TextFieldStyle.qml
@@ -63,6 +63,7 @@ Item {
     property color placeholderTextColor: Qt.rgba(0, 0, 0, 0.5)
     property color selectionColor: syspal.highlight
     property color selectedTextColor: syspal.highlightedText
+    property font font
 
     SystemPalette {
         id: syspal
-- 
GitLab