cleanup
[pyside-example-qml-signalslot:qml-signalslot.git] / webviews-statemachine.qml
1 import Qt 4.7
2 import org.webkit 1.0
3
4 Rectangle {
5     id: rect
6     width: 600
7     height: 400
8
9     // button calling function f from webView2
10     signal buttonPressed(string f)
11     
12     Rectangle {
13         x: 10
14         y: 0
15         Text {
16             font.pointSize: 15
17             color: "black"
18             text: "Here are two separate WebViews"
19         }
20     }
21
22     // the html contents change
23     Rectangle {
24         border.width: 2
25         border.color: "green"
26         width: 370
27         height: parent.height-30
28         x: 10
29         y: 20
30         WebView {
31             id: webView1
32             width: parent.width
33             height: parent.height
34             html: "press a button"
35         }
36     }
37
38     // control buttons, content is static
39     Rectangle {
40         border.width: 2
41         border.color: "blue"
42         width: parent.width * 1/3
43         height: parent.height-30
44         x: parent.width - width - 10
45         y: 20
46
47         WebView {
48             id: webView2
49             width: parent.width
50             height: parent.height
51             
52             // bind "window.qml" object, so the page can call a QtSignal by JavaScript
53             javaScriptWindowObjects: QtObject {
54                 WebView.windowObjectName: "qml"
55                 
56                 function qmlSlot() {
57                     console.log("QML: slot");
58                 }
59                 
60                 function buttonPress(txt) {
61                     console.log("QML: button pressed!");
62                     buttonPressed(txt);
63                 }
64             }
65             html: controlsHtml
66         }
67     }
68
69     function setUrl(url) {
70         console.log('QML: opening url '+url)
71         webView1.url = url
72     }
73     
74     function setButtonSelection(id) {
75         console.log('QML: select button '+id)
76         console.log(webView2)
77         // XXX: how is it possible to inject JavaScript into webView2?
78         // in plain Qt and QWebView, it can be achieved by something like:
79         // QWebView.evaluateJavaScript(view.page().mainFrame(), "alert('hooray');")
80         // the objective here is to set the css class of the active button to "selected".
81         //WebView.evaluateJavaScript(webView2,"qmlSlot();")
82     }
83
84 }