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
110
111
112
113
114
115
116
|
import Qt 4.6
Item {
id: contactDetails
anchors.fill: parent
property var contactId: ""
property var label: ""
property var phone: ""
property var email: ""
onLabelChanged: { labelField.value = label }
onEmailChanged: { emailField.value = email }
onPhoneChanged: { phoneField.value = phone }
resources: [
SqlQuery {
id: updateContactQuery
connection: contactDatabase
query: "UPDATE contacts SET label = :l, email = :e, phone = :p WHERE recid = :r"
bindings: [
SqlBind {
name: ":r"
value: contactId
},
SqlBind {
name: ":l"
value: labelField.value
},
SqlBind {
name: ":e"
value: emailField.value
},
SqlBind {
name: ":p"
value: phoneField.value
}
]
},
SqlQuery {
id: insertContactQuery
connection: contactDatabase
query: "INSERT INTO contacts (label, email, phone) VALUES(:l, :e, :p)"
bindings: [
SqlBind {
name: ":l"
value: labelField.value
},
SqlBind {
name: ":e"
value: emailField.value
},
SqlBind {
name: ":p"
value: phoneField.value
}
]
},
SqlQuery {
id: removeContactQuery
connection: contactDatabase
query: "DELETE FROM contacts WHERE recid = :r"
bindings: SqlBind {
name: ":r"
value: contactId
}
}
]
function refresh() {
labelField.value = label;
emailField.value = email;
phoneField.value = phone;
}
function update() {
updateContactQuery.exec();
}
function insert() {
insertContactQuery.exec();
}
function remove() {
removeContactQuery.exec();
}
Column {
id: layout
width: childrenRect.width
height: childrenRect.height
anchors.centerIn: parent
spacing: 5
ContactField {
id: labelField
anchors.left: layout.left
anchors.leftMargin: 5
anchors.right: layout.right
anchors.rightMargin: 5
label: "Name"
}
ContactField {
id: phoneField
anchors.left: layout.left
anchors.leftMargin: 5
anchors.right: layout.right
anchors.rightMargin: 5
icon: "pics/phone.png"
label: "Phone"
}
ContactField {
id: emailField
anchors.left: layout.left
anchors.leftMargin: 5
anchors.right: layout.right
anchors.rightMargin: 5
icon: "pics/email.png"
label: "Email"
}
}
}
|