Merge with master
[platform/core/pim/contacts-service.git] / common / ctsvc_view.c
1 /*
2  * Contacts Service
3  *
4  * Copyright (c) 2010 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Contact: Dohyung Jin <dh.jin@samsung.com>
7  *                 Jongwon Lee <gogosing.lee@samsung.com>
8  *                 Donghee Ye <donghee.ye@samsung.com>
9  *
10  * Licensed under the Apache License, Version 2.0 (the "License");
11  * you may not use this file except in compliance with the License.
12  * You may obtain a copy of the License at
13  *
14  * http://www.apache.org/licenses/LICENSE-2.0
15  *
16  * Unless required by applicable law or agreed to in writing, software
17  * distributed under the License is distributed on an "AS IS" BASIS,
18  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
19  * See the License for the specific language governing permissions and
20  * limitations under the License.
21  *
22  */
23
24 #include "contacts.h"
25 #include "ctsvc_internal.h"
26 #include "ctsvc_view.h"
27
28 API const _contacts_address_book_property_ids _contacts_address_book = {
29         ._uri           = CTSVC_VIEW_URI_ADDRESSBOOK,
30         .id                     = CTSVC_PROPERTY_ADDRESSBOOK_ID,
31         .account_id     = CTSVC_PROPERTY_ADDRESSBOOK_ACCOUNT_ID,
32         .name           = CTSVC_PROPERTY_ADDRESSBOOK_NAME,
33         .mode           = CTSVC_PROPERTY_ADDRESSBOOK_MODE
34 };
35
36 API const _contacts_group_property_ids _contacts_group = {
37         ._uri                   = CTSVC_VIEW_URI_GROUP,
38         .id                             = CTSVC_PROPERTY_GROUP_ID,
39         .address_book_id        = CTSVC_PROPERTY_GROUP_ADDRESSBOOK_ID,
40         .name                   = CTSVC_PROPERTY_GROUP_NAME,
41         .ringtone_path  = CTSVC_PROPERTY_GROUP_RINGTONE,
42         .image_path             = CTSVC_PROPERTY_GROUP_IMAGE,
43         .vibration              = CTSVC_PROPERTY_GROUP_VIBRATION,
44         .system_id              = CTSVC_PROPERTY_GROUP_SYSTEM_ID,
45         .is_read_only   = CTSVC_PROPERTY_GROUP_IS_READ_ONLY
46 };
47
48 API const _contacts_person_property_ids _contacts_person = {
49         ._uri                                   = CTSVC_VIEW_URI_PERSON,
50         .id                                             = CTSVC_PROPERTY_PERSON_ID,
51         .display_name                   = CTSVC_PROPERTY_PERSON_DISPLAY_NAME,
52         .display_name_index             = CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,
53         .display_contact_id             = CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,
54         .ringtone_path                  = CTSVC_PROPERTY_PERSON_RINGTONE,
55         .image_thumbnail_path   = CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,
56         .vibration                              = CTSVC_PROPERTY_PERSON_VIBRATION,
57         .status                                 = CTSVC_PROPERTY_PERSON_STATUS,
58         .is_favorite                    = CTSVC_PROPERTY_PERSON_IS_FAVORITE,
59         .favorite_priority              = CTSVC_PROPERTY_PERSON_FAVORITE_PRIORITY,
60         .link_count                             = CTSVC_PROPERTY_PERSON_LINK_COUNT,
61         .account_id1                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID1,
62         .account_id2                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID2,
63         .account_id3                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID3,
64         .addressbook_ids                = CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS,
65         .has_phonenumber                = CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,
66         .has_email                              = CTSVC_PROPERTY_PERSON_HAS_EMAIL,
67 };
68
69 API const _contacts_contact_property_ids _contacts_contact = {
70         ._uri                                   = CTSVC_VIEW_URI_CONTACT,
71         .id                                             = CTSVC_PROPERTY_CONTACT_ID,
72         .display_name                   = CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,
73         .display_source_type    = CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,
74         .address_book_id                = CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,
75         .ringtone_path                  = CTSVC_PROPERTY_CONTACT_RINGTONE,
76         .image_thumbnail_path   = CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,
77         .is_favorite                    = CTSVC_PROPERTY_CONTACT_IS_FAVORITE,
78         .has_phonenumber                = CTSVC_PROPERTY_CONTACT_HAS_PHONENUMBER,
79         .has_email                              = CTSVC_PROPERTY_CONTACT_HAS_EMAIL,
80         .person_id                              = CTSVC_PROPERTY_CONTACT_PERSON_ID,
81         .uid                                    = CTSVC_PROPERTY_CONTACT_UID,
82         .vibration                              = CTSVC_PROPERTY_CONTACT_VIBRATION,
83         .changed_time                   = CTSVC_PROPERTY_CONTACT_CHANGED_TIME,
84         .name                                   = CTSVC_PROPERTY_CONTACT_NAME,
85         .company                                = CTSVC_PROPERTY_CONTACT_COMPANY,
86         .note                                   = CTSVC_PROPERTY_CONTACT_NOTE,
87         .number                                 = CTSVC_PROPERTY_CONTACT_NUMBER,
88         .email                                  = CTSVC_PROPERTY_CONTACT_EMAIL,
89         .event                                  = CTSVC_PROPERTY_CONTACT_EVENT,
90         .messenger                              = CTSVC_PROPERTY_CONTACT_MESSENGER,
91         .address                                = CTSVC_PROPERTY_CONTACT_ADDRESS,
92         .url                                    = CTSVC_PROPERTY_CONTACT_URL,
93         .nickname                               = CTSVC_PROPERTY_CONTACT_NICKNAME,
94         .profile                                = CTSVC_PROPERTY_CONTACT_PROFILE,
95         .relationship                   = CTSVC_PROPERTY_CONTACT_RELATIONSHIP,
96         .image                                  = CTSVC_PROPERTY_CONTACT_IMAGE,
97         .group_relation                 = CTSVC_PROPERTY_CONTACT_GROUP_RELATION,
98         .extension                              = CTSVC_PROPERTY_CONTACT_EXTENSION,
99 };
100
101
102 API const _contacts_my_profile_property_ids _contacts_my_profile = {
103         ._uri                                   = CTSVC_VIEW_URI_MY_PROFILE,
104         .id                                             = CTSVC_PROPERTY_MY_PROFILE_ID,
105         .display_name                   = CTSVC_PROPERTY_MY_PROFILE_DISPLAY_NAME,
106         .address_book_id                = CTSVC_PROPERTY_MY_PROFILE_ADDRESSBOOK_ID,
107         .image_thumbnail_path   = CTSVC_PROPERTY_MY_PROFILE_IMAGE_THUMBNAIL,
108         .uid                                    = CTSVC_PROPERTY_MY_PROFILE_UID,
109         .changed_time                   = CTSVC_PROPERTY_MY_PROFILE_CHANGED_TIME,
110         .name                                   = CTSVC_PROPERTY_MY_PROFILE_NAME,
111         .company                                = CTSVC_PROPERTY_MY_PROFILE_COMPANY,
112         .note                                   = CTSVC_PROPERTY_MY_PROFILE_NOTE,
113         .number                                 = CTSVC_PROPERTY_MY_PROFILE_NUMBER,
114         .email                                  = CTSVC_PROPERTY_MY_PROFILE_EMAIL,
115         .event                                  = CTSVC_PROPERTY_MY_PROFILE_EVENT,
116         .messenger                              = CTSVC_PROPERTY_MY_PROFILE_MESSENGER,
117         .address                                = CTSVC_PROPERTY_MY_PROFILE_ADDRESS,
118         .url                                    = CTSVC_PROPERTY_MY_PROFILE_URL,
119         .nickname                               = CTSVC_PROPERTY_MY_PROFILE_NICKNAME,
120         .profile                                = CTSVC_PROPERTY_MY_PROFILE_PROFILE,
121         .relationship                   = CTSVC_PROPERTY_MY_PROFILE_RELATIONSHIP,
122         .image                                  = CTSVC_PROPERTY_MY_PROFILE_IMAGE,
123         .extension                              = CTSVC_PROPERTY_MY_PROFILE_EXTENSION,
124 };
125
126 API const _contacts_simple_contact_property_ids _contacts_simple_contact = {
127         ._uri                                   = CTSVC_VIEW_URI_SIMPLE_CONTACT,
128         .id                                             = CTSVC_PROPERTY_CONTACT_ID,
129         .display_name                   = CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,
130         .display_source_type    = CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,
131         .address_book_id                = CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,
132         .person_id                              = CTSVC_PROPERTY_CONTACT_PERSON_ID,
133         .ringtone_path                  = CTSVC_PROPERTY_CONTACT_RINGTONE,
134         .image_thumbnail_path   = CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,
135         .is_favorite                    = CTSVC_PROPERTY_CONTACT_IS_FAVORITE,
136         .has_phonenumber                = CTSVC_PROPERTY_CONTACT_HAS_PHONENUMBER,
137         .has_email                              = CTSVC_PROPERTY_CONTACT_HAS_EMAIL,
138         .uid                                    = CTSVC_PROPERTY_CONTACT_UID,
139         .vibration                              = CTSVC_PROPERTY_CONTACT_VIBRATION,
140         .changed_time                   = CTSVC_PROPERTY_CONTACT_CHANGED_TIME,
141 };
142
143 API const _contacts_name_property_ids _contacts_name = {
144         ._uri                   = CTSVC_VIEW_URI_NAME,
145         .id                             = CTSVC_PROPERTY_NAME_ID,
146         .contact_id             = CTSVC_PROPERTY_NAME_CONTACT_ID,
147         .first                  = CTSVC_PROPERTY_NAME_FIRST,
148         .last                   = CTSVC_PROPERTY_NAME_LAST,
149         .addition               = CTSVC_PROPERTY_NAME_ADDITION,
150         .suffix                 = CTSVC_PROPERTY_NAME_SUFFIX,
151         .prefix                 = CTSVC_PROPERTY_NAME_PREFIX,
152         .phonetic_first = CTSVC_PROPERTY_NAME_PHONETIC_FIRST,
153         .phonetic_middle= CTSVC_PROPERTY_NAME_PHONETIC_MIDDLE,
154         .phonetic_last  = CTSVC_PROPERTY_NAME_PHONETIC_LAST
155 };
156
157 API const _contacts_number_property_ids _contacts_number = {
158         ._uri           = CTSVC_VIEW_URI_NUMBER,
159         .id                     = CTSVC_PROPERTY_NUMBER_ID,
160         .contact_id     = CTSVC_PROPERTY_NUMBER_CONTACT_ID,
161         .type           = CTSVC_PROPERTY_NUMBER_TYPE,
162         .label          = CTSVC_PROPERTY_NUMBER_LABEL,
163         .is_default     = CTSVC_PROPERTY_NUMBER_IS_DEFAULT,
164         .number         = CTSVC_PROPERTY_NUMBER_NUMBER
165 };
166
167 API const _contacts_email_property_ids _contacts_email = {
168         ._uri           = CTSVC_VIEW_URI_EMAIL,
169         .id                     = CTSVC_PROPERTY_EMAIL_ID,
170         .contact_id     = CTSVC_PROPERTY_EMAIL_CONTACT_ID,
171         .type           = CTSVC_PROPERTY_EMAIL_TYPE,
172         .label          = CTSVC_PROPERTY_EMAIL_LABEL,
173         .is_default     = CTSVC_PROPERTY_EMAIL_IS_DEFAULT,
174         .email          = CTSVC_PROPERTY_EMAIL_EMAIL
175 };
176
177 API const _contacts_address_property_ids _contacts_address = {
178         ._uri                   = CTSVC_VIEW_URI_ADDRESS,
179         .id                             = CTSVC_PROPERTY_ADDRESS_ID,
180         .contact_id             = CTSVC_PROPERTY_ADDRESS_CONTACT_ID,
181         .type                   = CTSVC_PROPERTY_ADDRESS_TYPE,
182         .label                  = CTSVC_PROPERTY_ADDRESS_LABEL,
183         .postbox                = CTSVC_PROPERTY_ADDRESS_POSTBOX,
184         .postal_code    = CTSVC_PROPERTY_ADDRESS_POSTAL_CODE,
185         .region                 = CTSVC_PROPERTY_ADDRESS_REGION,
186         .locality               = CTSVC_PROPERTY_ADDRESS_LOCALITY,
187         .street                 = CTSVC_PROPERTY_ADDRESS_STREET,
188         .country                = CTSVC_PROPERTY_ADDRESS_COUNTRY,
189         .extended               = CTSVC_PROPERTY_ADDRESS_EXTENDED,
190         .is_default             = CTSVC_PROPERTY_ADDRESS_IS_DEFAULT
191 };
192
193 API const _contacts_url_property_ids _contacts_url = {
194         ._uri           = CTSVC_VIEW_URI_URL,
195         .id                     = CTSVC_PROPERTY_URL_ID,
196         .contact_id     = CTSVC_PROPERTY_URL_CONTACT_ID,
197         .type           = CTSVC_PROPERTY_URL_TYPE,
198         .label          = CTSVC_PROPERTY_URL_LABEL,
199         .url            = CTSVC_PROPERTY_URL_URL
200 };
201
202 API const _contacts_event_property_ids _contacts_event = {
203         ._uri           = CTSVC_VIEW_URI_EVENT,
204         .id                     = CTSVC_PROPERTY_EVENT_ID,
205         .contact_id     = CTSVC_PROPERTY_EVENT_CONTACT_ID,
206         .type           = CTSVC_PROPERTY_EVENT_TYPE,
207         .label          = CTSVC_PROPERTY_EVENT_LABEL,
208         .date           = CTSVC_PROPERTY_EVENT_DATE,
209         .is_lunar       = CTSVC_PROPERTY_EVENT_IS_LUNAR,
210         .lunar_date     = CTSVC_PROPERTY_EVENT_LUNAR_DATE
211 };
212
213 API const _contacts_company_property_ids _contacts_company = {
214         ._uri                   = CTSVC_VIEW_URI_COMPANY,
215         .id                             = CTSVC_PROPERTY_COMPANY_ID,
216         .contact_id             = CTSVC_PROPERTY_COMPANY_CONTACT_ID,
217         .type                   = CTSVC_PROPERTY_COMPANY_TYPE,
218         .label                  = CTSVC_PROPERTY_COMPANY_LABEL,
219         .name                   = CTSVC_PROPERTY_COMPANY_NAME,
220         .department             = CTSVC_PROPERTY_COMPANY_DEPARTMENT,
221         .job_title              = CTSVC_PROPERTY_COMPANY_JOB_TITLE,
222         .assistant_name = CTSVC_PROPERTY_COMPANY_ASSISTANT_NAME,
223         .role                   = CTSVC_PROPERTY_COMPANY_ROLE,
224         .logo                   = CTSVC_PROPERTY_COMPANY_LOGO,
225         .location               = CTSVC_PROPERTY_COMPANY_LOCATION,
226         .description    = CTSVC_PROPERTY_COMPANY_DESCRIPTION,
227         .phonetic_name  = CTSVC_PROPERTY_COMPANY_PHONETIC_NAME,
228 };
229
230 API const _contacts_nickname_property_ids _contacts_nickname = {
231         ._uri           = CTSVC_VIEW_URI_NICKNAME,
232         .id                     = CTSVC_PROPERTY_NICKNAME_ID,
233         .contact_id     = CTSVC_PROPERTY_NICKNAME_CONTACT_ID,
234         .name           = CTSVC_PROPERTY_NICKNAME_NAME,
235 };
236
237 API const _contacts_note_property_ids _contacts_note = {
238         ._uri           = CTSVC_VIEW_URI_NOTE,
239         .id                     = CTSVC_PROPERTY_NOTE_ID,
240         .contact_id     = CTSVC_PROPERTY_NOTE_CONTACT_ID,
241         .note           = CTSVC_PROPERTY_NOTE_NOTE
242 };
243
244 API const _contacts_profile_property_ids _contacts_profile = {
245         ._uri           = CTSVC_VIEW_URI_PROFILE,
246         .id                     = CTSVC_PROPERTY_PROFILE_ID,
247         .type           = CTSVC_PROPERTY_PROFILE_TYPE,
248         .label          = CTSVC_PROPERTY_PROFILE_LABEL,
249         .uid            = CTSVC_PROPERTY_PROFILE_UID,
250         .text           = CTSVC_PROPERTY_PROFILE_TEXT,
251         .order          = CTSVC_PROPERTY_PROFILE_ORDER,
252         .appsvc_operation       = CTSVC_PROPERTY_PROFILE_APPSVC_OPERATION,
253         .data1          = CTSVC_PROPERTY_PROFILE_DATA1,
254         .data2          = CTSVC_PROPERTY_PROFILE_DATA2,
255         .data3          = CTSVC_PROPERTY_PROFILE_DATA3,
256         .data4          = CTSVC_PROPERTY_PROFILE_DATA4,
257         .contact_id     = CTSVC_PROPERTY_PROFILE_CONTACT_ID
258 };
259
260 API const _contacts_group_relation_property_ids _contacts_group_relation = {
261         ._uri           = CTSVC_VIEW_URI_GROUP_RELATION,
262         .id                     = CTSVC_PROPERTY_GROUP_RELATION_ID,
263         .group_id       = CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID,
264         .contact_id     = CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID,
265         .name           = CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME,
266 };
267
268 API const _contacts_relationship_property_ids _contacts_relationship = {
269         ._uri           = CTSVC_VIEW_URI_RELATIONSHIP,
270         .id                     = CTSVC_PROPERTY_RELATIONSHIP_ID,
271         .contact_id     = CTSVC_PROPERTY_RELATIONSHIP_CONTACT_ID,
272         .type           = CTSVC_PROPERTY_RELATIONSHIP_TYPE,
273         .label          = CTSVC_PROPERTY_RELATIONSHIP_LABEL,
274         .name           = CTSVC_PROPERTY_RELATIONSHIP_NAME,
275 };
276
277 API const _contacts_image_property_ids _contacts_image = {
278         ._uri           = CTSVC_VIEW_URI_IMAGE,
279         .id                     = CTSVC_PROPERTY_IMAGE_ID,
280         .contact_id     = CTSVC_PROPERTY_IMAGE_CONTACT_ID,
281         .type           = CTSVC_PROPERTY_IMAGE_TYPE,
282         .label          = CTSVC_PROPERTY_IMAGE_LABEL,
283         .path           = CTSVC_PROPERTY_IMAGE_PATH,
284         .is_default = CTSVC_PROPERTY_IMAGE_IS_DEFAULT,
285 };
286
287 API const _contacts_messenger_property_ids _contacts_messenger = {
288         ._uri           = CTSVC_VIEW_URI_MESSENGER,
289         .id                     = CTSVC_PROPERTY_MESSENGER_ID,
290         .contact_id     = CTSVC_PROPERTY_MESSENGER_CONTACT_ID,
291         .type           = CTSVC_PROPERTY_MESSENGER_TYPE,
292         .label          = CTSVC_PROPERTY_MESSENGER_LABEL,
293         .im_id          = CTSVC_PROPERTY_MESSENGER_IM_ID,
294 };
295
296 API const _contacts_sdn_property_ids _contacts_sdn = {
297         ._uri   = CTSVC_VIEW_URI_SDN,
298         .id             = CTSVC_PROPERTY_SDN_ID,
299         .name   = CTSVC_PROPERTY_SDN_NAME,
300         .number = CTSVC_PROPERTY_SDN_NUMBER,
301 };
302
303 API const _contacts_speeddial_property_ids _contacts_speeddial = {
304         ._uri                                   = CTSVC_VIEW_URI_SPEEDDIAL,
305         .speeddial_number               = CTSVC_PROPERTY_SPEEDDIAL_DIAL_NUMBER,
306         .number_id                              = CTSVC_PROPERTY_SPEEDDIAL_NUMBER_ID,
307         .number                                 = CTSVC_PROPERTY_SPEEDDIAL_NUMBER,
308         .number_label                   = CTSVC_PROPERTY_SPEEDDIAL_NUMBER_LABEL,
309         .number_type                    = CTSVC_PROPERTY_SPEEDDIAL_NUMBER_TYPE,
310         .person_id                              = CTSVC_PROPERTY_SPEEDDIAL_PERSON_ID,
311         .display_name                   = CTSVC_PROPERTY_SPEEDDIAL_DISPLAY_NAME,
312         .image_thumbnail_path   = CTSVC_PROPERTY_SPEEDDIAL_IMAGE_THUMBNAIL,
313 };
314
315 API const _contacts_contact_updated_info_property_ids _contacts_contact_updated_info = {
316         ._uri                   = CTSVC_VIEW_URI_CONTACTS_UPDATED_INFO,
317         .contact_id             = CTSVC_PROPERTY_UPDATE_INFO_ID,
318         .address_book_id        = CTSVC_PROPERTY_UPDATE_INFO_ADDRESSBOOK_ID,
319         .type                   = CTSVC_PROPERTY_UPDATE_INFO_TYPE,
320         .version                = CTSVC_PROPERTY_UPDATE_INFO_VERSION,
321         .image_changed  = CTSVC_PROPERTY_UPDATE_INFO_IMAGE_CHANGED,
322 };
323
324 API const _contacts_my_profile_updated_info_property_ids _contacts_my_profile_updated_info = {
325         ._uri                   = CTSVC_VIEW_URI_MY_PROFILE_UPDATED_INFO,
326         .address_book_id        = CTSVC_PROPERTY_UPDATE_INFO_ADDRESSBOOK_ID,
327         .last_changed_type      = CTSVC_PROPERTY_UPDATE_INFO_LAST_CHANGED_TYPE,
328         .version                = CTSVC_PROPERTY_UPDATE_INFO_VERSION,
329 };
330
331 API const _contacts_group_updated_info_property_ids _contacts_group_updated_info = {
332         ._uri                   = CTSVC_VIEW_URI_GROUPS_UPDATED_INFO,
333         .group_id               = CTSVC_PROPERTY_UPDATE_INFO_ID,
334         .address_book_id        = CTSVC_PROPERTY_UPDATE_INFO_ADDRESSBOOK_ID,
335         .type                   = CTSVC_PROPERTY_UPDATE_INFO_TYPE,
336         .version                = CTSVC_PROPERTY_UPDATE_INFO_VERSION,
337 };
338
339 API const _contacts_group_member_updated_info_property_ids _contacts_group_member_updated_info = {
340         ._uri                   = CTSVC_VIEW_URI_GROUPS_MEMBER_UPDATED_INFO,
341         .group_id               = CTSVC_PROPERTY_UPDATE_INFO_ID,
342         .address_book_id        = CTSVC_PROPERTY_UPDATE_INFO_ADDRESSBOOK_ID,
343         .version                = CTSVC_PROPERTY_UPDATE_INFO_VERSION,
344 };
345
346 API const _contacts_grouprel_updated_info_property_ids _contacts_grouprel_updated_info = {
347         ._uri                   = CTSVC_VIEW_URI_GROUPRELS_UPDATED_INFO,
348         .group_id               = CTSVC_PROPERTY_GROUP_ID,
349         .contact_id             = CTSVC_PROPERTY_CONTACT_ID,
350         .address_book_id        = CTSVC_PROPERTY_ADDRESSBOOK_ID,
351         .type                   = CTSVC_PROPERTY_UPDATE_INFO_TYPE,
352         .version                = CTSVC_PROPERTY_UPDATE_INFO_VERSION,
353 };
354
355 API const _contacts_activity_property_ids _contacts_activity = {
356         ._uri                   = CTSVC_VIEW_URI_ACTIVITY,
357         .id                             = CTSVC_PROPERTY_ACTIVITY_ID,
358         .contact_id             = CTSVC_PROPERTY_ACTIVITY_CONTACT_ID,
359         .source_name    = CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME,
360         .status                 = CTSVC_PROPERTY_ACTIVITY_STATUS,
361         .timestamp              = CTSVC_PROPERTY_ACTIVITY_TIMESTAMP,
362         .sync_data1             = CTSVC_PROPERTY_ACTIVITY_SYNC_DATA1,
363         .sync_data2             = CTSVC_PROPERTY_ACTIVITY_SYNC_DATA2,
364         .sync_data3             = CTSVC_PROPERTY_ACTIVITY_SYNC_DATA3,
365         .sync_data4             = CTSVC_PROPERTY_ACTIVITY_SYNC_DATA4,
366         .photo                  = CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO,
367 };
368
369 API const _contacts_activity_photo_property_ids _contacts_activity_photo = {
370         ._uri                   = CTSVC_VIEW_URI_ACTIVITY_PHOTO,
371         .id                             = CTSVC_PROPERTY_ACTIVITY_PHOTO_ID,
372         .activity_id    = CTSVC_PROPERTY_ACTIVITY_PHOTO_ACTIVITY_ID,
373         .photo_url              = CTSVC_PROPERTY_ACTIVITY_PHOTO_URL,
374         .sort_index             = CTSVC_PROPERTY_ACTIVITY_PHOTO_SORT_INDEX,
375 };
376
377 API const _contacts_phone_log_property_ids _contacts_phone_log = {
378         ._uri                   = CTSVC_VIEW_URI_PHONELOG,
379         .id                             = CTSVC_PROPERTY_PHONELOG_ID,
380         .person_id              = CTSVC_PROPERTY_PHONELOG_PERSON_ID,
381         .address                = CTSVC_PROPERTY_PHONELOG_ADDRESS,
382         .log_time               = CTSVC_PROPERTY_PHONELOG_LOG_TIME,
383         .log_type               = CTSVC_PROPERTY_PHONELOG_LOG_TYPE,
384         .extra_data1    = CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1,
385         .extra_data2    = CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2,
386 };
387
388 API const _contacts_extension_property_ids _contacts_extension = {
389         ._uri           = CTSVC_VIEW_URI_EXTENSION,
390         .id                     = CTSVC_PROPERTY_EXTENSION_ID,
391         .contact_id     = CTSVC_PROPERTY_EXTENSION_CONTACT_ID,
392         .data1          = CTSVC_PROPERTY_EXTENSION_DATA1,
393         .data2          = CTSVC_PROPERTY_EXTENSION_DATA2,
394         .data3          = CTSVC_PROPERTY_EXTENSION_DATA3,
395         .data4          = CTSVC_PROPERTY_EXTENSION_DATA4,
396         .data5          = CTSVC_PROPERTY_EXTENSION_DATA5,
397         .data6          = CTSVC_PROPERTY_EXTENSION_DATA6,
398         .data7          = CTSVC_PROPERTY_EXTENSION_DATA7,
399         .data8          = CTSVC_PROPERTY_EXTENSION_DATA8,
400         .data9          = CTSVC_PROPERTY_EXTENSION_DATA9,
401         .data10         = CTSVC_PROPERTY_EXTENSION_DATA10,
402         .data11         = CTSVC_PROPERTY_EXTENSION_DATA11,
403         .data12         = CTSVC_PROPERTY_EXTENSION_DATA12,
404 };
405
406 API const _contacts_person_contact_property_ids _contacts_person_contact = {
407         ._uri                                   = CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT,
408         .person_id                              = CTSVC_PROPERTY_PERSON_ID,
409         .display_name                   = CTSVC_PROPERTY_PERSON_DISPLAY_NAME,
410         .display_name_index             = CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,
411         .display_contact_id             = CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,
412         .ringtone_path                  = CTSVC_PROPERTY_PERSON_RINGTONE,
413         .image_thumbnail_path   = CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,
414         .vibration                              = CTSVC_PROPERTY_PERSON_VIBRATION,
415         .status                                 = CTSVC_PROPERTY_PERSON_STATUS,
416         .is_favorite                    = CTSVC_PROPERTY_PERSON_IS_FAVORITE,
417         .link_count                             = CTSVC_PROPERTY_PERSON_LINK_COUNT,
418         .account_id1                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID1,
419         .account_id2                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID2,
420         .account_id3                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID3,
421         .addressbook_ids                = CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS,
422         .has_phonenumber                = CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,
423         .has_email                              = CTSVC_PROPERTY_PERSON_HAS_EMAIL,
424         .contact_id                             = CTSVC_PROPERTY_CONTACT_ID,
425         .address_book_id                = CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,
426         .address_book_name              = CTSVC_PROPERTY_ADDRESSBOOK_NAME,
427         .address_book_mode              = CTSVC_PROPERTY_ADDRESSBOOK_MODE
428 };
429
430 API const _contacts_person_number_property_ids _contacts_person_number = {
431         ._uri                                   = CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER,
432         .person_id                              = CTSVC_PROPERTY_PERSON_ID,
433         .display_name                   = CTSVC_PROPERTY_PERSON_DISPLAY_NAME,
434         .display_name_index             = CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,
435         .display_contact_id             = CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,
436         .ringtone_path                  = CTSVC_PROPERTY_PERSON_RINGTONE,
437         .image_thumbnail_path   = CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,
438         .vibration                              = CTSVC_PROPERTY_PERSON_VIBRATION,
439         .is_favorite                    = CTSVC_PROPERTY_PERSON_IS_FAVORITE,
440         .has_phonenumber                = CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,
441         .has_email                              = CTSVC_PROPERTY_PERSON_HAS_EMAIL,
442         .number_id                      = CTSVC_PROPERTY_NUMBER_ID,
443         .type                           = CTSVC_PROPERTY_NUMBER_TYPE,
444         .label                          = CTSVC_PROPERTY_NUMBER_LABEL,
445         .is_primary_default     = CTSVC_PROPERTY_DATA_IS_PRIMARY_DEFAULT,
446         .number                         = CTSVC_PROPERTY_NUMBER_NUMBER,
447         .number_filter          = CTSVC_PROPERTY_NUMBER_NUMBER_FILTER,
448 };
449
450 API const _contacts_person_email_property_ids _contacts_person_email = {
451         ._uri                                   = CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL,
452         .person_id                              = CTSVC_PROPERTY_PERSON_ID,
453         .display_name                   = CTSVC_PROPERTY_PERSON_DISPLAY_NAME,
454         .display_name_index             = CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,
455         .display_contact_id             = CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,
456         .ringtone_path                  = CTSVC_PROPERTY_PERSON_RINGTONE,
457         .image_thumbnail_path   = CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,
458         .vibration                              = CTSVC_PROPERTY_PERSON_VIBRATION,
459         .is_favorite                    = CTSVC_PROPERTY_PERSON_IS_FAVORITE,
460         .has_phonenumber                = CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,
461         .has_email                              = CTSVC_PROPERTY_PERSON_HAS_EMAIL,
462         .email_id                       = CTSVC_PROPERTY_EMAIL_ID,
463         .type                           = CTSVC_PROPERTY_EMAIL_TYPE,
464         .label                          = CTSVC_PROPERTY_EMAIL_LABEL,
465         .is_primary_default     = CTSVC_PROPERTY_DATA_IS_PRIMARY_DEFAULT,
466         .email                          = CTSVC_PROPERTY_EMAIL_EMAIL
467 };
468
469 API const _contacts_person_usage_property_ids _contacts_person_usage = {
470         ._uri                                   = CTSVC_VIEW_URI_READ_ONLY_PERSON_USAGE,
471         .person_id                              = CTSVC_PROPERTY_PERSON_ID,
472         .display_name                   = CTSVC_PROPERTY_PERSON_DISPLAY_NAME,
473         .display_name_index             = CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,
474         .display_contact_id             = CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,
475         .ringtone_path                  = CTSVC_PROPERTY_PERSON_RINGTONE,
476         .image_thumbnail_path   = CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,
477         .vibration                              = CTSVC_PROPERTY_PERSON_VIBRATION,
478         .is_favorite                    = CTSVC_PROPERTY_PERSON_IS_FAVORITE,
479         .has_phonenumber                = CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,
480         .has_email                              = CTSVC_PROPERTY_PERSON_HAS_EMAIL,
481         .usage_type                             = CTSVC_PROPERTY_PERSON_USAGE_TYPE,
482         .times_used                             = CTSVC_PROPERTY_PERSON_TIMES_USED
483 };
484
485 API const _contacts_person_grouprel_property_ids _contacts_person_grouprel = {
486         ._uri                                   = CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP,
487         .person_id                              = CTSVC_PROPERTY_PERSON_ID,
488         .display_name                   = CTSVC_PROPERTY_PERSON_DISPLAY_NAME,
489         .display_name_index             = CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,
490         .display_contact_id             = CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,
491         .ringtone_path                  = CTSVC_PROPERTY_PERSON_RINGTONE,
492         .image_thumbnail_path   = CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,
493         .vibration                              = CTSVC_PROPERTY_PERSON_VIBRATION,
494         .status                                 = CTSVC_PROPERTY_PERSON_STATUS,
495         .is_favorite                    = CTSVC_PROPERTY_PERSON_IS_FAVORITE,
496         .has_phonenumber                = CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,
497         .has_email                              = CTSVC_PROPERTY_PERSON_HAS_EMAIL,
498         .link_count                             = CTSVC_PROPERTY_PERSON_LINK_COUNT,
499         .account_id1                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID1,
500         .account_id2                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID2,
501         .account_id3                    = CTSVC_PROPERTY_PERSON_ACCOUNT_ID3,
502         .addressbook_ids                = CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS,
503         .address_book_id                = CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,
504         .group_id               = CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID,
505         .address_book_name              = CTSVC_PROPERTY_ADDRESSBOOK_NAME,
506         .address_book_mode              = CTSVC_PROPERTY_ADDRESSBOOK_MODE,
507         .contact_id                             = CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID
508 };
509
510 API const _contacts_person_phone_log_property_ids _contacts_person_phone_log = {
511         ._uri                   = CTSVC_VIEW_URI_READ_ONLY_PERSON_PHONELOG,
512         .person_id                              = CTSVC_PROPERTY_PERSON_ID,
513         .display_name                   = CTSVC_PROPERTY_PERSON_DISPLAY_NAME,
514         .image_thumbnail_path   = CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,
515         .log_id = CTSVC_PROPERTY_PHONELOG_ID,
516         .address                = CTSVC_PROPERTY_PHONELOG_ADDRESS,
517         .address_type   = CTSVC_PROPERTY_DATA_DATA1,
518         .log_time               = CTSVC_PROPERTY_PHONELOG_LOG_TIME,
519         .log_type               = CTSVC_PROPERTY_PHONELOG_LOG_TYPE,
520         .extra_data1    = CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1,
521         .extra_data2    = CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2,
522 };
523
524 API const _contacts_contact_number_property_ids _contacts_contact_number = {
525         ._uri                                   = CTSVC_VIEW_URI_READ_ONLY_CONTACT_NUMBER,
526         .contact_id                             = CTSVC_PROPERTY_CONTACT_ID,
527         .display_name                   = CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,
528         .display_source_type    = CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,
529         .address_book_id                = CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,
530         .person_id                              = CTSVC_PROPERTY_CONTACT_PERSON_ID,
531         .ringtone_path                  = CTSVC_PROPERTY_CONTACT_RINGTONE,
532         .image_thumbnail_path   = CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,
533         .number_id                      = CTSVC_PROPERTY_NUMBER_ID,
534         .type                           = CTSVC_PROPERTY_NUMBER_TYPE,
535         .label                          = CTSVC_PROPERTY_NUMBER_LABEL,
536         .is_default                     = CTSVC_PROPERTY_NUMBER_IS_DEFAULT,
537         .number                         = CTSVC_PROPERTY_NUMBER_NUMBER,
538         .number_filter          = CTSVC_PROPERTY_NUMBER_NUMBER_FILTER,
539 };
540
541 API const _contacts_contact_email_property_ids _contacts_contact_email = {
542         ._uri                                   = CTSVC_VIEW_URI_READ_ONLY_CONTACT_EMAIL,
543         .contact_id                             = CTSVC_PROPERTY_CONTACT_ID,
544         .display_name                   = CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,
545         .display_source_type    = CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,
546         .address_book_id                = CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,
547         .person_id                              = CTSVC_PROPERTY_CONTACT_PERSON_ID,
548         .ringtone_path                  = CTSVC_PROPERTY_CONTACT_RINGTONE,
549         .image_thumbnail_path   = CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,
550         .email_id                       = CTSVC_PROPERTY_EMAIL_ID,
551         .type                           = CTSVC_PROPERTY_EMAIL_TYPE,
552         .label                          = CTSVC_PROPERTY_EMAIL_LABEL,
553         .is_default                     = CTSVC_PROPERTY_EMAIL_IS_DEFAULT,
554         .email                          = CTSVC_PROPERTY_EMAIL_EMAIL
555 };
556
557 API const _contacts_contact_grouprel_property_ids _contacts_contact_grouprel = {
558         ._uri                                   = CTSVC_VIEW_URI_READ_ONLY_CONTACT_GROUP,
559         .contact_id                             = CTSVC_PROPERTY_CONTACT_ID,
560         .display_name                   = CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,
561         .display_source_type    = CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,
562         .address_book_id                = CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,
563         .person_id                              = CTSVC_PROPERTY_CONTACT_PERSON_ID,
564         .ringtone_path                  = CTSVC_PROPERTY_CONTACT_RINGTONE,
565         .image_thumbnail_path   = CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,
566         .group_id               = CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID,
567         .group_name             = CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME
568 };
569
570 API const _contacts_contact_activity_property_ids _contacts_contact_activity = {
571         ._uri                   = CTSVC_VIEW_URI_READ_ONLY_CONTACT_ACTIVITY,
572         .contact_id                             = CTSVC_PROPERTY_CONTACT_ID,
573         .display_name                   = CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,
574         .display_source_type    = CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,
575         .address_book_id                = CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,
576         .person_id                              = CTSVC_PROPERTY_CONTACT_PERSON_ID,
577         .ringtone_path                  = CTSVC_PROPERTY_CONTACT_RINGTONE,
578         .image_thumbnail_path   = CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,
579         .activity_id    = CTSVC_PROPERTY_ACTIVITY_ID,
580         .source_name    = CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME,
581         .status                 = CTSVC_PROPERTY_ACTIVITY_STATUS,
582         .timestamp              = CTSVC_PROPERTY_ACTIVITY_TIMESTAMP,
583         .sync_data1             = CTSVC_PROPERTY_ACTIVITY_SYNC_DATA1,
584         .sync_data2             = CTSVC_PROPERTY_ACTIVITY_SYNC_DATA2,
585         .sync_data3             = CTSVC_PROPERTY_ACTIVITY_SYNC_DATA3,
586         .sync_data4             = CTSVC_PROPERTY_ACTIVITY_SYNC_DATA4,
587         .account_id             = CTSVC_PROPERTY_ADDRESSBOOK_ACCOUNT_ID,
588 };
589
590 API const _contacts_phone_log_number_property_ids _contacts_phone_log_number = {
591         ._uri   = CTSVC_VIEW_URI_READ_ONLY_PHONELOG_NUMBER,
592         .number = CTSVC_PROPERTY_PHONELOG_ADDRESS,
593 };
594
595 API const _contacts_phone_log_stat_property_ids _contacts_phone_log_stat = {
596         ._uri           = CTSVC_VIEW_URI_READ_ONLY_PHONELOG_STAT,
597         .log_count      = CTSVC_PROPERTY_PHONELOG_STAT_LOG_COUNT,
598         .log_type       = CTSVC_PROPERTY_PHONELOG_STAT_LOG_TYPE,
599 };
600
601 const property_info_s __property_addressbook[] = {
602         {CTSVC_PROPERTY_ADDRESSBOOK_ID,                 CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
603         {CTSVC_PROPERTY_ADDRESSBOOK_ACCOUNT_ID, CTSVC_SEARCH_PROPERTY_ALL,      "account_id"},
604         {CTSVC_PROPERTY_ADDRESSBOOK_NAME,               CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_name"},
605         {CTSVC_PROPERTY_ADDRESSBOOK_MODE,               CTSVC_SEARCH_PROPERTY_ALL,      "mode"},
606 };
607
608 const property_info_s __property_snd[] = {
609         {CTSVC_PROPERTY_SDN_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "id"},
610         {CTSVC_PROPERTY_SDN_NAME,               CTSVC_SEARCH_PROPERTY_ALL,      "name"},
611         {CTSVC_PROPERTY_SDN_NUMBER,     CTSVC_SEARCH_PROPERTY_ALL,      "number"},
612 };
613
614 const property_info_s __property_group[] = {
615         {CTSVC_PROPERTY_GROUP_ID,                               CTSVC_SEARCH_PROPERTY_ALL,      "group_id"},
616         {CTSVC_PROPERTY_GROUP_ADDRESSBOOK_ID,   CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
617         {CTSVC_PROPERTY_GROUP_NAME,                     CTSVC_SEARCH_PROPERTY_ALL,      "group_name"},
618         {CTSVC_PROPERTY_GROUP_RINGTONE,         CTSVC_SEARCH_PROPERTY_ALL,      "ringtone_path"},
619         {CTSVC_PROPERTY_GROUP_IMAGE,                    CTSVC_SEARCH_PROPERTY_ALL,      "image_thumbnail_path"},
620         {CTSVC_PROPERTY_GROUP_VIBRATION,                CTSVC_SEARCH_PROPERTY_ALL,      "vibration"},
621         {CTSVC_PROPERTY_GROUP_SYSTEM_ID,                CTSVC_SEARCH_PROPERTY_ALL,      "system_id"},
622         {CTSVC_PROPERTY_GROUP_IS_READ_ONLY,     CTSVC_SEARCH_PROPERTY_ALL,      "is_read_only"},
623 };
624
625 const property_info_s __property_person[] = {
626         {CTSVC_PROPERTY_PERSON_ID,                                      CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
627         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME,            CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
628         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,      CTSVC_SEARCH_PROPERTY_PROJECTION,       NULL},  // "dispaly_name" or "reverse_dispaly_name"
629         {CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,CTSVC_SEARCH_PROPERTY_ALL,    "name_contact_id"},
630         {CTSVC_PROPERTY_PERSON_RINGTONE,                        CTSVC_SEARCH_PROPERTY_ALL,      "ringtone_path"},
631         {CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL, CTSVC_SEARCH_PROPERTY_ALL,      "image_thumbnail_path"},
632         {CTSVC_PROPERTY_PERSON_VIBRATION,               CTSVC_SEARCH_PROPERTY_ALL,      "vibration"},
633         {CTSVC_PROPERTY_PERSON_STATUS,                  CTSVC_SEARCH_PROPERTY_ALL,      "status"},
634         {CTSVC_PROPERTY_PERSON_IS_FAVORITE,             CTSVC_SEARCH_PROPERTY_ALL,      "is_favorite"},
635         {CTSVC_PROPERTY_PERSON_FAVORITE_PRIORITY,       CTSVC_SEARCH_PROPERTY_FILTER,   "favorite_prio"},
636         {CTSVC_PROPERTY_PERSON_LINK_COUNT,              CTSVC_SEARCH_PROPERTY_ALL,      "link_count"},
637         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID1,             CTSVC_SEARCH_PROPERTY_ALL,      "account_id1"},
638         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID2,             CTSVC_SEARCH_PROPERTY_ALL,      "account_id2"},
639         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID3,             CTSVC_SEARCH_PROPERTY_ALL,      "account_id3"},
640         {CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS, CTSVC_SEARCH_PROPERTY_PROJECTION,       "addressbook_ids"},
641         {CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL,      "has_phonenumber"},
642         {CTSVC_PROPERTY_PERSON_HAS_EMAIL,               CTSVC_SEARCH_PROPERTY_ALL,      "has_email"},
643 };
644
645 const property_info_s __property_simple_contact[] = {
646         {CTSVC_PROPERTY_CONTACT_ID,                             CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
647         {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,   CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
648         {CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID, CTSVC_SEARCH_PROPERTY_ALL,      "display_name_source"},
649         {CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
650         {CTSVC_PROPERTY_CONTACT_RINGTONE,               CTSVC_SEARCH_PROPERTY_ALL,      "ringtone_path"},
651         {CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,CTSVC_SEARCH_PROPERTY_ALL,      "image_thumbnail_path"},
652         {CTSVC_PROPERTY_CONTACT_IS_FAVORITE,            CTSVC_SEARCH_PROPERTY_ALL,      "is_favorite"},
653         {CTSVC_PROPERTY_CONTACT_HAS_PHONENUMBER, CTSVC_SEARCH_PROPERTY_ALL,     "has_phonenumber"},
654         {CTSVC_PROPERTY_CONTACT_HAS_EMAIL,              CTSVC_SEARCH_PROPERTY_ALL,      "has_email"},
655         {CTSVC_PROPERTY_CONTACT_PERSON_ID,              CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
656         {CTSVC_PROPERTY_CONTACT_UID,                            CTSVC_SEARCH_PROPERTY_ALL,      "uid"},
657         {CTSVC_PROPERTY_CONTACT_VIBRATION,              CTSVC_SEARCH_PROPERTY_ALL,      "vibration"},
658         {CTSVC_PROPERTY_CONTACT_CHANGED_TIME,   CTSVC_SEARCH_PROPERTY_ALL,      "changed_time"},
659 };
660
661 const property_info_s __property_name[] = {
662         {CTSVC_PROPERTY_NAME_ID,                                        CTSVC_SEARCH_PROPERTY_ALL,      "id"},
663         {CTSVC_PROPERTY_NAME_CONTACT_ID,                        CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
664         {CTSVC_PROPERTY_NAME_FIRST,                             CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
665         {CTSVC_PROPERTY_NAME_LAST,                                      CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
666         {CTSVC_PROPERTY_NAME_ADDITION,                  CTSVC_SEARCH_PROPERTY_ALL,      "data4"},
667         {CTSVC_PROPERTY_NAME_PREFIX,                            CTSVC_SEARCH_PROPERTY_ALL,      "data5"},
668         {CTSVC_PROPERTY_NAME_SUFFIX,                            CTSVC_SEARCH_PROPERTY_ALL,      "data6"},
669         {CTSVC_PROPERTY_NAME_PHONETIC_FIRST,    CTSVC_SEARCH_PROPERTY_ALL,      "data7"},
670         {CTSVC_PROPERTY_NAME_PHONETIC_MIDDLE,   CTSVC_SEARCH_PROPERTY_ALL,      "data8"},
671         {CTSVC_PROPERTY_NAME_PHONETIC_LAST,     CTSVC_SEARCH_PROPERTY_ALL,      "data9"},
672 };
673
674 const property_info_s __property_number[] = {
675         {CTSVC_PROPERTY_NUMBER_ID,                              CTSVC_SEARCH_PROPERTY_ALL,      "id"},
676         {CTSVC_PROPERTY_NUMBER_CONTACT_ID,      CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
677         {CTSVC_PROPERTY_NUMBER_TYPE,                    CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
678         {CTSVC_PROPERTY_NUMBER_LABEL,                   CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
679         {CTSVC_PROPERTY_NUMBER_IS_DEFAULT,      CTSVC_SEARCH_PROPERTY_ALL,      "is_default"},
680         {CTSVC_PROPERTY_NUMBER_NUMBER,          CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
681 };
682
683 const property_info_s __property_email[] = {
684         {CTSVC_PROPERTY_EMAIL_ID,                               CTSVC_SEARCH_PROPERTY_ALL,      "id"},
685         {CTSVC_PROPERTY_EMAIL_CONTACT_ID,       CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
686         {CTSVC_PROPERTY_EMAIL_TYPE,                     CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
687         {CTSVC_PROPERTY_EMAIL_LABEL,                    CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
688         {CTSVC_PROPERTY_EMAIL_IS_DEFAULT,       CTSVC_SEARCH_PROPERTY_ALL,      "is_default"},
689         {CTSVC_PROPERTY_EMAIL_EMAIL,                    CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
690 };
691
692 const property_info_s __property_address[] = {
693         {CTSVC_PROPERTY_ADDRESS_ID,                     CTSVC_SEARCH_PROPERTY_ALL,      "id"},
694         {CTSVC_PROPERTY_ADDRESS_CONTACT_ID,     CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
695         {CTSVC_PROPERTY_ADDRESS_TYPE,                   CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
696         {CTSVC_PROPERTY_ADDRESS_LABEL,          CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
697         {CTSVC_PROPERTY_ADDRESS_POSTBOX,                CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
698         {CTSVC_PROPERTY_ADDRESS_POSTAL_CODE,CTSVC_SEARCH_PROPERTY_ALL,  "data4"},
699         {CTSVC_PROPERTY_ADDRESS_REGION,         CTSVC_SEARCH_PROPERTY_ALL,      "data5"},
700         {CTSVC_PROPERTY_ADDRESS_LOCALITY,       CTSVC_SEARCH_PROPERTY_ALL,      "data6"},
701         {CTSVC_PROPERTY_ADDRESS_STREET,         CTSVC_SEARCH_PROPERTY_ALL,      "data7"},
702         {CTSVC_PROPERTY_ADDRESS_COUNTRY,                CTSVC_SEARCH_PROPERTY_ALL,      "data9"},
703         {CTSVC_PROPERTY_ADDRESS_EXTENDED,       CTSVC_SEARCH_PROPERTY_ALL,      "data8"},
704         {CTSVC_PROPERTY_ADDRESS_IS_DEFAULT,     CTSVC_SEARCH_PROPERTY_ALL,      "is_default"},
705 };
706
707 const property_info_s __property_url[] = {
708         {CTSVC_PROPERTY_URL_ID,                         CTSVC_SEARCH_PROPERTY_ALL,      "id"},
709         {CTSVC_PROPERTY_URL_CONTACT_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
710         {CTSVC_PROPERTY_URL_TYPE,                       CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
711         {CTSVC_PROPERTY_URL_LABEL,                      CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
712         {CTSVC_PROPERTY_URL_URL,                        CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
713 };
714
715 const property_info_s __property_event[] = {
716         {CTSVC_PROPERTY_EVENT_ID,                               CTSVC_SEARCH_PROPERTY_ALL,      "id"},
717         {CTSVC_PROPERTY_EVENT_CONTACT_ID,       CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
718         {CTSVC_PROPERTY_EVENT_TYPE,                     CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
719         {CTSVC_PROPERTY_EVENT_LABEL,                    CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
720         {CTSVC_PROPERTY_EVENT_DATE,                     CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
721         {CTSVC_PROPERTY_EVENT_IS_LUNAR,                 CTSVC_SEARCH_PROPERTY_ALL,      "data4"},
722         {CTSVC_PROPERTY_EVENT_LUNAR_DATE,       CTSVC_SEARCH_PROPERTY_ALL,      "data5"},
723 };
724
725 const property_info_s __property_group_relation[] = {
726         {CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID,        CTSVC_SEARCH_PROPERTY_ALL,      "group_id"},
727         {CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID,      CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
728         {CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME,CTSVC_SEARCH_PROPERTY_ALL,    "group_name"},
729 };
730
731 const property_info_s __property_relationship[] = {
732         {CTSVC_PROPERTY_RELATIONSHIP_ID,                                CTSVC_SEARCH_PROPERTY_ALL,      "id"},
733         {CTSVC_PROPERTY_RELATIONSHIP_CONTACT_ID,        CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
734         {CTSVC_PROPERTY_RELATIONSHIP_TYPE,                      CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
735         {CTSVC_PROPERTY_RELATIONSHIP_LABEL,             CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
736         {CTSVC_PROPERTY_RELATIONSHIP_NAME,                      CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
737 };
738
739 const property_info_s __property_image[] = {
740         {CTSVC_PROPERTY_IMAGE_ID,                               CTSVC_SEARCH_PROPERTY_ALL,      "id"},
741         {CTSVC_PROPERTY_IMAGE_CONTACT_ID,       CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
742         {CTSVC_PROPERTY_IMAGE_TYPE,                     CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
743         {CTSVC_PROPERTY_IMAGE_LABEL,                    CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
744         {CTSVC_PROPERTY_IMAGE_PATH,                     CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
745         {CTSVC_PROPERTY_IMAGE_IS_DEFAULT,       CTSVC_SEARCH_PROPERTY_ALL,      "is_default"},
746 };
747
748 const property_info_s __property_company[] = {
749         {CTSVC_PROPERTY_COMPANY_ID,                             CTSVC_SEARCH_PROPERTY_ALL,      "id"},
750         {CTSVC_PROPERTY_COMPANY_CONTACT_ID,     CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
751         {CTSVC_PROPERTY_COMPANY_TYPE,                   CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
752         {CTSVC_PROPERTY_COMPANY_LABEL,                  CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
753         {CTSVC_PROPERTY_COMPANY_NAME,                           CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
754         {CTSVC_PROPERTY_COMPANY_DEPARTMENT,     CTSVC_SEARCH_PROPERTY_ALL,      "data4"},
755         {CTSVC_PROPERTY_COMPANY_JOB_TITLE,              CTSVC_SEARCH_PROPERTY_ALL,      "data5"},
756         {CTSVC_PROPERTY_COMPANY_ROLE,                   CTSVC_SEARCH_PROPERTY_ALL,      "data6"},
757         {CTSVC_PROPERTY_COMPANY_ASSISTANT_NAME, CTSVC_SEARCH_PROPERTY_ALL,      "data7"},
758         {CTSVC_PROPERTY_COMPANY_LOGO,                           CTSVC_SEARCH_PROPERTY_ALL,      "data8"},
759         {CTSVC_PROPERTY_COMPANY_LOCATION,               CTSVC_SEARCH_PROPERTY_ALL,      "data9"},
760         {CTSVC_PROPERTY_COMPANY_DESCRIPTION,    CTSVC_SEARCH_PROPERTY_ALL,      "data10"},
761         {CTSVC_PROPERTY_COMPANY_PHONETIC_NAME,  CTSVC_SEARCH_PROPERTY_ALL,      "data11"},
762 };
763
764 const property_info_s __property_nickname[] = {
765         {CTSVC_PROPERTY_NICKNAME_ID,                            CTSVC_SEARCH_PROPERTY_ALL,      "id",},
766         {CTSVC_PROPERTY_NICKNAME_CONTACT_ID,    CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
767         {CTSVC_PROPERTY_NICKNAME_NAME,                  CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
768 };
769
770 const property_info_s __property_messenger[] = {
771         {CTSVC_PROPERTY_MESSENGER_ID,                           CTSVC_SEARCH_PROPERTY_ALL,      "id"},
772         {CTSVC_PROPERTY_MESSENGER_CONTACT_ID,   CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
773         {CTSVC_PROPERTY_MESSENGER_TYPE,                         CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
774         {CTSVC_PROPERTY_MESSENGER_LABEL,                        CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
775         {CTSVC_PROPERTY_MESSENGER_IM_ID,                        CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
776 };
777
778 const property_info_s __property_note[] = {
779         {CTSVC_PROPERTY_NOTE_ID,                        CTSVC_SEARCH_PROPERTY_ALL,      "id"},
780         {CTSVC_PROPERTY_NOTE_CONTACT_ID,        CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
781         {CTSVC_PROPERTY_NOTE_NOTE,                      CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
782 };
783
784 const property_info_s __property_profile[] = {
785         {CTSVC_PROPERTY_PROFILE_ID,                                     CTSVC_SEARCH_PROPERTY_ALL,      "id"},
786         {CTSVC_PROPERTY_PROFILE_CONTACT_ID,                     CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
787         {CTSVC_PROPERTY_PROFILE_TYPE,                                   CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
788         {CTSVC_PROPERTY_PROFILE_LABEL,                          CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
789         {CTSVC_PROPERTY_PROFILE_UID,                                    CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
790         {CTSVC_PROPERTY_PROFILE_TEXT,                                   CTSVC_SEARCH_PROPERTY_ALL,      "data4"},
791         {CTSVC_PROPERTY_PROFILE_ORDER,                          CTSVC_SEARCH_PROPERTY_ALL,      "data5"},
792         {CTSVC_PROPERTY_PROFILE_APPSVC_OPERATION,       CTSVC_SEARCH_PROPERTY_ALL,      "data6"},
793         {CTSVC_PROPERTY_PROFILE_DATA1,                          CTSVC_SEARCH_PROPERTY_ALL,      "data7"},
794         {CTSVC_PROPERTY_PROFILE_DATA2,                          CTSVC_SEARCH_PROPERTY_ALL,      "data8"},
795         {CTSVC_PROPERTY_PROFILE_DATA3,                          CTSVC_SEARCH_PROPERTY_ALL,      "data9"},
796         {CTSVC_PROPERTY_PROFILE_DATA4,                          CTSVC_SEARCH_PROPERTY_ALL,      "data10"},
797 };
798
799 const property_info_s __property_activity_photo[] = {
800         {CTSVC_PROPERTY_ACTIVITY_PHOTO_ID,                      CTSVC_SEARCH_PROPERTY_ALL,      "id"},
801         {CTSVC_PROPERTY_ACTIVITY_PHOTO_ACTIVITY_ID,     CTSVC_SEARCH_PROPERTY_ALL,      "activity_id"},
802         {CTSVC_PROPERTY_ACTIVITY_PHOTO_URL,                     CTSVC_SEARCH_PROPERTY_ALL,      "photo_url"},
803         {CTSVC_PROPERTY_ACTIVITY_PHOTO_SORT_INDEX,      CTSVC_SEARCH_PROPERTY_ALL,      "sort_index"},
804 };
805
806 const property_info_s __property_activity[] = {
807         {CTSVC_PROPERTY_ACTIVITY_ID,                            CTSVC_SEARCH_PROPERTY_ALL,      "id"},
808         {CTSVC_PROPERTY_ACTIVITY_CONTACT_ID,            CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
809         {CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME,   CTSVC_SEARCH_PROPERTY_ALL,      "source_name"},
810         {CTSVC_PROPERTY_ACTIVITY_STATUS,                        CTSVC_SEARCH_PROPERTY_ALL,      "status"},
811         {CTSVC_PROPERTY_ACTIVITY_TIMESTAMP,             CTSVC_SEARCH_PROPERTY_ALL,      "timestamp"},
812         {CTSVC_PROPERTY_ACTIVITY_SYNC_DATA1,            CTSVC_SEARCH_PROPERTY_ALL,      "sync_data1"},
813         {CTSVC_PROPERTY_ACTIVITY_SYNC_DATA2,            CTSVC_SEARCH_PROPERTY_ALL,      "sync_data2"},
814         {CTSVC_PROPERTY_ACTIVITY_SYNC_DATA3,            CTSVC_SEARCH_PROPERTY_ALL,      "sync_data3"},
815         {CTSVC_PROPERTY_ACTIVITY_SYNC_DATA4,            CTSVC_SEARCH_PROPERTY_ALL,      "sync_data4"},
816         {CTSVC_PROPERTY_ACTIVITY_ACTIVITY_PHOTO,CTSVC_SEARCH_PROPERTY_NONE,     (void*)__property_activity_photo},
817 };
818
819 const property_info_s __property_extension[] = {
820         {CTSVC_PROPERTY_EXTENSION_ID,                           CTSVC_SEARCH_PROPERTY_ALL,      "id"},
821         {CTSVC_PROPERTY_EXTENSION_CONTACT_ID,   CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
822         {CTSVC_PROPERTY_EXTENSION_DATA1,                CTSVC_SEARCH_PROPERTY_ALL,      "data1"},
823         {CTSVC_PROPERTY_EXTENSION_DATA2,                CTSVC_SEARCH_PROPERTY_ALL,      "data2"},
824         {CTSVC_PROPERTY_EXTENSION_DATA3,                CTSVC_SEARCH_PROPERTY_ALL,      "data3"},
825         {CTSVC_PROPERTY_EXTENSION_DATA4,                CTSVC_SEARCH_PROPERTY_ALL,      "data4"},
826         {CTSVC_PROPERTY_EXTENSION_DATA5,                CTSVC_SEARCH_PROPERTY_ALL,      "data5"},
827         {CTSVC_PROPERTY_EXTENSION_DATA6,                CTSVC_SEARCH_PROPERTY_ALL,      "data6"},
828         {CTSVC_PROPERTY_EXTENSION_DATA7,                CTSVC_SEARCH_PROPERTY_ALL,      "data7"},
829         {CTSVC_PROPERTY_EXTENSION_DATA8,                CTSVC_SEARCH_PROPERTY_ALL,      "data8"},
830         {CTSVC_PROPERTY_EXTENSION_DATA9,                CTSVC_SEARCH_PROPERTY_ALL,      "data9"},
831         {CTSVC_PROPERTY_EXTENSION_DATA10,               CTSVC_SEARCH_PROPERTY_ALL,      "data10"},
832         {CTSVC_PROPERTY_EXTENSION_DATA11,               CTSVC_SEARCH_PROPERTY_ALL,      "data11"},
833         {CTSVC_PROPERTY_EXTENSION_DATA12,               CTSVC_SEARCH_PROPERTY_ALL,      "data12"},
834 };
835
836 const property_info_s __property_contact[] = {
837         {CTSVC_PROPERTY_CONTACT_ID,                                     CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
838         {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,           CTSVC_SEARCH_PROPERTY_ALL,      NULL},  //dispaly_name, reverse_display_name
839         {CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID, CTSVC_SEARCH_PROPERTY_ALL,      "display_name_source"},
840         {CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
841         {CTSVC_PROPERTY_CONTACT_RINGTONE,                       CTSVC_SEARCH_PROPERTY_ALL,      "ringtone_path"},
842         {CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,        CTSVC_SEARCH_PROPERTY_ALL,      "image_thumbnail_path"},
843         {CTSVC_PROPERTY_CONTACT_IS_FAVORITE,                    CTSVC_SEARCH_PROPERTY_ALL,      "is_favorite"},
844         {CTSVC_PROPERTY_CONTACT_HAS_PHONENUMBER,        CTSVC_SEARCH_PROPERTY_ALL,      "has_phonenumber"},
845         {CTSVC_PROPERTY_CONTACT_HAS_EMAIL,                      CTSVC_SEARCH_PROPERTY_ALL,      "has_email"},
846         {CTSVC_PROPERTY_CONTACT_PERSON_ID,                      CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
847         {CTSVC_PROPERTY_CONTACT_UID,                                    CTSVC_SEARCH_PROPERTY_ALL,      "uid"},
848         {CTSVC_PROPERTY_CONTACT_VIBRATION,                      CTSVC_SEARCH_PROPERTY_ALL,      "vibration"},
849         {CTSVC_PROPERTY_CONTACT_CHANGED_TIME,           CTSVC_SEARCH_PROPERTY_ALL,      "changed_time"},
850         {CTSVC_PROPERTY_CONTACT_NAME,                                   CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_name},
851         {CTSVC_PROPERTY_CONTACT_COMPANY,                                CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_company},
852         {CTSVC_PROPERTY_CONTACT_NOTE,                                   CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_note},
853         {CTSVC_PROPERTY_CONTACT_NUMBER,                         CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_number},
854         {CTSVC_PROPERTY_CONTACT_EMAIL,                          CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_email},
855         {CTSVC_PROPERTY_CONTACT_EVENT,                          CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_event},
856         {CTSVC_PROPERTY_CONTACT_MESSENGER,                      CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_messenger},
857         {CTSVC_PROPERTY_CONTACT_ADDRESS,                                CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_address},
858         {CTSVC_PROPERTY_CONTACT_URL,                                    CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_url},
859         {CTSVC_PROPERTY_CONTACT_NICKNAME,                       CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_nickname},
860         {CTSVC_PROPERTY_CONTACT_PROFILE,                                CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_profile},
861         {CTSVC_PROPERTY_CONTACT_RELATIONSHIP,           CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_relationship},
862         {CTSVC_PROPERTY_CONTACT_IMAGE,                          CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_image},
863         {CTSVC_PROPERTY_CONTACT_GROUP_RELATION,         CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_group_relation},
864         {CTSVC_PROPERTY_CONTACT_EXTENSION,                      CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_extension},
865 };
866
867 const property_info_s __property_my_profile[] = {
868         {CTSVC_PROPERTY_MY_PROFILE_ID,                                  CTSVC_SEARCH_PROPERTY_ALL,      "my_profile_id"},
869         {CTSVC_PROPERTY_MY_PROFILE_DISPLAY_NAME,                CTSVC_SEARCH_PROPERTY_ALL,      NULL},  //dispaly_name, reverse_display_name
870         {CTSVC_PROPERTY_MY_PROFILE_ADDRESSBOOK_ID,              CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
871         {CTSVC_PROPERTY_MY_PROFILE_IMAGE_THUMBNAIL,     CTSVC_SEARCH_PROPERTY_ALL,      "image_thumbnail_path"},
872         {CTSVC_PROPERTY_MY_PROFILE_UID,                                 CTSVC_SEARCH_PROPERTY_ALL,      "uid"},
873         {CTSVC_PROPERTY_MY_PROFILE_CHANGED_TIME,                CTSVC_SEARCH_PROPERTY_ALL,      "changed_time"},
874         {CTSVC_PROPERTY_MY_PROFILE_NAME,                                        CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_name},
875         {CTSVC_PROPERTY_MY_PROFILE_COMPANY,                             CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_company},
876         {CTSVC_PROPERTY_MY_PROFILE_NOTE,                                        CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_note},
877         {CTSVC_PROPERTY_MY_PROFILE_NUMBER,                              CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_number},
878         {CTSVC_PROPERTY_MY_PROFILE_EMAIL,                               CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_email},
879         {CTSVC_PROPERTY_MY_PROFILE_EVENT,                               CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_event},
880         {CTSVC_PROPERTY_MY_PROFILE_MESSENGER,                   CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_messenger},
881         {CTSVC_PROPERTY_MY_PROFILE_ADDRESS,                             CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_address},
882         {CTSVC_PROPERTY_MY_PROFILE_URL,                                 CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_url},
883         {CTSVC_PROPERTY_MY_PROFILE_NICKNAME,                            CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_nickname},
884         {CTSVC_PROPERTY_MY_PROFILE_PROFILE,                             CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_profile},
885         {CTSVC_PROPERTY_MY_PROFILE_RELATIONSHIP,                CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_relationship},
886         {CTSVC_PROPERTY_MY_PROFILE_IMAGE,                               CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_image},
887         {CTSVC_PROPERTY_MY_PROFILE_EXTENSION,                   CTSVC_SEARCH_PROPERTY_NONE,(void*)__property_extension},
888 };
889
890
891 const property_info_s __property_speeddial[] = {
892         {CTSVC_PROPERTY_SPEEDDIAL_DIAL_NUMBER,          CTSVC_SEARCH_PROPERTY_ALL,      "speed_number"},
893         {CTSVC_PROPERTY_SPEEDDIAL_NUMBER_ID,                    CTSVC_SEARCH_PROPERTY_ALL,      "number_id"},
894         {CTSVC_PROPERTY_SPEEDDIAL_NUMBER,                       CTSVC_SEARCH_PROPERTY_ALL,      "number"},
895         {CTSVC_PROPERTY_SPEEDDIAL_NUMBER_LABEL, CTSVC_SEARCH_PROPERTY_ALL,      "label"},
896         {CTSVC_PROPERTY_SPEEDDIAL_NUMBER_TYPE,          CTSVC_SEARCH_PROPERTY_ALL,      "type"},
897         {CTSVC_PROPERTY_SPEEDDIAL_PERSON_ID,                    CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
898         {CTSVC_PROPERTY_SPEEDDIAL_DISPLAY_NAME, CTSVC_SEARCH_PROPERTY_ALL,      NULL},          // display_name or reverse_display_name
899         {CTSVC_PROPERTY_SPEEDDIAL_IMAGE_THUMBNAIL,      CTSVC_SEARCH_PROPERTY_ALL,      "image_thumbnail_path"},
900 };
901
902 const property_info_s __property_phonelog[] = {
903         {CTSVC_PROPERTY_PHONELOG_ID,                            CTSVC_SEARCH_PROPERTY_ALL,      "id"},
904         {CTSVC_PROPERTY_PHONELOG_PERSON_ID,             CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
905         {CTSVC_PROPERTY_PHONELOG_ADDRESS,               CTSVC_SEARCH_PROPERTY_ALL,      "number"},
906         {CTSVC_PROPERTY_PHONELOG_LOG_TIME,              CTSVC_SEARCH_PROPERTY_ALL,      "log_time"},
907         {CTSVC_PROPERTY_PHONELOG_LOG_TYPE,              CTSVC_SEARCH_PROPERTY_ALL,      "log_type"},
908         {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1,   CTSVC_SEARCH_PROPERTY_ALL,      "data1"},               // duration
909         {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2,   CTSVC_SEARCH_PROPERTY_ALL,      "data2"},               // short message, email subject
910 };
911
912 #if 0
913 const property_info_s __property_updated_info[] = {
914         {CTSVC_PROPERTY_UPDATE_INFO_ID,                                 CTSVC_SEARCH_PROPERTY_ALL,      "id"},
915         {CTSVC_PROPERTY_UPDATE_INFO_ADDRESSBOOK_ID, CTSVC_SEARCH_PROPERTY_ALL,  "addressbook_id"},
916         {CTSVC_PROPERTY_UPDATE_INFO_TYPE,                       CTSVC_SEARCH_PROPERTY_ALL,      "type"},
917         {CTSVC_PROPERTY_UPDATE_INFO_VERSION,            CTSVC_SEARCH_PROPERTY_ALL,      "version"},
918         {CTSVC_PROPERTY_UPDATE_INFO_IMAGE_CHANGED,      CTSVC_SEARCH_PROPERTY_ALL,      "image_changed"},
919         {CTSVC_PROPERTY_UPDATE_INFO_LAST_CHANGED_TYPE,  CTSVC_SEARCH_PROPERTY_ALL,      "is_deleted"},
920 };
921
922 const property_info_s __property_grouprel_updated_info[] = {
923         {CTSVC_PROPERTY_GROUP_ID,                               CTSVC_SEARCH_PROPERTY_ALL,      "group_id"},
924         {CTSVC_PROPERTY_CONTACT_ID,                     CTSVC_SEARCH_PROPERTY_ALL,      "id"},
925         {CTSVC_PROPERTY_ADDRESSBOOK_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
926         {CTSVC_PROPERTY_UPDATE_INFO_TYPE,       CTSVC_SEARCH_PROPERTY_ALL,      "type"},
927         {CTSVC_PROPERTY_UPDATE_INFO_VERSION,    CTSVC_SEARCH_PROPERTY_ALL,      "version"},
928 };
929 #endif
930
931 // search properties ///////////////////////////////////////////////////////////////////////////////////////////////////
932 const property_info_s __property_person_contact[] = {           // _contacts_person_contact
933         {CTSVC_PROPERTY_PERSON_ID,                                              CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
934         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME,                    CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
935         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,              CTSVC_SEARCH_PROPERTY_PROJECTION,       NULL},  // "dispaly_name" or "reverse_dispaly_name"
936         {CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,              CTSVC_SEARCH_PROPERTY_PROJECTION,       "name_contact_id"},
937         {CTSVC_PROPERTY_PERSON_RINGTONE,                                CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
938         {CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,         CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
939         {CTSVC_PROPERTY_PERSON_VIBRATION,                               CTSVC_SEARCH_PROPERTY_PROJECTION,       "vibration"},
940         {CTSVC_PROPERTY_PERSON_STATUS,                          CTSVC_SEARCH_PROPERTY_PROJECTION,       "status"},
941         {CTSVC_PROPERTY_PERSON_IS_FAVORITE,                     CTSVC_SEARCH_PROPERTY_ALL,      "is_favorite"},
942         {CTSVC_PROPERTY_PERSON_LINK_COUNT,                              CTSVC_SEARCH_PROPERTY_ALL,      "link_count"},
943         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID1,                     CTSVC_SEARCH_PROPERTY_ALL,      "account_id1"},
944         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID2,                     CTSVC_SEARCH_PROPERTY_ALL,      "account_id2"},
945         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID3,                     CTSVC_SEARCH_PROPERTY_ALL,      "account_id3"},
946         {CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS,         CTSVC_SEARCH_PROPERTY_PROJECTION,       "addressbook_ids"},
947         {CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,                 CTSVC_SEARCH_PROPERTY_ALL,      "has_phonenumber"},
948         {CTSVC_PROPERTY_PERSON_HAS_EMAIL,                               CTSVC_SEARCH_PROPERTY_ALL,      "has_email"},
949         // contact
950         {CTSVC_PROPERTY_CONTACT_ID,                                             CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
951         {CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,                 CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
952         // addressbook
953         {CTSVC_PROPERTY_ADDRESSBOOK_NAME,                               CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_name"},
954         {CTSVC_PROPERTY_ADDRESSBOOK_MODE,                               CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_mode"},
955 };
956
957 const property_info_s __property_person_number[] = {            // _contacts_person_number
958         {CTSVC_PROPERTY_PERSON_ID,                                              CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
959         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME,                    CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
960         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,              CTSVC_SEARCH_PROPERTY_PROJECTION,       NULL},  // "dispaly_name" or "reverse_dispaly_name"
961         {CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,              CTSVC_SEARCH_PROPERTY_PROJECTION,       "name_contact_id"},
962         {CTSVC_PROPERTY_PERSON_RINGTONE,                                CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
963         {CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,         CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
964         {CTSVC_PROPERTY_PERSON_VIBRATION,                               CTSVC_SEARCH_PROPERTY_PROJECTION,       "vibration"},
965         {CTSVC_PROPERTY_PERSON_IS_FAVORITE,                     CTSVC_SEARCH_PROPERTY_ALL,      "is_favorite"},
966         {CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,                 CTSVC_SEARCH_PROPERTY_ALL,      "has_phonenumber"},
967         {CTSVC_PROPERTY_PERSON_HAS_EMAIL,                               CTSVC_SEARCH_PROPERTY_ALL,      "has_email"},
968         // number
969         {CTSVC_PROPERTY_NUMBER_ID,                                              CTSVC_SEARCH_PROPERTY_ALL,      "number_id"},
970         {CTSVC_PROPERTY_DATA_IS_PRIMARY_DEFAULT,                CTSVC_SEARCH_PROPERTY_ALL,      "is_primary_default"},
971         {CTSVC_PROPERTY_NUMBER_TYPE,                                    CTSVC_SEARCH_PROPERTY_PROJECTION,       "type"},
972         {CTSVC_PROPERTY_NUMBER_LABEL,                                   CTSVC_SEARCH_PROPERTY_PROJECTION,       "label"},
973         {CTSVC_PROPERTY_NUMBER_NUMBER,                                  CTSVC_SEARCH_PROPERTY_ALL,      "number"},
974         {CTSVC_PROPERTY_NUMBER_NUMBER_FILTER,                   CTSVC_SEARCH_PROPERTY_FILTER,   "normalized_number"},
975 };
976
977 const property_info_s __property_person_email[] = {     // _contacts_person_email
978         {CTSVC_PROPERTY_PERSON_ID,                                              CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
979         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME,                    CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
980         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,              CTSVC_SEARCH_PROPERTY_PROJECTION,       NULL},  // "dispaly_name" or "reverse_dispaly_name"
981         {CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,              CTSVC_SEARCH_PROPERTY_PROJECTION,       "name_contact_id"},
982         {CTSVC_PROPERTY_PERSON_RINGTONE,                                CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
983         {CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,         CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
984         {CTSVC_PROPERTY_PERSON_VIBRATION,                               CTSVC_SEARCH_PROPERTY_PROJECTION,       "vibration"},
985         {CTSVC_PROPERTY_PERSON_IS_FAVORITE,                     CTSVC_SEARCH_PROPERTY_ALL,      "is_favorite"},
986         {CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,                 CTSVC_SEARCH_PROPERTY_ALL,      "has_phonenumber"},
987         {CTSVC_PROPERTY_PERSON_HAS_EMAIL,                               CTSVC_SEARCH_PROPERTY_ALL,      "has_email"},
988         // email
989         {CTSVC_PROPERTY_EMAIL_ID,                                               CTSVC_SEARCH_PROPERTY_ALL,      "email_id"},
990         {CTSVC_PROPERTY_EMAIL_TYPE,                                     CTSVC_SEARCH_PROPERTY_PROJECTION,       "type"},
991         {CTSVC_PROPERTY_EMAIL_LABEL,                                    CTSVC_SEARCH_PROPERTY_PROJECTION,       "label"},
992         {CTSVC_PROPERTY_DATA_IS_PRIMARY_DEFAULT,                CTSVC_SEARCH_PROPERTY_ALL,      "is_primary_default"},
993         {CTSVC_PROPERTY_EMAIL_EMAIL,                                    CTSVC_SEARCH_PROPERTY_ALL,      "email"},
994 };
995
996 const property_info_s __property_person_grouprel[] = {  // _contacts_person_grouprel
997         {CTSVC_PROPERTY_PERSON_ID,                                              CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
998         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME,                    CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
999         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,              CTSVC_SEARCH_PROPERTY_PROJECTION,       NULL},  // "dispaly_name" or "reverse_dispaly_name"
1000         {CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,              CTSVC_SEARCH_PROPERTY_PROJECTION,       "name_contact_id"},
1001         {CTSVC_PROPERTY_PERSON_RINGTONE,                                CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
1002         {CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,         CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
1003         {CTSVC_PROPERTY_PERSON_VIBRATION,                               CTSVC_SEARCH_PROPERTY_PROJECTION,       "vibration"},
1004         {CTSVC_PROPERTY_PERSON_STATUS,                                  CTSVC_SEARCH_PROPERTY_PROJECTION,       "status"},
1005         {CTSVC_PROPERTY_PERSON_IS_FAVORITE,                     CTSVC_SEARCH_PROPERTY_ALL,      "is_favorite"},
1006         {CTSVC_PROPERTY_PERSON_LINK_COUNT,                              CTSVC_SEARCH_PROPERTY_ALL,      "link_count"},
1007         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID1,                     CTSVC_SEARCH_PROPERTY_ALL,      "account_id1"},
1008         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID2,                     CTSVC_SEARCH_PROPERTY_ALL,      "account_id2"},
1009         {CTSVC_PROPERTY_PERSON_ACCOUNT_ID3,                     CTSVC_SEARCH_PROPERTY_ALL,      "account_id3"},
1010         {CTSVC_PROPERTY_PERSON_ADDRESSBOOK_IDS,         CTSVC_SEARCH_PROPERTY_PROJECTION,       "addressbook_ids"},
1011         {CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,                 CTSVC_SEARCH_PROPERTY_ALL,      "has_phonenumber"},
1012         {CTSVC_PROPERTY_PERSON_HAS_EMAIL,                               CTSVC_SEARCH_PROPERTY_ALL,      "has_email"},
1013         // contacts
1014         {CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,                         CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
1015         // group relation
1016         {CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID,                        CTSVC_SEARCH_PROPERTY_ALL,      "group_id"},
1017         // addressbook
1018         {CTSVC_PROPERTY_ADDRESSBOOK_NAME,                               CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_name"},
1019         {CTSVC_PROPERTY_ADDRESSBOOK_MODE,                               CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_mode"},
1020         {CTSVC_PROPERTY_GROUP_RELATION_CONTACT_ID,                      CTSVC_SEARCH_PROPERTY_PROJECTION,       "contact_id"},
1021 };
1022
1023 const property_info_s __property_person_phonelog[] = {  // _contacts_person_phone_log
1024         {CTSVC_PROPERTY_PERSON_ID,                                              CTSVC_SEARCH_PROPERTY_ALL,      "id"},
1025         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME,                    CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
1026         {CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,         CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
1027         // phonelog
1028         {CTSVC_PROPERTY_PHONELOG_ID,                            CTSVC_SEARCH_PROPERTY_ALL,      "phonelog_id"},
1029         {CTSVC_PROPERTY_PHONELOG_ADDRESS,                       CTSVC_SEARCH_PROPERTY_ALL,      "address"},
1030         {CTSVC_PROPERTY_DATA_DATA1,                                     CTSVC_SEARCH_PROPERTY_PROJECTION,       "address_type"},
1031         {CTSVC_PROPERTY_PHONELOG_LOG_TIME,                      CTSVC_SEARCH_PROPERTY_ALL,      "log_time"},
1032         {CTSVC_PROPERTY_PHONELOG_LOG_TYPE,                      CTSVC_SEARCH_PROPERTY_ALL,      "log_type"},
1033         {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA1,           CTSVC_SEARCH_PROPERTY_PROJECTION,       "data1"},               // duration
1034         {CTSVC_PROPERTY_PHONELOG_EXTRA_DATA2,           CTSVC_SEARCH_PROPERTY_PROJECTION,       "data2"},               // message_id
1035 };
1036
1037 const property_info_s __property_person_usage[] = {     // _contacts_person_usage
1038         {CTSVC_PROPERTY_PERSON_ID,                                              CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
1039         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME,                    CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
1040         {CTSVC_PROPERTY_PERSON_DISPLAY_NAME_INDEX,                              CTSVC_SEARCH_PROPERTY_PROJECTION,       NULL},  // "dispaly_name" or "reverse_dispaly_name"
1041         {CTSVC_PROPERTY_PERSON_DISPLAY_CONTACT_ID,              CTSVC_SEARCH_PROPERTY_PROJECTION,       "name_contact_id"},
1042         {CTSVC_PROPERTY_PERSON_RINGTONE,                                CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
1043         {CTSVC_PROPERTY_PERSON_IMAGE_THUMBNAIL,         CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
1044         {CTSVC_PROPERTY_PERSON_VIBRATION,                               CTSVC_SEARCH_PROPERTY_PROJECTION,       "vibration"},
1045         {CTSVC_PROPERTY_PERSON_IS_FAVORITE,                     CTSVC_SEARCH_PROPERTY_ALL,      "is_favorite"},
1046         {CTSVC_PROPERTY_PERSON_HAS_PHONENUMBER,                 CTSVC_SEARCH_PROPERTY_ALL,      "has_phonenumber"},
1047         {CTSVC_PROPERTY_PERSON_HAS_EMAIL,                               CTSVC_SEARCH_PROPERTY_ALL,      "has_email"},
1048         // contact_stat
1049         {CTSVC_PROPERTY_PERSON_USAGE_TYPE,                              CTSVC_SEARCH_PROPERTY_ALL,      "usage_type"},
1050         {CTSVC_PROPERTY_PERSON_TIMES_USED,                              CTSVC_SEARCH_PROPERTY_ALL,      "times_used"},
1051 };
1052
1053 const property_info_s __property_contact_number[] = {           // _contacts_contact_number
1054         {CTSVC_PROPERTY_CONTACT_ID,                                     CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
1055         {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,           CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
1056         {CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,                 CTSVC_SEARCH_PROPERTY_PROJECTION,       "display_name_source"},
1057         {CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
1058         {CTSVC_PROPERTY_CONTACT_PERSON_ID,                      CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
1059         {CTSVC_PROPERTY_CONTACT_RINGTONE,                       CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
1060         {CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,        CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
1061         // number
1062         {CTSVC_PROPERTY_NUMBER_ID,                                      CTSVC_SEARCH_PROPERTY_ALL,      "number_id"},
1063         {CTSVC_PROPERTY_NUMBER_TYPE,                            CTSVC_SEARCH_PROPERTY_PROJECTION,       "type"},
1064         {CTSVC_PROPERTY_NUMBER_LABEL,                           CTSVC_SEARCH_PROPERTY_PROJECTION,       "label"},
1065         {CTSVC_PROPERTY_NUMBER_IS_DEFAULT,                      CTSVC_SEARCH_PROPERTY_ALL,      "is_default"},
1066         {CTSVC_PROPERTY_NUMBER_NUMBER,                          CTSVC_SEARCH_PROPERTY_ALL,      "number"},
1067         {CTSVC_PROPERTY_NUMBER_NUMBER_FILTER,           CTSVC_SEARCH_PROPERTY_FILTER,   "normalized_number"},
1068 };
1069
1070 const property_info_s __property_contact_email[] = {            // _contacts_contact_email
1071         {CTSVC_PROPERTY_CONTACT_ID,                                     CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
1072         {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,           CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
1073         {CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,                 CTSVC_SEARCH_PROPERTY_ALL,      "display_name_source"},
1074         {CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
1075         {CTSVC_PROPERTY_CONTACT_PERSON_ID,                      CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
1076         {CTSVC_PROPERTY_CONTACT_RINGTONE,                       CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
1077         {CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,                CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
1078         // email
1079         {CTSVC_PROPERTY_EMAIL_ID,                                               CTSVC_SEARCH_PROPERTY_ALL,      "email_id"},
1080         {CTSVC_PROPERTY_EMAIL_TYPE,                                             CTSVC_SEARCH_PROPERTY_PROJECTION,       "type"},
1081         {CTSVC_PROPERTY_EMAIL_LABEL,                                    CTSVC_SEARCH_PROPERTY_PROJECTION,       "label"},
1082         {CTSVC_PROPERTY_EMAIL_IS_DEFAULT,                               CTSVC_SEARCH_PROPERTY_ALL,      "is_default"},
1083         {CTSVC_PROPERTY_EMAIL_EMAIL,                                    CTSVC_SEARCH_PROPERTY_ALL,      "email"},
1084 };
1085
1086 const property_info_s __property_contact_grouprel[] = {         // _contacts_contact_grouprel
1087         {CTSVC_PROPERTY_CONTACT_ID,                                     CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
1088         {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,           CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
1089         {CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,                 CTSVC_SEARCH_PROPERTY_PROJECTION,       "display_name_source"},
1090         {CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
1091         {CTSVC_PROPERTY_CONTACT_PERSON_ID,                      CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
1092         {CTSVC_PROPERTY_CONTACT_RINGTONE,                       CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
1093         {CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,                CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
1094         // group relation
1095         {CTSVC_PROPERTY_GROUP_RELATION_GROUP_ID,                CTSVC_SEARCH_PROPERTY_ALL,      "group_id"},
1096         {CTSVC_PROPERTY_GROUP_RELATION_GROUP_NAME,              CTSVC_SEARCH_PROPERTY_PROJECTION,       "group_name"},
1097 };
1098
1099 const property_info_s __property_contact_activity[] = {         // _contacts_contact_activity
1100         {CTSVC_PROPERTY_CONTACT_ID,                                     CTSVC_SEARCH_PROPERTY_ALL,      "contact_id"},
1101         {CTSVC_PROPERTY_CONTACT_DISPLAY_NAME,           CTSVC_SEARCH_PROPERTY_ALL,      NULL},  // "dispaly_name" or "reverse_dispaly_name"
1102         {CTSVC_PROPERTY_CONTACT_DISPLAY_SOURCE_DATA_ID,                 CTSVC_SEARCH_PROPERTY_PROJECTION,       "display_name_source"},
1103         {CTSVC_PROPERTY_CONTACT_ADDRESSBOOK_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "addressbook_id"},
1104         {CTSVC_PROPERTY_CONTACT_PERSON_ID,                      CTSVC_SEARCH_PROPERTY_ALL,      "person_id"},
1105         {CTSVC_PROPERTY_CONTACT_RINGTONE,                       CTSVC_SEARCH_PROPERTY_PROJECTION,       "ringtone_path"},
1106         {CTSVC_PROPERTY_CONTACT_IMAGE_THUMBNAIL,                CTSVC_SEARCH_PROPERTY_PROJECTION,       "image_thumbnail_path"},
1107         {CTSVC_PROPERTY_ACTIVITY_ID,                            CTSVC_SEARCH_PROPERTY_ALL,      "activity_id"},
1108         {CTSVC_PROPERTY_ACTIVITY_SOURCE_NAME,           CTSVC_SEARCH_PROPERTY_ALL,      "source_name"},
1109         {CTSVC_PROPERTY_ACTIVITY_STATUS,                        CTSVC_SEARCH_PROPERTY_PROJECTION,       "status"},
1110         {CTSVC_PROPERTY_ACTIVITY_TIMESTAMP,             CTSVC_SEARCH_PROPERTY_ALL,      "timestamp"},
1111         {CTSVC_PROPERTY_ACTIVITY_SYNC_DATA1,            CTSVC_SEARCH_PROPERTY_PROJECTION,       "sync_data1"},
1112         {CTSVC_PROPERTY_ACTIVITY_SYNC_DATA2,            CTSVC_SEARCH_PROPERTY_PROJECTION,       "sync_data2"},
1113         {CTSVC_PROPERTY_ACTIVITY_SYNC_DATA3,            CTSVC_SEARCH_PROPERTY_PROJECTION,       "sync_data3"},
1114         {CTSVC_PROPERTY_ACTIVITY_SYNC_DATA4,            CTSVC_SEARCH_PROPERTY_PROJECTION,       "sync_data4"},
1115         {CTSVC_PROPERTY_ADDRESSBOOK_ACCOUNT_ID,         CTSVC_SEARCH_PROPERTY_ALL,      "account_id"},
1116 };
1117
1118 const property_info_s __property_phonelog_number[] = {          //_contacts_phone_log_number
1119         {CTSVC_PROPERTY_PHONELOG_ADDRESS,                       CTSVC_SEARCH_PROPERTY_ALL,      "number"},
1120 };
1121
1122 const property_info_s __property_phonelog_stat[] = {            //_contacts_phone_log_stat
1123         {CTSVC_PROPERTY_PHONELOG_STAT_LOG_COUNT,                CTSVC_SEARCH_PROPERTY_PROJECTION,       "log_count"},
1124         {CTSVC_PROPERTY_PHONELOG_STAT_LOG_TYPE,                 CTSVC_SEARCH_PROPERTY_ALL,      "log_type"},
1125 };
1126
1127 typedef struct {
1128         char *view_uri;
1129         ctsvc_record_type_e type;
1130         property_info_s *properties;
1131         unsigned int property_count;
1132 }view_uri_info_s;
1133
1134 #define PTR_COUNT(X)    (void*)(X), sizeof(X)/sizeof(property_info_s)
1135
1136 static const view_uri_info_s __tables[] = {
1137         {CTSVC_VIEW_URI_ADDRESSBOOK,    CTSVC_RECORD_ADDRESSBOOK,               PTR_COUNT(__property_addressbook)},
1138         {CTSVC_VIEW_URI_GROUP,                  CTSVC_RECORD_GROUP,                             PTR_COUNT(__property_group)},
1139         {CTSVC_VIEW_URI_PERSON,                 CTSVC_RECORD_PERSON,                    PTR_COUNT(__property_person)},
1140         {CTSVC_VIEW_URI_SIMPLE_CONTACT, CTSVC_RECORD_SIMPLE_CONTACT,    PTR_COUNT(__property_simple_contact)},
1141         {CTSVC_VIEW_URI_CONTACT,                CTSVC_RECORD_CONTACT,                   PTR_COUNT(__property_contact)},
1142         {CTSVC_VIEW_URI_MY_PROFILE,             CTSVC_RECORD_MY_PROFILE,                PTR_COUNT(__property_my_profile)},
1143         {CTSVC_VIEW_URI_ACTIVITY,               CTSVC_RECORD_ACTIVITY,                  PTR_COUNT(__property_activity)},
1144         {CTSVC_VIEW_URI_ACTIVITY_PHOTO, CTSVC_RECORD_ACTIVITY_PHOTO,    PTR_COUNT(__property_activity_photo)},
1145         {CTSVC_VIEW_URI_PHONELOG,               CTSVC_RECORD_PHONELOG,                  PTR_COUNT(__property_phonelog)},
1146         {CTSVC_VIEW_URI_SPEEDDIAL,              CTSVC_RECORD_SPEEDDIAL,                 PTR_COUNT(__property_speeddial)},
1147         {CTSVC_VIEW_URI_SDN,                    CTSVC_RECORD_SDN,                               PTR_COUNT(__property_snd)},
1148
1149         {CTSVC_VIEW_URI_NAME,                   CTSVC_RECORD_NAME,                              PTR_COUNT(__property_name)},
1150         {CTSVC_VIEW_URI_COMPANY,                CTSVC_RECORD_COMPANY,                   PTR_COUNT(__property_company)},
1151         {CTSVC_VIEW_URI_NUMBER,         CTSVC_RECORD_NUMBER,                    PTR_COUNT(__property_number)},
1152         {CTSVC_VIEW_URI_EMAIL,                  CTSVC_RECORD_EMAIL,                             PTR_COUNT(__property_email)},
1153         {CTSVC_VIEW_URI_URL,                    CTSVC_RECORD_URL,                               PTR_COUNT(__property_url)},
1154         {CTSVC_VIEW_URI_ADDRESS,                CTSVC_RECORD_ADDRESS,                   PTR_COUNT(__property_address)},
1155         {CTSVC_VIEW_URI_PROFILE,                CTSVC_RECORD_PROFILE,                   PTR_COUNT(__property_profile)},
1156         {CTSVC_VIEW_URI_RELATIONSHIP,   CTSVC_RECORD_RELATIONSHIP,              PTR_COUNT(__property_relationship)},
1157         {CTSVC_VIEW_URI_IMAGE,                  CTSVC_RECORD_IMAGE,                             PTR_COUNT(__property_image)},
1158         {CTSVC_VIEW_URI_NOTE,                   CTSVC_RECORD_NOTE,                              PTR_COUNT(__property_note)},
1159         {CTSVC_VIEW_URI_NICKNAME,               CTSVC_RECORD_NICKNAME,                  PTR_COUNT(__property_nickname)},
1160         {CTSVC_VIEW_URI_EVENT,                  CTSVC_RECORD_EVENT,                             PTR_COUNT(__property_event)},
1161         {CTSVC_VIEW_URI_MESSENGER,              CTSVC_RECORD_MESSENGER,                 PTR_COUNT(__property_messenger)},
1162         {CTSVC_VIEW_URI_GROUP_RELATION, CTSVC_RECORD_GROUP_RELATION,    PTR_COUNT(__property_group_relation)},
1163         {CTSVC_VIEW_URI_EXTENSION,                      CTSVC_RECORD_EXTENSION,                 PTR_COUNT(__property_extension)},
1164
1165         {CTSVC_VIEW_URI_GROUPS_UPDATED_INFO,  CTSVC_RECORD_UPDATED_INFO, NULL, 0},
1166         {CTSVC_VIEW_URI_GROUPS_MEMBER_UPDATED_INFO,  CTSVC_RECORD_UPDATED_INFO, NULL, 0},
1167         {CTSVC_VIEW_URI_CONTACTS_UPDATED_INFO, CTSVC_RECORD_UPDATED_INFO, NULL, 0},
1168         {CTSVC_VIEW_URI_MY_PROFILE_UPDATED_INFO, CTSVC_RECORD_UPDATED_INFO,  NULL, 0},
1169         {CTSVC_VIEW_URI_GROUPRELS_UPDATED_INFO, CTSVC_RECORD_RESULT, NULL, 0},
1170
1171         {CTSVC_VIEW_URI_READ_ONLY_PERSON_CONTACT,               CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_contact)},
1172         {CTSVC_VIEW_URI_READ_ONLY_PERSON_NUMBER,                CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_number)},
1173         {CTSVC_VIEW_URI_READ_ONLY_PERSON_EMAIL,         CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_email)},
1174         {CTSVC_VIEW_URI_READ_ONLY_PERSON_GROUP,         CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_grouprel)},
1175         {CTSVC_VIEW_URI_READ_ONLY_PERSON_PHONELOG,                              CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_phonelog)},
1176         {CTSVC_VIEW_URI_READ_ONLY_PERSON_USAGE,                         CTSVC_RECORD_RESULT, PTR_COUNT(__property_person_usage)},
1177         {CTSVC_VIEW_URI_READ_ONLY_CONTACT_NUMBER,                               CTSVC_RECORD_RESULT, PTR_COUNT(__property_contact_number)},
1178         {CTSVC_VIEW_URI_READ_ONLY_CONTACT_EMAIL,                                CTSVC_RECORD_RESULT, PTR_COUNT(__property_contact_email)},
1179         {CTSVC_VIEW_URI_READ_ONLY_CONTACT_GROUP,                                CTSVC_RECORD_RESULT, PTR_COUNT(__property_contact_grouprel)},
1180         {CTSVC_VIEW_URI_READ_ONLY_CONTACT_ACTIVITY,                     CTSVC_RECORD_RESULT, PTR_COUNT(__property_contact_activity)},
1181         {CTSVC_VIEW_URI_READ_ONLY_PHONELOG_NUMBER,                              CTSVC_RECORD_RESULT, PTR_COUNT(__property_phonelog_number)},
1182         {CTSVC_VIEW_URI_READ_ONLY_PHONELOG_STAT,                                CTSVC_RECORD_RESULT, PTR_COUNT(__property_phonelog_stat)},
1183 };
1184
1185 static GHashTable *__ctsvc_view_uri_hash = NULL;
1186
1187 void ctsvc_view_uri_init()
1188 {
1189         int i;
1190         int count;
1191         if (__ctsvc_view_uri_hash)
1192                 return;
1193
1194         __ctsvc_view_uri_hash = g_hash_table_new(g_str_hash, g_str_equal);
1195
1196         i = 0;
1197         count = sizeof(__tables)/sizeof(view_uri_info_s);
1198         for (i=0;i<count;i++)
1199                 g_hash_table_insert(__ctsvc_view_uri_hash, __tables[i].view_uri, GINT_TO_POINTER(&__tables[i]));
1200 }
1201
1202 void ctsvc_view_uri_deinit()
1203 {
1204 #if 0
1205         if (NULL == __ctsvc_view_uri_hash)
1206                 ASSERT_NOT_REACHED("__ctsvc_view_uri_hash is NULL");
1207
1208         g_hash_table_destroy(__ctsvc_view_uri_hash);
1209         __ctsvc_view_uri_hash = NULL;
1210 #endif
1211 }
1212
1213 ctsvc_record_type_e ctsvc_view_get_record_type(const char* view_uri)
1214 {
1215         view_uri_info_s* view_uri_info = NULL;
1216         ctsvc_record_type_e type = CTSVC_RECORD_INVALID;
1217
1218         if (NULL == __ctsvc_view_uri_hash) {
1219                 ASSERT_NOT_REACHED("__ctsvc_view_uri_hash is NULL");
1220         }
1221
1222         view_uri_info = g_hash_table_lookup(__ctsvc_view_uri_hash, view_uri);
1223         if (view_uri_info)
1224                 type = view_uri_info->type;
1225
1226         return type;
1227 }
1228
1229 const char* ctsvc_view_get_uri( const char* view_uri )
1230 {
1231         view_uri_info_s* view_uri_info = NULL;
1232
1233         if (NULL == __ctsvc_view_uri_hash) {
1234                 ASSERT_NOT_REACHED("__ctsvc_view_uri_hash is NULL");
1235         }
1236
1237         view_uri_info = g_hash_table_lookup(__ctsvc_view_uri_hash, view_uri);
1238         if (view_uri_info)
1239                 return view_uri_info->view_uri;
1240
1241         return NULL;
1242 }
1243
1244 const property_info_s* ctsvc_view_get_all_property_infos(const char *view_uri, unsigned int *count)
1245 {
1246         view_uri_info_s* view_uri_info = NULL;
1247
1248         if (NULL == __ctsvc_view_uri_hash) {
1249                 ASSERT_NOT_REACHED("__ctsvc_view_uri_hash is NULL");
1250         }
1251
1252         view_uri_info = g_hash_table_lookup(__ctsvc_view_uri_hash, view_uri);
1253         if (view_uri_info) {
1254                 *count = view_uri_info->property_count;
1255                 return view_uri_info->properties;
1256         }
1257
1258         return NULL;
1259 }
1260