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