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 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 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