From 4a08bd334b661d00a9fd908d054728ab9e9a5d8d Mon Sep 17 00:00:00 2001
From: Zeno Albisser <zeno.albisser@digia.com>
Date: Mon, 17 Jun 2013 12:59:07 +0200
Subject: [PATCH] Use QQuickControls for QtQuick browser ui.

---
 example/icons/go-next.png      | Bin 0 -> 930 bytes
 example/icons/go-previous.png  | Bin 0 -> 955 bytes
 example/icons/process-stop.png | Bin 0 -> 1272 bytes
 example/icons/view-refresh.png | Bin 0 -> 1364 bytes
 example/main.cpp               |   5 +-
 example/quickwindow.cpp        |   8 +--
 example/quickwindow.h          |   6 +-
 example/quickwindow.qml        |  98 ++++++++++-----------------------
 8 files changed, 38 insertions(+), 79 deletions(-)
 create mode 100644 example/icons/go-next.png
 create mode 100644 example/icons/go-previous.png
 create mode 100644 example/icons/process-stop.png
 create mode 100644 example/icons/view-refresh.png

diff --git a/example/icons/go-next.png b/example/icons/go-next.png
new file mode 100644
index 0000000000000000000000000000000000000000..6f3f65d33d303315f0d8d9dd03c7e7e2427d4950
GIT binary patch
literal 930
zcmV;T16}-yP)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00004b3#c}2nYxW
zd<bNS0000PbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$TG)Y83R5*>b
zm0M^XRTPH5HM8gBV(mpKDJa$_Z|#GH3N?w)f>s1UMXmZGQl%7pX-P>7f}&tiq(1aT
zP)ljdLx@@mDPl`Bh9;&enie%Q#!J+svBm_`ljO{0&t5*9IdzgY(T8-w&&-B3-`fA$
zi`k;8T#fLq3ibbj8=Hf!`X=+>l7rQ;d2QV-?>9CVb}uOyV8_ERRIj^v<E!`VHE(a*
zCjOFveLvul&D(1>t-Jr}^J`7#mgi;JV)-V&XlM@pz)^Qubt9p3w))KZP8v6Cty-~c
zRl~=9ZT*|}%9hiw>&TVBk{`E*J%R4u*)k_V)uAX(9bH4M2p)H=X<%%8)E(<;`P*81
z@8<{N{{IBOvg2J&{nVa86~&Rd6sHcSmeg5NwcJ*BHyV2!{p9dWDJ(v9>J8g5$L0J=
zsk213L}W|EX-H&4k~AVoLt+~ery;Q|@y+iixR{Rd<O4geS#j;^wuU`H)1qMO5=u#t
z$=NY36o(m~{*9^9pM<tZLP#nRPGX$I3|#18XyOYVyYHFW8|!X*xv|+CtZ>YHa50=@
zc;Z`>a*M<RKk)FK;0HbhQ@}Gm;shrtYNGN}5JYZR5S+MZ4m7CpFom)_BY3_AEY2yn
zuB>NG;dVYeab$LCdg4%TZMthga6bIN!w)=6m3OItX9Q0?*00)%Kf9c^j>EIlQ#1Qc
zA57l?;H7zB5ee#>%FD+$>_Y(0NEvPf-v}qi-lVpshC8o+i1CprJ$AfhX7ZQl+3(t2
zH&6>05s6eaF&WeV1%>gq+V-!$Z0APe-Os&PsP>n$@w!Jj_x-uF^Rtr^!@atFw9gFz
zHT*jWDk5oR$3Ecq9kA<xs!Y|D_xdK&>r&;el~2&q-4lO(_RF6KKCrtkj_?;y0348J
zvVd8%$N30LAs>C(5f2Uy_MAE5UP~ip7D;y%aK4(KDFy_}Bhr4nHU9O7(L-n7bFEo!
zk}1x<%d6Z9Rkb2Q1|nz80wzuLs~`JES_Y1~?yQi@K`QVBC;_3W>YRUtl<7g%+ko=a
zR2)dofzERo0g<ZOORR-1QxWkgpR}J-#ZCUOQoRD?A1x<`zw_bNGynhq07*qoM6N<$
Eg5-w0LI3~&

literal 0
HcmV?d00001

diff --git a/example/icons/go-previous.png b/example/icons/go-previous.png
new file mode 100644
index 0000000000000000000000000000000000000000..93be3d1ee6b90843d7df0f517733f63ce72f4611
GIT binary patch
literal 955
zcmV;s14R6ZP)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00004b3#c}2nYxW
zd<bNS0000PbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$TO-V#SR5*>b
zl}%_|RTze!@0@e*&7V^HBN&Y|1&xTHg2tGcEZQg$sloamid{(QrYma`p)R6`8xe$x
zE=)JAVs%lCB0?>;8x<m*Dkz9SlvvY<p*CsgWM=NU_j56Kk};-ZT=c-pIg5|yd%u@^
z?h#exN-T3lsDS%F#l8E30TB*_ZNC51sQN~=Yj)f>67IczQ|E_9Y~NZ8{U=yn5|bNt
zZ{FN-`>T5f542e0(zO_A*m+=BT65yYyKmi^zpwkzroe@3VKxTmpO<#Qo$9}PN9Ubg
z_Xgiie@@TlL5!nPUT}-K{lP!##V{MR`u1A(tAcYQ;T_gAofzD<^P1~6-C!rCJ_VE{
zO?Y9~Tg^rcf*`V-<mlM$_23<_I=J^ax4pHw?dZc>pKddeGBNcDMl99@d@*?#BMu`5
zYb=66M96P>ym1t{;b7mot2ey7qkmV+`Nb)IK6?gh0-Om*H6=|GtZ^8z_|#xB$4MHa
zD6$$jKjIFyZ|rzxApcm)<oR!yp8IJTs0o3jq_#puJc-7j;0THARd|hAd4rc78`?35
zk`Vh6WnUx~i=x;Nz++I16~t7%X{u-mis^-aMX{9rSIx;2=l=Zt&_^fVy>!!tZo00$
zhq5n{niALwE`qSx617;GS}jp)^&B)CQmI@XtfQKK{hHtR*X)JiW5*8{*M}YSbUs87
z1lYjfLPHRlDtrlQago7TL4k#H%e<v1L?i&Bi8uTQw>?#y8Bg9ja)0mkw!Y3Mr7-(3
zYAQUq<yo9_*ubEwq+UsUbw^<43@suOt7_~rr~|@G(GTw@-`$w!k>h^+o!nj9Hs){H
z=}ylcLsNMD&@1I~F^*P_E-*KL76XJLlGGgAOs=NizD)j@|COP{pFB8!alR|pGZbnf
z#AOW%WB!5iMHYZ^rc$=oSgzquXnvZ7!rRH-LgDnu&rXb&7mKAv<@GDAIZiV9I`<Vo
zd<iX#r7u>7ewn;fJhF#0jl@vQT*g_QU!iIgs_I1~i>lhOu8{-W_eYbl%HYh8>o&{o
zBxWuf-PgfmU=b*(s!IKhkt#g^qHK3{6G$e_R6k`ID61~NDss8UR75P*@7&g@Hcf4!
d1W0rh$lr11Sh~C<&aD6d002ovPDHLkV1hiw#cluq

literal 0
HcmV?d00001

diff --git a/example/icons/process-stop.png b/example/icons/process-stop.png
new file mode 100644
index 0000000000000000000000000000000000000000..b68290bf1ebf568d8ab080a4e3ec7d75048ec461
GIT binary patch
literal 1272
zcmV<U1PA+xP)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00006VoOIv00000
z008+zyMF)x010qNS#tmY3ljhU3ljkVnw%H_000McNliru)d~?8D*!_)NBaN(1cgaN
zK~y-)jg?zyR7V)ce{;@m_L6Mk4YjpuNLx(}7TjjV7!4McQVM~-M8pP^w%9@`wp5GJ
z2bIKnf%?#gLi-k>P(cu>t+olJDB6Oi7<19INt@fcyGh*L?Ahx%bEXfwuEs>^z{fny
z%x}K=F8>icV;qMifOy81NDJ6=Ej;zmN%%s+rvl_$>k2dh=Ow(;0_uN(Pr~WyhK7%}
zHZ{3*mkX3CnzC)MEUZ+DpWE9rgMEG9OW5-yd=~fwoT;v_|6tqBo$h#FAF1(iux+sI
zJXA`Ql(-iyV*Z*nTse0xGt}Gr-RJP`;~f17=vUQsb?<N6waXLl>mwZsAw=PBr5?>n
zVHpONVNg?F?}*0Z)vtxa%RAtQS>O}!_3A)i&-UhKPpqehbR<H|<3TEg%eH5P!w`b$
zk`f%T7-llbn)U0QQ?Xc0?Zm{=4*01EJ^|mZ_WPT+@80c+-o8yb5+Uk#BdV&%m?m~M
zTZAWsAmQ`jUAvZeIE*6}!%C%i#qW1U6N$C86B7$N;EDzy9FF(4H#d8tU0q~CA#zHQ
zwJa9w*um0$`$+kGObdabX&7Z?tZHp##ooP`LXcJpBNE}k;2>MKZ1HFw&nEyHfUfIk
zLXf_H9|}+RS{9)*XAnZL?7#t1<>eTqrM%qQinFwozYZP3ZJM|Mr4&XujIL>@LM|M|
zx>PEkc_Bb4Dr}qh)D*$fr&)3EATJ(2j;?8FN-=QwFa(46aygVzD5bEK0x640)*e;7
zDwfm3k}A*TU~-bF3m0&DJUG2xA{Q@Wjg1wdwryiSgv&?0<aiv6ZRb7L^7kcl9qD$n
zxUmsU2sGfi#zx||ZedA@>h4CGCbns!G!05h^3KijSjv1eNJ#=PJRV*;b_{1(8ULI*
zMc@AYXhKkP^e9u~<HV&T+0#Sv-aU-|e&p~lwrS1;KZGhN$w*0Z-aJ;dwV`{x{N2_@
zrmKtS*|YQ?IfB#WVq<$d8JCL`c@=UjUX1ejW`;sai8(lkn3^IL3}TrkY}!QP=1uNj
zx<u~!bxKD^DF+glFVn4QywKEytD*ucFG%Pv7h>tsnJvA|wym+@;ktDV4bEI7LT+LL
zXClFaa2Pc*f@fd=y8zIpr-|OVLoS)b6^)V`8Nsu1B~^g{JvVNcp~=bH9q^3~&;eKL
zQYke$Hnwry=FQHWVUP(1(T0Z5L!lznE|^nFa=pD|M@A^EtfVp!;7)I^`RCocf7tMP
zCs;+T=zyym(`h+6K3?yyuXpB>NwV>H5vJyt%PK2bSzF8Rot@eKv9Vumc(Vnvv(&8v
zuGM8S=4ddu$sY(fbD0d;bQ*LWrR$(+sDhPORk7Uf=h`p7WQJm~A8mNM1+1s(u@hMG
zF??3z^L_Z%h7Bdo`STHFW%=SSXtI(L<@M5e{=C^8kN@^19I_z-gn{&v;8I{Y@I0`r
z33j{+ZvaB&_X!0;<fEVjr~&A2hjYL<5Cr}O1_4vd@l|;NA5Z}-1Qq~`fO&-%89*F(
iP_QU44a6wK7vMjbmt^pwc?k0W0000<MNUMnLSTX!5m$Nu

literal 0
HcmV?d00001

diff --git a/example/icons/view-refresh.png b/example/icons/view-refresh.png
new file mode 100644
index 0000000000000000000000000000000000000000..cab4d02c756502f922bbff34df34c0056406bd96
GIT binary patch
literal 1364
zcmV-a1*`grP)<h;3K|Lk000e1NJLTq000&M000&U1^@s6#I$TX00004b3#c}2nYxW
zd<bNS0000PbVXQnQ*UN;cVTj60C#tHE@^ISb7Ns}WiD@WXPfRk8UO$U=1D|BR5*>b
zm1#^AXBfx-?>jR)yR%C<mRsZyYmuN9MW|>SkD4Z}F=^Tmf|{770@hEqO%szQ{n9is
zHEGgX6eKmafTT2OwXsKHJW8z!1VLK`LOl=`0dax7=XjrfU?CiS@JlE8XOfv`e)F4W
zo|%^s5&n;jKTA<rS&Q^6bsP3KXP3U)k^lhgX~rd$->y&;^&>EBHBBo`5EO|sKj&=J
z5_Cb3Xb}|nqocOcn7QVqeWz0dr@u@KTRZD39?SzX23GoBb3MSyUw(0^ZDmff>~gB$
zoI%$O1VRQLJess_^m+m#;{k~=9QJeN3zwvG=)Bz$Vg)gg)ls`=U><nmf##FhX>nzH
zUSF+63=0$fFk&<nnyNtJ0OJgxX#;;Sf=iwE!`J^F(n-LxsW5BVt^N^Xaw3>_?ZmD@
zc?Mck^<7DVOM82J@iOh}mUc1b4RX!_VG$97nd)|hN(wTZg)gK^L_o+OY+avgFUrrb
z_dk3R^J-BR>*^ggbs>p)FV8M3)z7(9XZ@K@nhF@qVOPSI5Z_;`t>7V!6wio%`?=P>
zA3pu2HQ3fOOioq8(0B+>0w&hyr!z(7uq*-D9-a>d!)pV>lgu3#<6WMedPCPuFCab#
zfSWZH-uC*6wktK|<%Vu;{QXK_`-vYrg7FTH%p?t$ZjC~bI4mJpWT7z$sG36^%FIZv
zjn(W8V7$*Fn|I;FwAEE~>4te|Dxga-4h2KwAqW6=g~PIlDMA(iFxz8Gh+v}2@nwv|
z{<E&Dk14`V#Vk#pS_m$xYFwqr(%I^_iqxcd4QYu^Y%WNKsz@*eF`Kmj>_|(`Ig88U
z%-%Ny0HAWkqWLbWYDi<mf3qyoj<&Q%NDzns!t`DUvguYp0CPT&;;N=G2Dlc{01&~)
zxY+*0=I(L%MjTJ80RV-dwx8NNN(7SU9FJ@GWQS~%IRFO6fUs`j<GR+!{gKJ{uOHvt
z9j%K@+t(>TyjEIJ7<R|#@!kJEEFBzuTt|e&d945uv)g1`xHSR>LTO$Sn$F*e42=4Y
zwjJNqu+UBx&J;-%$5e;!r^&ELn(+IpY_e?4oS!pp)0T!Qkdf#F1JK<+Mx3!##qTsP
zUG&@%p0g~mVbT}eef!?vhrU2Kn{nKoz45Fth%o?ba^f&J9>kEB<H&(6_NMba+s<9-
z?<uKn`bt>T0b&DOv1B6Yh(lH4dhQNwwkZ<1V>QD&5vpGVo|a|^hIHgFiABV;(0R{`
zR|+$w;{0^2<IeC0p2xnhXUxaOCxTAN#*pIHke8E;#5gBw{G}_bnR??QFlUV2e>8<d
zHJ2th1K+V}xoyk3EW0;g!XltBFHJ76QeBKq_s<Xn(-fHSN6`4|4Zmd=2QQx78=jRU
zA~43J^_2}qtkV|g@4C3d({bie?v~1(?j^a^tDjHH$j?ntGE-xj(_urz5HL&&lK~xF
zy&iG(=0iO=F><*3^uZbcVE|zw(r3W-b^98;e$VZ)-gBS*1HciDJ$>!YH7P5%l`C5O
zT5zU1RmBKKOo<2(5#OJqeXYj^t~PZ82t^YlqTmdet=@g?&6^GTF9WaxQ0GL6Mv|Ov
zB_X3AA?O|U21fh50QBfwN1{+4fCv%MqNRy3Ce4A(L<S&X`ZsSyV??6^Fp0>T%lQu}
WX<V9e+}~gT0000<MNUMnLSTZM<aw3=

literal 0
HcmV?d00001

diff --git a/example/main.cpp b/example/main.cpp
index 01850b879..129d8c6c1 100644
--- a/example/main.cpp
+++ b/example/main.cpp
@@ -56,12 +56,11 @@ int mainWidget(int argc, char **argv)
 
 int mainQuick(int argc, char **argv)
 {
-    QGuiApplication app(argc, argv);
+    QApplication app(argc, argv);
 
     QQuickWebContentsView::registerType();
 
-    QuickWindow window;
-    window.show();
+    ApplicationEngine appEngine;
 
     return app.exec();
 }
diff --git a/example/quickwindow.cpp b/example/quickwindow.cpp
index 5b0ed1d9b..018f1c937 100644
--- a/example/quickwindow.cpp
+++ b/example/quickwindow.cpp
@@ -62,10 +62,8 @@ public:
 
 #include "quickwindow.moc"
 
-QuickWindow::QuickWindow()
+ApplicationEngine::ApplicationEngine()
 {
-    engine()->rootContext()->setContextProperty("utils", new Utils(this));
-    setSource(QUrl("example/quickwindow.qml"));
-    setResizeMode(QQuickView::SizeRootObjectToView);
-    setTitle("QQuick Example");
+    rootContext()->setContextProperty("utils", new Utils(this));
+    load(QUrl("example/quickwindow.qml"));
 }
diff --git a/example/quickwindow.h b/example/quickwindow.h
index 7218d084e..3f1f944ca 100644
--- a/example/quickwindow.h
+++ b/example/quickwindow.h
@@ -42,14 +42,14 @@
 #ifndef QUICKWINDOW_H
 #define QUICKWINDOW_H
 
-#include <QQuickView>
+#include <QQmlApplicationEngine>
 
 class QWebContentsView;
 
-class QuickWindow : public QQuickView {
+class ApplicationEngine : public QQmlApplicationEngine {
     Q_OBJECT
 public:
-    QuickWindow();
+    ApplicationEngine();
 };
 
 #endif // QUICKWINDOW_H
diff --git a/example/quickwindow.qml b/example/quickwindow.qml
index 54b82d6c7..3fe0389bf 100644
--- a/example/quickwindow.qml
+++ b/example/quickwindow.qml
@@ -1,78 +1,43 @@
 import QtQuick 2.0
 import QtWebEngine 1.0
+import QtQuick.Controls 1.0
+import QtQuick.Layouts 1.0
 
-Item {
+ApplicationWindow {
     id: browserWindow
-    height: 480
-    width: 320
+    height: 600
+    width: 800
+    visible: true
 
-    Rectangle {
+    toolBar: ToolBar {
         id: navigationBar
-        color: "grey"
-        anchors.top: parent.top
-        anchors.left: parent.left
-        anchors.right: parent.right
-        height: 26
-
-        Rectangle {
-            id: backButton
-            color: "red"
-            anchors.top: parent.top
-            anchors.bottom: parent.bottom
-            anchors.left: parent.left
-            width: height
+        RowLayout {
+            anchors.fill: parent
 
-            MouseArea {
-                anchors.fill: parent
-                onClicked: {
-                    webContentsView.goBack()
-                }
+            ToolButton {
+                id: backButton
+                iconName: "go-previous"
+                iconSource: "icons/go-previous.png"
+                onClicked: webContentsView.goBack()
             }
-        }
-        Rectangle {
-            id: forwardButton
-            color: "green"
-            anchors.top: parent.top
-            anchors.bottom: parent.bottom
-            anchors.left: backButton.right
-            width: height
-
-            MouseArea {
-                anchors.fill: parent
-                onClicked: {
-                    webContentsView.goForward()
-                }
+            ToolButton {
+                id: forwardButton
+                iconName: "go-next"
+                iconSource: "icons/go-next.png"
+                onClicked: webContentsView.goForward()
             }
-        }
-        Rectangle {
-            id: reloadButton
-            color: "blue"
-            anchors.top: parent.top
-            anchors.bottom: parent.bottom
-            anchors.left: forwardButton.right
-            width: height
-
-            MouseArea {
-                anchors.fill: parent
-                onClicked: {
-                    webContentsView.reload()
-                }
+            ToolButton {
+                id: reloadButton
+                iconName: "view-refresh"
+                iconSource: "icons/view-refresh.png"
+                onClicked: webContentsView.reload()
             }
-        }
-        TextInput {
-            id: addressBar
-            focus: true
-            anchors.top: parent.top
-            anchors.bottom: parent.bottom
-            anchors.left: reloadButton.right
-            anchors.right: parent.right
+            TextField {
+                id: addressBar
+                focus: true
+                Layout.fillWidth: true
 
-            cursorVisible: true
-            persistentSelection: true
-            selectByMouse: true
-
-            onAccepted: {
-                webContentsView.url = utils.fromUserInput(text)
+                onAccepted: webContentsView.url = utils.fromUserInput(text)
             }
         }
     }
@@ -80,10 +45,7 @@ Item {
     WebContentsView {
         id: webContentsView
         focus: true
-        anchors.top: navigationBar.bottom
-        anchors.bottom: parent.bottom
-        anchors.left: parent.left
-        anchors.right: parent.right
+        anchors.fill: parent
         url: "http://qt-project.org/"
 
         Binding {
-- 
GitLab