change QJson* to QVariant* to support more types
[codereview/qmlplugins/mongodb.git] / examples / examples.qml
1 /* Copyright (c) 2012 Silk Project.
2  * All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions are met:
6  *     * Redistributions of source code must retain the above copyright
7  *       notice, this list of conditions and the following disclaimer.
8  *     * Redistributions in binary form must reproduce the above copyright
9  *       notice, this list of conditions and the following disclaimer in the
10  *       documentation and/or other materials provided with the distribution.
11  *     * Neither the name of the Silk nor the
12  *       names of its contributors may be used to endorse or promote products
13  *       derived from this software without specific prior written permission.
14  *
15  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18  * DISCLAIMED. IN NO EVENT SHALL SILK BE LIABLE FOR ANY
19  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25  */
26
27 import QtQuick 2.0
28 import me.qtquick.MongoDB 0.1
29
30 Rectangle {
31     id: root
32     width: 360
33     height: 360
34
35     Database {
36         id: db
37         host: '127.0.0.1'
38         port: 27017
39         name: 'test'
40
41         property Collection test: Collection { name: 'test' }
42     }
43
44     TextInput {
45         id: text
46         anchors.left: parent.left
47         anchors.right: parent.right
48         anchors.top: parent.top
49
50         Keys.onReturnPressed: {
51             db.test.insert(JSON.parse(text.text))
52             text.text = ''
53         }
54
55         Text {
56             id: placeholder
57             text: qsTr('enter {"key": "value"} here then press return key')
58             font: parent.font
59             color: Qt.lighter(parent.color)
60             opacity: 0.0
61
62             states: State {
63                 when: text.text.length === 0 && !text.focus
64                 PropertyChanges {
65                     target: placeholder
66                     opacity: 0.75
67                 }
68             }
69
70             transitions: Transition {
71                 NumberAnimation { property: 'opacity' }
72             }
73         }
74     }
75
76     ListView {
77         anchors.top: text.bottom
78         anchors.left: parent.left
79         anchors.right: parent.right
80         anchors.bottom: parent.bottom
81         clip: true
82
83 //        model: db.test.find({x: {$exists: 1}, j: {$exists: 1}}).skip(5).limit(5).sort({j: -1})
84         model: db.test.find()
85
86         delegate: Text {
87             text: JSON.stringify(model.modelData)
88         }
89     }
90 }