File: u1db-qt-example-2b.qml

package info (click to toggle)
u1db-qt 0.1.8-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 688 kB
  • sloc: cpp: 2,089; python: 60; sql: 40; makefile: 19; sh: 14; xml: 14
file content (109 lines) | stat: -rw-r--r-- 3,439 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
/*
 * Copyright (C) 2013 Canonical, Ltd.
 *
 * Authors:
 *  Kevin Wright <kevin.wright@canonical.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation; version 3.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
import QtQuick 2.0
import U1db 1.0 as U1db
import Lomiri.Components 0.1


/*!

This example demonstrates how to create and query one level of sub-fields in a document.

*/

MainView {

    id: u1dbView
    width: units.gu(45)
    height: units.gu(80)

    U1db.Database {
        id: aDatabase
        path: Qt.resolvedUrl("aDatabase2b")
    }
    
    /*!
    
    This snippet demonstrates how to create content that includes nested fields. The main field is 'hello', while the sub-field for each entry is 'value'. Later in the example it will be shown how to access each of these in the delegate of a ListView.
    
    U1db.Document {
        id: aDocument
        database: aDatabase
        docId: 'hello'
        create: true
        defaults: { "hello": [{"value":"99 Hello Worlds on the wall...!"},{"value":"98 Hello Worlds on the wall...!"},{"value":"97 Hello Worlds on the wall...!"},{"value":"...and so on..."}] }
        }
    
    */

    U1db.Document {
        id: aDocument
        database: aDatabase
        docId: 'hello'
        create: true
        defaults: { "hello": [{"value":"99 Hello Worlds on the wall...!"},{"value":"98 Hello Worlds on the wall...!"},{"value":"97 Hello Worlds on the wall...!"},{"value":"...and so on..."}] }
        }
        
    Tabs {
        id: tabs
        anchors.fill: parent

        Tab {
            title: i18n.tr("Hello U1Db!")

            page: Page {
            
               id: helloPage

               ListView {
               	width: units.gu(45)
               	height: units.gu(80)
               	anchors.fill: parent
               	model: aDocument.contents.hello
               	
               	/*!
               	
               	Determining the current record is easy. All that is required is to access it using the delegate's own 'index' value, as shown here:
               	
               	delegate: Text {
               		height: 30
               		text: aDocument.contents.hello[index].value 
               	}
               	
               	
               	Remember that when the entries were created the sub-field was 'value'. So where index = 0, 'aDocument.contents.hello[0].value' will produce '99 Hello Worlds on the wall...!'. Each entry in the document will in turn create its own delegate with a new index number, which can then be used to extract the 'value' (or whatever other sub-field has been created).         
               	
               	*/
             
               	delegate: Text {
               		height: 30
               		text: aDocument.contents.hello[index].value        
               	}
               
               }
               
            }
               
        }
        

    }
}