723a571522cd5868ec3ad2190a96d996553ed6b5
[platform/core/pim/calendar-service.git] / common / cal_view.c
1 /*
2  * Calendar Service
3  *
4  * Copyright (c) 2012 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  *
18  */
19
20 #include <glib.h>
21 #include <stdlib.h>
22
23 #include "cal_internal.h"
24 #include "cal_typedef.h"
25 #include "cal_view.h"
26 #include "cal_mutex.h"
27
28 API const _calendar_book_property_ids   _calendar_book = {
29         ._uri = CALENDAR_VIEW_CALENDAR,
30         .id = CAL_PROPERTY_CALENDAR_ID,
31         .uid = CAL_PROPERTY_CALENDAR_UID,
32         .name = CAL_PROPERTY_CALENDAR_NAME,
33         .description = CAL_PROPERTY_CALENDAR_DESCRIPTION,
34         .color = CAL_PROPERTY_CALENDAR_COLOR,
35         .location = CAL_PROPERTY_CALENDAR_LOCATION,
36         .visibility = CAL_PROPERTY_CALENDAR_VISIBILITY,
37         .sync_event = CAL_PROPERTY_CALENDAR_SYNC_EVENT,
38         .account_id = CAL_PROPERTY_CALENDAR_ACCOUNT_ID,
39         .store_type = CAL_PROPERTY_CALENDAR_STORE_TYPE,
40         .sync_data1 = CAL_PROPERTY_CALENDAR_SYNC_DATA1,
41         .sync_data2 = CAL_PROPERTY_CALENDAR_SYNC_DATA2,
42         .sync_data3 = CAL_PROPERTY_CALENDAR_SYNC_DATA3,
43         .sync_data4 = CAL_PROPERTY_CALENDAR_SYNC_DATA4,
44         .mode = CAL_PROPERTY_CALENDAR_MODE
45 };
46
47 API const _calendar_event_property_ids   _calendar_event = {
48         ._uri = CALENDAR_VIEW_EVENT,
49         .id = CAL_PROPERTY_EVENT_ID,
50         .calendar_book_id = CAL_PROPERTY_EVENT_CALENDAR_ID,
51         .summary = CAL_PROPERTY_EVENT_SUMMARY,
52         .description = CAL_PROPERTY_EVENT_DESCRIPTION,
53         .location = CAL_PROPERTY_EVENT_LOCATION,
54         .categories = CAL_PROPERTY_EVENT_CATEGORIES,
55         .exdate = CAL_PROPERTY_EVENT_EXDATE,
56         .event_status = CAL_PROPERTY_EVENT_EVENT_STATUS,
57         .priority = CAL_PROPERTY_EVENT_PRIORITY,
58         .timezone = CAL_PROPERTY_EVENT_TIMEZONE,
59         .person_id = CAL_PROPERTY_EVENT_CONTACT_ID,
60         .busy_status = CAL_PROPERTY_EVENT_BUSY_STATUS,
61         .sensitivity = CAL_PROPERTY_EVENT_SENSITIVITY,
62         .uid = CAL_PROPERTY_EVENT_UID,
63         .organizer_name = CAL_PROPERTY_EVENT_ORGANIZER_NAME,
64         .organizer_email = CAL_PROPERTY_EVENT_ORGANIZER_EMAIL,
65         .meeting_status = CAL_PROPERTY_EVENT_MEETING_STATUS,
66         .original_event_id = CAL_PROPERTY_EVENT_ORIGINAL_EVENT_ID,
67         .latitude = CAL_PROPERTY_EVENT_LATITUDE,
68         .longitude = CAL_PROPERTY_EVENT_LONGITUDE,
69         .email_id = CAL_PROPERTY_EVENT_EMAIL_ID,
70         .created_time = CAL_PROPERTY_EVENT_CREATED_TIME,
71         .last_modified_time = CAL_PROPERTY_EVENT_LAST_MODIFIED_TIME,
72         .is_deleted = CAL_PROPERTY_EVENT_IS_DELETED,
73         .freq = CAL_PROPERTY_EVENT_FREQ,
74         .range_type = CAL_PROPERTY_EVENT_RANGE_TYPE,
75         .until_time = CAL_PROPERTY_EVENT_UNTIL,
76         .count = CAL_PROPERTY_EVENT_COUNT,
77         .interval = CAL_PROPERTY_EVENT_INTERVAL,
78         .bysecond = CAL_PROPERTY_EVENT_BYSECOND,
79         .byminute = CAL_PROPERTY_EVENT_BYMINUTE,
80         .byhour = CAL_PROPERTY_EVENT_BYHOUR,
81         .byday = CAL_PROPERTY_EVENT_BYDAY,
82         .bymonthday = CAL_PROPERTY_EVENT_BYMONTHDAY,
83         .byyearday = CAL_PROPERTY_EVENT_BYYEARDAY,
84         .byweekno = CAL_PROPERTY_EVENT_BYWEEKNO,
85         .bymonth = CAL_PROPERTY_EVENT_BYMONTH,
86         .bysetpos = CAL_PROPERTY_EVENT_BYSETPOS,
87         .wkst = CAL_PROPERTY_EVENT_WKST,
88         .recurrence_id = CAL_PROPERTY_EVENT_RECURRENCE_ID,
89         .rdate = CAL_PROPERTY_EVENT_RDATE,
90         .has_attendee = CAL_PROPERTY_EVENT_HAS_ATTENDEE,
91         .has_alarm = CAL_PROPERTY_EVENT_HAS_ALARM,
92         .calendar_system_type = CAL_PROPERTY_EVENT_CALENDAR_SYSTEM_TYPE,
93         .sync_data1 = CAL_PROPERTY_EVENT_SYNC_DATA1,
94         .sync_data2 = CAL_PROPERTY_EVENT_SYNC_DATA2,
95         .sync_data3 = CAL_PROPERTY_EVENT_SYNC_DATA3,
96         .sync_data4 = CAL_PROPERTY_EVENT_SYNC_DATA4,
97         .start_time = CAL_PROPERTY_EVENT_START,
98         .start_tzid = CAL_PROPERTY_EVENT_START_TZID,
99         .end_time = CAL_PROPERTY_EVENT_END,
100         .end_tzid = CAL_PROPERTY_EVENT_END_TZID,
101         .calendar_alarm = CAL_PROPERTY_EVENT_CALENDAR_ALARM,
102         .calendar_attendee = CAL_PROPERTY_EVENT_CALENDAR_ATTENDEE,
103         .exception = CAL_PROPERTY_EVENT_EXCEPTION,
104         .extended = CAL_PROPERTY_EVENT_EXTENDED,
105         .is_allday = CAL_PROPERTY_EVENT_IS_ALLDAY
106 };
107
108 API const _calendar_todo_property_ids   _calendar_todo = {
109         ._uri = CALENDAR_VIEW_TODO,
110         .id = CAL_PROPERTY_TODO_ID,
111         .calendar_book_id = CAL_PROPERTY_TODO_CALENDAR_ID,
112         .summary = CAL_PROPERTY_TODO_SUMMARY,
113         .description = CAL_PROPERTY_TODO_DESCRIPTION,
114         .location = CAL_PROPERTY_TODO_LOCATION,
115         .categories = CAL_PROPERTY_TODO_CATEGORIES,
116         .todo_status = CAL_PROPERTY_TODO_TODO_STATUS,
117         .priority = CAL_PROPERTY_TODO_PRIORITY,
118         .sensitivity = CAL_PROPERTY_TODO_SENSITIVITY,
119         .uid = CAL_PROPERTY_TODO_UID,
120         .latitude = CAL_PROPERTY_TODO_LATITUDE,
121         .longitude = CAL_PROPERTY_TODO_LONGITUDE,
122         .created_time = CAL_PROPERTY_TODO_CREATED_TIME,
123         .last_modified_time = CAL_PROPERTY_TODO_LAST_MODIFIED_TIME,
124         .completed_time = CAL_PROPERTY_TODO_COMPLETED_TIME,
125         .progress = CAL_PROPERTY_TODO_PROGRESS,
126         .is_deleted = CAL_PROPERTY_TODO_IS_DELETED,
127         .freq = CAL_PROPERTY_TODO_FREQ,
128         .range_type = CAL_PROPERTY_TODO_RANGE_TYPE,
129         .until_time = CAL_PROPERTY_TODO_UNTIL,
130         .count = CAL_PROPERTY_TODO_COUNT,
131         .interval = CAL_PROPERTY_TODO_INTERVAL,
132         .bysecond = CAL_PROPERTY_TODO_BYSECOND,
133         .byminute = CAL_PROPERTY_TODO_BYMINUTE,
134         .byhour = CAL_PROPERTY_TODO_BYHOUR,
135         .byday = CAL_PROPERTY_TODO_BYDAY,
136         .bymonthday = CAL_PROPERTY_TODO_BYMONTHDAY,
137         .byyearday = CAL_PROPERTY_TODO_BYYEARDAY,
138         .byweekno = CAL_PROPERTY_TODO_BYWEEKNO,
139         .bymonth = CAL_PROPERTY_TODO_BYMONTH,
140         .bysetpos = CAL_PROPERTY_TODO_BYSETPOS,
141         .wkst = CAL_PROPERTY_TODO_WKST,
142         .has_alarm = CAL_PROPERTY_TODO_HAS_ALARM,
143         .sync_data1 = CAL_PROPERTY_TODO_SYNC_DATA1,
144         .sync_data2 = CAL_PROPERTY_TODO_SYNC_DATA2,
145         .sync_data3 = CAL_PROPERTY_TODO_SYNC_DATA3,
146         .sync_data4 = CAL_PROPERTY_TODO_SYNC_DATA4,
147         .start_time = CAL_PROPERTY_TODO_START,
148         .start_tzid = CAL_PROPERTY_TODO_START_TZID,
149         .due_time = CAL_PROPERTY_TODO_DUE,
150         .due_tzid = CAL_PROPERTY_TODO_DUE_TZID,
151         .calendar_alarm = CAL_PROPERTY_TODO_CALENDAR_ALARM,
152         .organizer_name = CAL_PROPERTY_TODO_ORGANIZER_NAME,
153         .organizer_email = CAL_PROPERTY_TODO_ORGANIZER_EMAIL,
154         .has_attendee = CAL_PROPERTY_TODO_HAS_ATTENDEE,
155         .calendar_attendee = CAL_PROPERTY_TODO_CALENDAR_ATTENDEE,
156         .extended = CAL_PROPERTY_TODO_EXTENDED,
157         .is_allday = CAL_PROPERTY_TODO_IS_ALLDAY
158 };
159
160 API const _calendar_timezone_property_ids   _calendar_timezone = {
161         ._uri = CALENDAR_VIEW_TIMEZONE,
162         .id = CAL_PROPERTY_TIMEZONE_ID,
163         .calendar_book_id = CAL_PROPERTY_TIMEZONE_CALENDAR_ID,
164         .tz_offset_from_gmt = CAL_PROPERTY_TIMEZONE_TZ_OFFSET_FROM_GMT,
165         .standard_name = CAL_PROPERTY_TIMEZONE_STANDARD_NAME,
166         .standard_start_month = CAL_PROPERTY_TIMEZONE_STD_START_MONTH,
167         .standard_start_position_of_week = CAL_PROPERTY_TIMEZONE_STD_START_POSITION_OF_WEEK,
168         .standard_start_day = CAL_PROPERTY_TIMEZONE_STD_START_DAY,
169         .standard_start_hour = CAL_PROPERTY_TIMEZONE_STD_START_HOUR,
170         .standard_bias = CAL_PROPERTY_TIMEZONE_STANDARD_BIAS,
171         .day_light_name = CAL_PROPERTY_TIMEZONE_DAY_LIGHT_NAME,
172         .day_light_start_month = CAL_PROPERTY_TIMEZONE_DAY_LIGHT_START_MONTH,
173         .day_light_start_position_of_week = CAL_PROPERTY_TIMEZONE_DAY_LIGHT_START_POSITION_OF_WEEK,
174         .day_light_start_day = CAL_PROPERTY_TIMEZONE_DAY_LIGHT_START_DAY,
175         .day_light_start_hour = CAL_PROPERTY_TIMEZONE_DAY_LIGHT_START_HOUR,
176         .day_light_bias = CAL_PROPERTY_TIMEZONE_DAY_LIGHT_BIAS
177 };
178
179 API const _calendar_attendee_property_ids   _calendar_attendee = {
180         ._uri = CALENDAR_VIEW_ATTENDEE,
181         .parent_id = CAL_PROPERTY_ATTENDEE_PARENT_ID,
182         .number = CAL_PROPERTY_ATTENDEE_NUMBER,
183         .cutype = CAL_PROPERTY_ATTENDEE_CUTYPE,
184         .person_id = CAL_PROPERTY_ATTENDEE_CT_INDEX,
185         .uid = CAL_PROPERTY_ATTENDEE_UID,
186         .group = CAL_PROPERTY_ATTENDEE_GROUP,
187         .email = CAL_PROPERTY_ATTENDEE_EMAIL,
188         .role = CAL_PROPERTY_ATTENDEE_ROLE,
189         .status = CAL_PROPERTY_ATTENDEE_STATUS,
190         .rsvp = CAL_PROPERTY_ATTENDEE_RSVP,
191         .delegatee_uri = CAL_PROPERTY_ATTENDEE_DELEGATEE_URI,
192         .delegator_uri = CAL_PROPERTY_ATTENDEE_DELEGATOR_URI,
193         .name = CAL_PROPERTY_ATTENDEE_NAME,
194         .member = CAL_PROPERTY_ATTENDEE_MEMBER
195 };
196
197 API const _calendar_alarm_property_ids   _calendar_alarm = {
198         ._uri = CALENDAR_VIEW_ALARM,
199         .parent_id = CAL_PROPERTY_ALARM_PARENT_ID,
200         .tick = CAL_PROPERTY_ALARM_TICK,
201         .tick_unit = CAL_PROPERTY_ALARM_TICK_UNIT,
202         .description = CAL_PROPERTY_ALARM_DESCRIPTION,
203         .summary = CAL_PROPERTY_ALARM_SUMMARY,
204         .action = CAL_PROPERTY_ALARM_ACTION,
205         .attach = CAL_PROPERTY_ALARM_ATTACH,
206         .alarm_time = CAL_PROPERTY_ALARM_ALARM,
207 };
208
209 API const _calendar_updated_info_property_ids   _calendar_updated_info = {
210         ._uri = CALENDAR_VIEW_UPDATED_INFO,
211         .id = CAL_PROPERTY_UPDATED_INFO_ID,
212         .calendar_book_id = CAL_PROPERTY_UPDATED_INFO_CALENDAR_ID,
213         .modified_status = CAL_PROPERTY_UPDATED_INFO_TYPE,
214         .version = CAL_PROPERTY_UPDATED_INFO_VERSION
215 };
216
217 API const _calendar_event_calendar_book_property_ids   _calendar_event_calendar_book = {
218         ._uri = CALENDAR_VIEW_EVENT_CALENDAR,
219         .event_id = CAL_PROPERTY_EVENT_ID,
220         .calendar_book_id = CAL_PROPERTY_EVENT_CALENDAR_ID,
221         .summary = CAL_PROPERTY_EVENT_SUMMARY,
222         .description = CAL_PROPERTY_EVENT_DESCRIPTION,
223         .location = CAL_PROPERTY_EVENT_LOCATION,
224         .categories = CAL_PROPERTY_EVENT_CATEGORIES,
225         .exdate = CAL_PROPERTY_EVENT_EXDATE,
226         .event_status = CAL_PROPERTY_EVENT_EVENT_STATUS,
227         .priority = CAL_PROPERTY_EVENT_PRIORITY,
228         .timezone = CAL_PROPERTY_EVENT_TIMEZONE,
229         .person_id = CAL_PROPERTY_EVENT_CONTACT_ID,
230         .busy_status = CAL_PROPERTY_EVENT_BUSY_STATUS,
231         .sensitivity = CAL_PROPERTY_EVENT_SENSITIVITY,
232         .uid = CAL_PROPERTY_EVENT_UID,
233         .organizer_name = CAL_PROPERTY_EVENT_ORGANIZER_NAME,
234         .organizer_email = CAL_PROPERTY_EVENT_ORGANIZER_EMAIL,
235         .meeting_status = CAL_PROPERTY_EVENT_MEETING_STATUS,
236         .original_event_id = CAL_PROPERTY_EVENT_ORIGINAL_EVENT_ID,
237         .latitude = CAL_PROPERTY_EVENT_LATITUDE,
238         .longitude = CAL_PROPERTY_EVENT_LONGITUDE,
239         .email_id = CAL_PROPERTY_EVENT_EMAIL_ID,
240         .created_time = CAL_PROPERTY_EVENT_CREATED_TIME,
241         .last_modified_time = CAL_PROPERTY_EVENT_LAST_MODIFIED_TIME,
242         .freq = CAL_PROPERTY_EVENT_FREQ,
243         .range_type = CAL_PROPERTY_EVENT_RANGE_TYPE,
244         .until_time = CAL_PROPERTY_EVENT_UNTIL,
245         .count = CAL_PROPERTY_EVENT_COUNT,
246         .interval = CAL_PROPERTY_EVENT_INTERVAL,
247         .bysecond = CAL_PROPERTY_EVENT_BYSECOND,
248         .byminute = CAL_PROPERTY_EVENT_BYMINUTE,
249         .byhour = CAL_PROPERTY_EVENT_BYHOUR,
250         .byday = CAL_PROPERTY_EVENT_BYDAY,
251         .bymonthday = CAL_PROPERTY_EVENT_BYMONTHDAY,
252         .byyearday = CAL_PROPERTY_EVENT_BYYEARDAY,
253         .byweekno = CAL_PROPERTY_EVENT_BYWEEKNO,
254         .bymonth = CAL_PROPERTY_EVENT_BYMONTH,
255         .bysetpos = CAL_PROPERTY_EVENT_BYSETPOS,
256         .wkst = CAL_PROPERTY_EVENT_WKST,
257         .recurrence_id = CAL_PROPERTY_EVENT_RECURRENCE_ID,
258         .rdate = CAL_PROPERTY_EVENT_RDATE,
259         .has_attendee = CAL_PROPERTY_EVENT_HAS_ATTENDEE,
260         .has_alarm = CAL_PROPERTY_EVENT_HAS_ALARM,
261         .calendar_system_type = CAL_PROPERTY_EVENT_CALENDAR_SYSTEM_TYPE,
262         .sync_data1 = CAL_PROPERTY_EVENT_SYNC_DATA1,
263         .sync_data2 = CAL_PROPERTY_EVENT_SYNC_DATA2,
264         .sync_data3 = CAL_PROPERTY_EVENT_SYNC_DATA3,
265         .sync_data4 = CAL_PROPERTY_EVENT_SYNC_DATA4,
266         .start_time = CAL_PROPERTY_EVENT_START,
267         .start_tzid = CAL_PROPERTY_EVENT_START_TZID,
268         .end_time = CAL_PROPERTY_EVENT_END,
269         .end_tzid = CAL_PROPERTY_EVENT_END_TZID,
270         .is_allday = CAL_PROPERTY_EVENT_IS_ALLDAY,
271         .calendar_book_visibility = CAL_PROPERTY_CALENDAR_VISIBILITY | CAL_PROPERTY_FLAGS_FILTER,
272         .calendar_book_account_id = CAL_PROPERTY_CALENDAR_ACCOUNT_ID | CAL_PROPERTY_FLAGS_FILTER
273 };
274
275 API const _calendar_todo_calendar_book_property_ids   _calendar_todo_calendar_book = {
276         ._uri = CALENDAR_VIEW_TODO_CALENDAR,
277         .todo_id = CAL_PROPERTY_TODO_ID,
278         .calendar_book_id = CAL_PROPERTY_TODO_CALENDAR_ID,
279         .summary = CAL_PROPERTY_TODO_SUMMARY,
280         .description = CAL_PROPERTY_TODO_DESCRIPTION,
281         .location = CAL_PROPERTY_TODO_LOCATION,
282         .categories = CAL_PROPERTY_TODO_CATEGORIES,
283         .todo_status = CAL_PROPERTY_TODO_TODO_STATUS,
284         .priority = CAL_PROPERTY_TODO_PRIORITY,
285         .sensitivity = CAL_PROPERTY_TODO_SENSITIVITY,
286         .uid = CAL_PROPERTY_TODO_UID,
287         .latitude = CAL_PROPERTY_TODO_LATITUDE,
288         .longitude = CAL_PROPERTY_TODO_LONGITUDE,
289         .created_time = CAL_PROPERTY_TODO_CREATED_TIME,
290         .last_modified_time = CAL_PROPERTY_TODO_LAST_MODIFIED_TIME,
291         .completed_time = CAL_PROPERTY_TODO_COMPLETED_TIME,
292         .progress = CAL_PROPERTY_TODO_PROGRESS,
293         .freq = CAL_PROPERTY_TODO_FREQ,
294         .range_type = CAL_PROPERTY_TODO_RANGE_TYPE,
295         .until_time = CAL_PROPERTY_TODO_UNTIL,
296         .count = CAL_PROPERTY_TODO_COUNT,
297         .interval = CAL_PROPERTY_TODO_INTERVAL,
298         .bysecond = CAL_PROPERTY_TODO_BYSECOND,
299         .byminute = CAL_PROPERTY_TODO_BYMINUTE,
300         .byhour = CAL_PROPERTY_TODO_BYHOUR,
301         .byday = CAL_PROPERTY_TODO_BYDAY,
302         .bymonthday = CAL_PROPERTY_TODO_BYMONTHDAY,
303         .byyearday = CAL_PROPERTY_TODO_BYYEARDAY,
304         .byweekno = CAL_PROPERTY_TODO_BYWEEKNO,
305         .bymonth = CAL_PROPERTY_TODO_BYMONTH,
306         .bysetpos = CAL_PROPERTY_TODO_BYSETPOS,
307         .wkst = CAL_PROPERTY_TODO_WKST,
308         .has_alarm = CAL_PROPERTY_TODO_HAS_ALARM,
309         .sync_data1 = CAL_PROPERTY_TODO_SYNC_DATA1,
310         .sync_data2 = CAL_PROPERTY_TODO_SYNC_DATA2,
311         .sync_data3 = CAL_PROPERTY_TODO_SYNC_DATA3,
312         .sync_data4 = CAL_PROPERTY_TODO_SYNC_DATA4,
313         .start_time = CAL_PROPERTY_TODO_START,
314         .start_tzid = CAL_PROPERTY_TODO_START_TZID,
315         .due_time = CAL_PROPERTY_TODO_DUE,
316         .due_tzid = CAL_PROPERTY_TODO_DUE_TZID,
317         .organizer_name = CAL_PROPERTY_TODO_ORGANIZER_NAME,
318         .organizer_email = CAL_PROPERTY_TODO_ORGANIZER_EMAIL,
319         .has_attendee = CAL_PROPERTY_TODO_HAS_ATTENDEE,
320         .is_allday = CAL_PROPERTY_TODO_IS_ALLDAY,
321         .calendar_book_visibility = CAL_PROPERTY_CALENDAR_VISIBILITY | CAL_PROPERTY_FLAGS_FILTER,
322         .calendar_book_account_id = CAL_PROPERTY_CALENDAR_ACCOUNT_ID | CAL_PROPERTY_FLAGS_FILTER
323 };
324
325 API const _calendar_event_calendar_book_attendee_property_ids   _calendar_event_calendar_book_attendee = {
326         ._uri = CALENDAR_VIEW_EVENT_CALENDAR_ATTENDEE,
327         .event_id = CAL_PROPERTY_EVENT_ID,
328         .calendar_book_id = CAL_PROPERTY_EVENT_CALENDAR_ID,
329         .summary = CAL_PROPERTY_EVENT_SUMMARY,
330         .description = CAL_PROPERTY_EVENT_DESCRIPTION,
331         .location = CAL_PROPERTY_EVENT_LOCATION,
332         .categories = CAL_PROPERTY_EVENT_CATEGORIES,
333         .exdate = CAL_PROPERTY_EVENT_EXDATE,
334         .event_status = CAL_PROPERTY_EVENT_EVENT_STATUS,
335         .priority = CAL_PROPERTY_EVENT_PRIORITY,
336         .timezone = CAL_PROPERTY_EVENT_TIMEZONE,
337         .person_id = CAL_PROPERTY_EVENT_CONTACT_ID,
338         .busy_status = CAL_PROPERTY_EVENT_BUSY_STATUS,
339         .sensitivity = CAL_PROPERTY_EVENT_SENSITIVITY,
340         .uid = CAL_PROPERTY_EVENT_UID,
341         .organizer_name = CAL_PROPERTY_EVENT_ORGANIZER_NAME,
342         .organizer_email = CAL_PROPERTY_EVENT_ORGANIZER_EMAIL,
343         .meeting_status = CAL_PROPERTY_EVENT_MEETING_STATUS,
344         .original_event_id = CAL_PROPERTY_EVENT_ORIGINAL_EVENT_ID,
345         .latitude = CAL_PROPERTY_EVENT_LATITUDE,
346         .longitude = CAL_PROPERTY_EVENT_LONGITUDE,
347         .email_id = CAL_PROPERTY_EVENT_EMAIL_ID,
348         .created_time = CAL_PROPERTY_EVENT_CREATED_TIME,
349         .last_modified_time = CAL_PROPERTY_EVENT_LAST_MODIFIED_TIME,
350         .freq = CAL_PROPERTY_EVENT_FREQ,
351         .range_type = CAL_PROPERTY_EVENT_RANGE_TYPE,
352         .until_time = CAL_PROPERTY_EVENT_UNTIL,
353         .count = CAL_PROPERTY_EVENT_COUNT,
354         .interval = CAL_PROPERTY_EVENT_INTERVAL,
355         .bysecond = CAL_PROPERTY_EVENT_BYSECOND,
356         .byminute = CAL_PROPERTY_EVENT_BYMINUTE,
357         .byhour = CAL_PROPERTY_EVENT_BYHOUR,
358         .byday = CAL_PROPERTY_EVENT_BYDAY,
359         .bymonthday = CAL_PROPERTY_EVENT_BYMONTHDAY,
360         .byyearday = CAL_PROPERTY_EVENT_BYYEARDAY,
361         .byweekno = CAL_PROPERTY_EVENT_BYWEEKNO,
362         .bymonth = CAL_PROPERTY_EVENT_BYMONTH,
363         .bysetpos = CAL_PROPERTY_EVENT_BYSETPOS,
364         .wkst = CAL_PROPERTY_EVENT_WKST,
365         .recurrence_id = CAL_PROPERTY_EVENT_RECURRENCE_ID,
366         .rdate = CAL_PROPERTY_EVENT_RDATE,
367         .has_attendee = CAL_PROPERTY_EVENT_HAS_ATTENDEE,
368         .has_alarm = CAL_PROPERTY_EVENT_HAS_ALARM,
369         .calendar_system_type = CAL_PROPERTY_EVENT_CALENDAR_SYSTEM_TYPE,
370         .sync_data1 = CAL_PROPERTY_EVENT_SYNC_DATA1,
371         .sync_data2 = CAL_PROPERTY_EVENT_SYNC_DATA2,
372         .sync_data3 = CAL_PROPERTY_EVENT_SYNC_DATA3,
373         .sync_data4 = CAL_PROPERTY_EVENT_SYNC_DATA4,
374         .start_time = CAL_PROPERTY_EVENT_START,
375         .start_tzid = CAL_PROPERTY_EVENT_START_TZID,
376         .end_time = CAL_PROPERTY_EVENT_END,
377         .end_tzid = CAL_PROPERTY_EVENT_END_TZID,
378         .is_allday = CAL_PROPERTY_EVENT_IS_ALLDAY,
379         .calendar_book_visibility = CAL_PROPERTY_CALENDAR_VISIBILITY | CAL_PROPERTY_FLAGS_FILTER,
380         .calendar_book_account_id = CAL_PROPERTY_CALENDAR_ACCOUNT_ID | CAL_PROPERTY_FLAGS_FILTER,
381         .attendee_email = CAL_PROPERTY_ATTENDEE_EMAIL | CAL_PROPERTY_FLAGS_FILTER,
382         .attendee_name = CAL_PROPERTY_ATTENDEE_NAME | CAL_PROPERTY_FLAGS_FILTER,
383         .attendee_member = CAL_PROPERTY_ATTENDEE_MEMBER | CAL_PROPERTY_FLAGS_FILTER
384 };
385
386 API const _calendar_instance_utime_calendar_book_property_ids   _calendar_instance_utime_calendar_book = {
387         ._uri = CALENDAR_VIEW_INSTANCE_UTIME_CALENDAR,
388         .event_id = CAL_PROPERTY_INSTANCE_NORMAL_EVENT_ID,
389         .start_time = CAL_PROPERTY_INSTANCE_NORMAL_START,
390         .end_time = CAL_PROPERTY_INSTANCE_NORMAL_END,
391         .summary = CAL_PROPERTY_INSTANCE_NORMAL_SUMMARY,
392         .location = CAL_PROPERTY_INSTANCE_NORMAL_LOCATION,
393         .calendar_book_id = CAL_PROPERTY_INSTANCE_NORMAL_CALENDAR_ID,
394         .description = CAL_PROPERTY_INSTANCE_NORMAL_DESCRIPTION,
395         .busy_status = CAL_PROPERTY_INSTANCE_NORMAL_BUSY_STATUS,
396         .event_status = CAL_PROPERTY_INSTANCE_NORMAL_EVENT_STATUS,
397         .priority = CAL_PROPERTY_INSTANCE_NORMAL_PRIORITY,
398         .sensitivity = CAL_PROPERTY_INSTANCE_NORMAL_SENSITIVITY,
399         .has_rrule = CAL_PROPERTY_INSTANCE_NORMAL_HAS_RRULE,
400         .latitude = CAL_PROPERTY_INSTANCE_NORMAL_LATITUDE,
401         .longitude = CAL_PROPERTY_INSTANCE_NORMAL_LONGITUDE,
402         .has_alarm = CAL_PROPERTY_INSTANCE_NORMAL_HAS_ALARM,
403         .original_event_id = CAL_PROPERTY_INSTANCE_NORMAL_ORIGINAL_EVENT_ID,
404         .calendar_book_visibility = CAL_PROPERTY_CALENDAR_VISIBILITY | CAL_PROPERTY_FLAGS_FILTER,
405         .calendar_book_account_id = CAL_PROPERTY_CALENDAR_ACCOUNT_ID | CAL_PROPERTY_FLAGS_FILTER,
406         .last_modified_time = CAL_PROPERTY_INSTANCE_NORMAL_LAST_MODIFIED_TIME,
407         .sync_data1 = CAL_PROPERTY_INSTANCE_NORMAL_SYNC_DATA1
408 };
409
410 API const _calendar_instance_localtime_calendar_book_property_ids   _calendar_instance_localtime_calendar_book = {
411         ._uri = CALENDAR_VIEW_INSTANCE_LOCALTIME_CALENDAR,
412         .event_id = CAL_PROPERTY_INSTANCE_ALLDAY_EVENT_ID,
413         .start_time = CAL_PROPERTY_INSTANCE_ALLDAY_START,
414         .end_time = CAL_PROPERTY_INSTANCE_ALLDAY_END,
415         .summary = CAL_PROPERTY_INSTANCE_ALLDAY_SUMMARY,
416         .location = CAL_PROPERTY_INSTANCE_ALLDAY_LOCATION,
417         .calendar_book_id = CAL_PROPERTY_INSTANCE_ALLDAY_CALENDAR_ID,
418         .description = CAL_PROPERTY_INSTANCE_ALLDAY_DESCRIPTION,
419         .busy_status = CAL_PROPERTY_INSTANCE_ALLDAY_BUSY_STATUS,
420         .event_status = CAL_PROPERTY_INSTANCE_ALLDAY_EVENT_STATUS,
421         .priority = CAL_PROPERTY_INSTANCE_ALLDAY_PRIORITY,
422         .sensitivity = CAL_PROPERTY_INSTANCE_ALLDAY_SENSITIVITY,
423         .has_rrule = CAL_PROPERTY_INSTANCE_ALLDAY_HAS_RRULE,
424         .latitude = CAL_PROPERTY_INSTANCE_ALLDAY_LATITUDE,
425         .longitude = CAL_PROPERTY_INSTANCE_ALLDAY_LONGITUDE,
426         .has_alarm = CAL_PROPERTY_INSTANCE_ALLDAY_HAS_ALARM,
427         .original_event_id = CAL_PROPERTY_INSTANCE_ALLDAY_ORIGINAL_EVENT_ID,
428         .calendar_book_visibility = CAL_PROPERTY_CALENDAR_VISIBILITY | CAL_PROPERTY_FLAGS_FILTER,
429         .calendar_book_account_id = CAL_PROPERTY_CALENDAR_ACCOUNT_ID | CAL_PROPERTY_FLAGS_FILTER,
430         .last_modified_time = CAL_PROPERTY_INSTANCE_ALLDAY_LAST_MODIFIED_TIME,
431         .sync_data1 = CAL_PROPERTY_INSTANCE_ALLDAY_SYNC_DATA1,
432         .is_allday = CAL_PROPERTY_INSTANCE_ALLDAY_IS_ALLDAY
433 };
434
435 API const _calendar_instance_utime_calendar_book_extended_property_ids   _calendar_instance_utime_calendar_book_extended = {
436         ._uri = CALENDAR_VIEW_INSTANCE_UTIME_CALENDAR_EXTENDED,
437         .event_id = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_EVENT_ID,
438         .start_time = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_START,
439         .end_time = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_END,
440         .summary = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SUMMARY,
441         .location = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LOCATION,
442         .calendar_book_id = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CALENDAR_ID,
443         .description = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_DESCRIPTION,
444         .busy_status = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_BUSY_STATUS,
445         .event_status = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_EVENT_STATUS,
446         .priority = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_PRIORITY,
447         .sensitivity = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SENSITIVITY,
448         .has_rrule = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_RRULE,
449         .latitude = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LATITUDE,
450         .longitude = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LONGITUDE,
451         .has_alarm = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_ALARM,
452         .original_event_id = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORIGINAL_EVENT_ID,
453         .calendar_book_visibility = CAL_PROPERTY_CALENDAR_VISIBILITY | CAL_PROPERTY_FLAGS_FILTER,
454         .calendar_book_account_id = CAL_PROPERTY_CALENDAR_ACCOUNT_ID | CAL_PROPERTY_FLAGS_FILTER,
455         .last_modified_time = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LAST_MODIFIED_TIME,
456         .sync_data1 = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA1,
457         .organizer_name = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORGANIZER_NAME,
458         .categories = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CATEGORIES,
459         .has_attendee = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_ATTENDEE,
460         .sync_data2 = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA2,
461         .sync_data3 = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA3,
462         .sync_data4 = CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA4
463 };
464
465 API const _calendar_instance_localtime_calendar_book_extended_property_ids   _calendar_instance_localtime_calendar_book_extended = {
466         ._uri = CALENDAR_VIEW_INSTANCE_LOCALTIME_CALENDAR_EXTENDED,
467         .event_id = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_EVENT_ID,
468         .start_time = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_START,
469         .end_time = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_END,
470         .summary = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SUMMARY,
471         .location = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LOCATION,
472         .calendar_book_id = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CALENDAR_ID,
473         .description = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_DESCRIPTION,
474         .busy_status = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_BUSY_STATUS,
475         .event_status = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_EVENT_STATUS,
476         .priority = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_PRIORITY,
477         .sensitivity = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SENSITIVITY,
478         .has_rrule = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_RRULE,
479         .latitude = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LATITUDE,
480         .longitude = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LONGITUDE,
481         .has_alarm = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_ALARM,
482         .original_event_id = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORIGINAL_EVENT_ID,
483         .calendar_book_visibility = CAL_PROPERTY_CALENDAR_VISIBILITY | CAL_PROPERTY_FLAGS_FILTER,
484         .calendar_book_account_id = CAL_PROPERTY_CALENDAR_ACCOUNT_ID | CAL_PROPERTY_FLAGS_FILTER,
485         .last_modified_time = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LAST_MODIFIED_TIME,
486         .sync_data1 = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA1,
487         .organizer_name = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORGANIZER_NAME,
488         .categories = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CATEGORIES,
489         .has_attendee = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_ATTENDEE,
490         .sync_data2 = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA2,
491         .sync_data3 = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA3,
492         .sync_data4 = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA4,
493         .is_allday = CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_IS_ALLDAY
494 };
495
496 API const _calendar_extended_property_property_ids   _calendar_extended_property = {
497         ._uri = CALENDAR_VIEW_EXTENDED,
498         .id = CAL_PROPERTY_EXTENDED_ID,
499         .record_id = CAL_PROPERTY_EXTENDED_RECORD_ID,
500         .record_type = CAL_PROPERTY_EXTENDED_RECORD_TYPE,
501         .key = CAL_PROPERTY_EXTENDED_KEY,
502         .value = CAL_PROPERTY_EXTENDED_VALUE
503 };
504
505 const cal_property_info_s  __property_calendar_book[] = {
506         {CAL_PROPERTY_CALENDAR_ID           ,       "id"},
507         {CAL_PROPERTY_CALENDAR_UID          ,       "uid"},
508         {CAL_PROPERTY_CALENDAR_NAME         ,       "name"},
509         {CAL_PROPERTY_CALENDAR_DESCRIPTION  ,       "description"},
510         {CAL_PROPERTY_CALENDAR_COLOR        ,       "color"},
511         {CAL_PROPERTY_CALENDAR_LOCATION     ,       "location"},
512         {CAL_PROPERTY_CALENDAR_VISIBILITY   ,       "visibility"},
513         {CAL_PROPERTY_CALENDAR_SYNC_EVENT   ,       "sync_event"},
514         {CAL_PROPERTY_CALENDAR_ACCOUNT_ID   ,       "account_id"},
515         {CAL_PROPERTY_CALENDAR_STORE_TYPE   ,       "store_type"},
516         {CAL_PROPERTY_CALENDAR_SYNC_DATA1   ,       "sync_data1"},
517         {CAL_PROPERTY_CALENDAR_SYNC_DATA2   ,       "sync_data2"},
518         {CAL_PROPERTY_CALENDAR_SYNC_DATA3   ,       "sync_data3"},
519         {CAL_PROPERTY_CALENDAR_SYNC_DATA4   ,       "sync_data4"},
520         {CAL_PROPERTY_CALENDAR_MODE,                "mode"},
521 };
522
523 const cal_property_info_s   __property_event[] = {
524         {CAL_PROPERTY_EVENT_ID,                     "id"},
525         {CAL_PROPERTY_EVENT_CALENDAR_ID,            "calendar_id"},
526         {CAL_PROPERTY_EVENT_SUMMARY,                "summary"},
527         {CAL_PROPERTY_EVENT_DESCRIPTION,            "description"},
528         {CAL_PROPERTY_EVENT_LOCATION,               "location"},
529         {CAL_PROPERTY_EVENT_CATEGORIES,             "categories"},
530         {CAL_PROPERTY_EVENT_EXDATE,                 "exdate"},
531         {CAL_PROPERTY_EVENT_EVENT_STATUS,           "task_status"},
532         {CAL_PROPERTY_EVENT_PRIORITY,               "priority"},
533         {CAL_PROPERTY_EVENT_TIMEZONE,               "timezone"},
534         {CAL_PROPERTY_EVENT_CONTACT_ID,             "contact_id"},
535         {CAL_PROPERTY_EVENT_BUSY_STATUS,            "busy_status"},
536         {CAL_PROPERTY_EVENT_SENSITIVITY,            "sensitivity"},
537         {CAL_PROPERTY_EVENT_UID,                    "uid"},
538         {CAL_PROPERTY_EVENT_ORGANIZER_NAME,         "organizer_name"},
539         {CAL_PROPERTY_EVENT_ORGANIZER_EMAIL,        "organizer_email"},
540         {CAL_PROPERTY_EVENT_MEETING_STATUS,         "meeting_status"},
541         {CAL_PROPERTY_EVENT_ORIGINAL_EVENT_ID,      "original_event_id"},
542         {CAL_PROPERTY_EVENT_LATITUDE,               "latitude"},
543         {CAL_PROPERTY_EVENT_LONGITUDE,              "longitude"},
544         {CAL_PROPERTY_EVENT_EMAIL_ID,               "email_id"},
545         {CAL_PROPERTY_EVENT_CREATED_TIME,           "created_time"},
546         {CAL_PROPERTY_EVENT_LAST_MODIFIED_TIME,     "last_mod"},
547         {CAL_PROPERTY_EVENT_IS_DELETED,             "is_deleted"},
548         {CAL_PROPERTY_EVENT_FREQ,                   "freq"},
549         {CAL_PROPERTY_EVENT_RANGE_TYPE,             "range_type"},
550         {CAL_PROPERTY_EVENT_UNTIL,                  "until_type,until_utime,until_datetime"},
551         {CAL_PROPERTY_EVENT_COUNT,                  "count"},
552         {CAL_PROPERTY_EVENT_INTERVAL,               "interval"},
553         {CAL_PROPERTY_EVENT_BYSECOND,               "bysecond"},
554         {CAL_PROPERTY_EVENT_BYMINUTE,               "byminute"},
555         {CAL_PROPERTY_EVENT_BYHOUR,                 "byhour"},
556         {CAL_PROPERTY_EVENT_BYDAY,                  "byday"},
557         {CAL_PROPERTY_EVENT_BYMONTHDAY,             "bymonthday"},
558         {CAL_PROPERTY_EVENT_BYYEARDAY,              "byyearday"},
559         {CAL_PROPERTY_EVENT_BYWEEKNO,               "byweekno"},
560         {CAL_PROPERTY_EVENT_BYMONTH,                "bymonth"},
561         {CAL_PROPERTY_EVENT_BYSETPOS,               "bysetpos"},
562         {CAL_PROPERTY_EVENT_WKST,                   "wkst"},
563         {CAL_PROPERTY_EVENT_RECURRENCE_ID,          "recurrence_id"},
564         {CAL_PROPERTY_EVENT_RDATE,                  "rdate"},
565         {CAL_PROPERTY_EVENT_HAS_ATTENDEE,           "has_attendee"},
566         {CAL_PROPERTY_EVENT_HAS_ALARM,              "has_alarm"},
567         {CAL_PROPERTY_EVENT_SYNC_DATA1,             "sync_data1"},
568         {CAL_PROPERTY_EVENT_SYNC_DATA2,             "sync_data2"},
569         {CAL_PROPERTY_EVENT_SYNC_DATA3,             "sync_data3"},
570         {CAL_PROPERTY_EVENT_SYNC_DATA4,             "sync_data4"},
571         {CAL_PROPERTY_EVENT_START,                  "dtstart_type,dtstart_utime,dtstart_datetime"},
572         {CAL_PROPERTY_EVENT_END,                    "dtend_type,dtend_utime,dtend_datetime"},
573         {CAL_PROPERTY_EVENT_CALENDAR_ALARM,         NULL},
574         {CAL_PROPERTY_EVENT_CALENDAR_ATTENDEE,      NULL},
575         {CAL_PROPERTY_EVENT_CALENDAR_SYSTEM_TYPE,   "system_type"},
576         {CAL_PROPERTY_EVENT_START_TZID,             "dtstart_tzid"},
577         {CAL_PROPERTY_EVENT_END_TZID,               "dtend_tzid"},
578         {CAL_PROPERTY_EVENT_EXCEPTION,              NULL},
579         {CAL_PROPERTY_EVENT_EXTENDED,               NULL},
580         {CAL_PROPERTY_EVENT_IS_ALLDAY,              "is_allday"},
581 };
582
583 const cal_property_info_s   __property_todo[] = {
584         {CAL_PROPERTY_TODO_ID,                      "id"},
585         {CAL_PROPERTY_TODO_CALENDAR_ID,             "calendar_id"},
586         {CAL_PROPERTY_TODO_SUMMARY,                 "summary"},
587         {CAL_PROPERTY_TODO_DESCRIPTION,             "description"},
588         {CAL_PROPERTY_TODO_LOCATION,                "location"},
589         {CAL_PROPERTY_TODO_CATEGORIES,              "categories"},
590         {CAL_PROPERTY_TODO_TODO_STATUS,             "task_status"},
591         {CAL_PROPERTY_TODO_PRIORITY,                "priority"},
592         {CAL_PROPERTY_TODO_SENSITIVITY,             "sensitivity"},
593         {CAL_PROPERTY_TODO_UID,                     "uid"},
594         {CAL_PROPERTY_TODO_LATITUDE,                "latitude"},
595         {CAL_PROPERTY_TODO_LONGITUDE,               "longitude"},
596         {CAL_PROPERTY_TODO_PROGRESS,                "progress"},
597         {CAL_PROPERTY_TODO_CREATED_TIME,            "created_time"},
598         {CAL_PROPERTY_TODO_LAST_MODIFIED_TIME,      "last_mod"},
599         {CAL_PROPERTY_TODO_COMPLETED_TIME,          "completed_time"},
600         {CAL_PROPERTY_TODO_IS_DELETED,              "is_deleted"},
601         {CAL_PROPERTY_TODO_FREQ,                    "freq"},
602         {CAL_PROPERTY_TODO_RANGE_TYPE,              "range_type"},
603         {CAL_PROPERTY_TODO_UNTIL,                   "until_type,until_utime,until_datetime"},
604         {CAL_PROPERTY_TODO_COUNT,                   "count"},
605         {CAL_PROPERTY_TODO_INTERVAL,                "interval"},
606         {CAL_PROPERTY_TODO_BYSECOND,                "bysecond"},
607         {CAL_PROPERTY_TODO_BYMINUTE,                "byminute"},
608         {CAL_PROPERTY_TODO_BYHOUR,                  "byhour"},
609         {CAL_PROPERTY_TODO_BYDAY,                   "byday"},
610         {CAL_PROPERTY_TODO_BYMONTHDAY,              "bymonthday"},
611         {CAL_PROPERTY_TODO_BYYEARDAY,               "byyearday"},
612         {CAL_PROPERTY_TODO_BYWEEKNO,                "byweekno"},
613         {CAL_PROPERTY_TODO_BYMONTH,                 "bymonth"},
614         {CAL_PROPERTY_TODO_BYSETPOS,                "bysetpos"},
615         {CAL_PROPERTY_TODO_WKST,                    "wkst"},
616         {CAL_PROPERTY_TODO_HAS_ALARM,               "has_alarm"},
617         {CAL_PROPERTY_TODO_SYNC_DATA1,              "sync_data1"},
618         {CAL_PROPERTY_TODO_SYNC_DATA2,              "sync_data2"},
619         {CAL_PROPERTY_TODO_SYNC_DATA3,              "sync_data3"},
620         {CAL_PROPERTY_TODO_SYNC_DATA4,              "sync_data4"},
621         {CAL_PROPERTY_TODO_START,                   "dtstart_type,dtstart_utime,dtstart_datetime"},
622         {CAL_PROPERTY_TODO_DUE,                     "dtend_type,dtend_utime,dtend_datetime"},
623         {CAL_PROPERTY_TODO_CALENDAR_ALARM,          NULL},
624         {CAL_PROPERTY_TODO_START_TZID,              "dtstart_tzid"},
625         {CAL_PROPERTY_TODO_DUE_TZID,                "dtend_tzid"},
626         {CAL_PROPERTY_TODO_ORGANIZER_NAME,          "organizer_name"},
627         {CAL_PROPERTY_TODO_ORGANIZER_EMAIL,         "organizer_email"},
628         {CAL_PROPERTY_TODO_HAS_ATTENDEE,            "has_attendee"},
629         {CAL_PROPERTY_TODO_CALENDAR_ATTENDEE,       NULL},
630         {CAL_PROPERTY_TODO_EXTENDED,                NULL},
631         {CAL_PROPERTY_TODO_IS_ALLDAY,               "dtend_type"},
632 };
633
634 const cal_property_info_s   __property_timezone[] = {
635         {CAL_PROPERTY_TIMEZONE_ID,                                  "id"},
636         {CAL_PROPERTY_TIMEZONE_TZ_OFFSET_FROM_GMT,                  "tz_offset_from_gmt"},
637         {CAL_PROPERTY_TIMEZONE_STANDARD_NAME,                       "standard_name"},
638         {CAL_PROPERTY_TIMEZONE_STD_START_MONTH,                     "std_start_month"},
639         {CAL_PROPERTY_TIMEZONE_STD_START_POSITION_OF_WEEK,          "std_start_position_of_week"},
640         {CAL_PROPERTY_TIMEZONE_STD_START_DAY,                       "std_start_day"},
641         {CAL_PROPERTY_TIMEZONE_STD_START_HOUR,                      "std_start_hour"},
642         {CAL_PROPERTY_TIMEZONE_STANDARD_BIAS,                       "standard_bias"},
643         {CAL_PROPERTY_TIMEZONE_DAY_LIGHT_NAME,                      "day_light_name"},
644         {CAL_PROPERTY_TIMEZONE_DAY_LIGHT_START_MONTH,               "day_light_start_month"},
645         {CAL_PROPERTY_TIMEZONE_DAY_LIGHT_START_POSITION_OF_WEEK,    "day_light_start_position_of_week"},
646         {CAL_PROPERTY_TIMEZONE_DAY_LIGHT_START_DAY,                 "day_light_start_day"},
647         {CAL_PROPERTY_TIMEZONE_DAY_LIGHT_START_HOUR,                "day_light_start_hour"},
648         {CAL_PROPERTY_TIMEZONE_DAY_LIGHT_BIAS,                      "day_light_bias"},
649         {CAL_PROPERTY_TIMEZONE_CALENDAR_ID,                         "calendar_id"},
650 };
651
652 const cal_property_info_s   __property_attendee[] = {
653         {CAL_PROPERTY_ATTENDEE_NUMBER,              "attendee_number"},
654         {CAL_PROPERTY_ATTENDEE_CUTYPE,              "attendee_cutype"},
655         {CAL_PROPERTY_ATTENDEE_CT_INDEX,            "attendee_ct_index"},
656         {CAL_PROPERTY_ATTENDEE_UID,                 "attendee_uid"},
657         {CAL_PROPERTY_ATTENDEE_GROUP,               "attendee_group"},
658         {CAL_PROPERTY_ATTENDEE_EMAIL,               "attendee_email"},
659         {CAL_PROPERTY_ATTENDEE_ROLE,                "attendee_role"},
660         {CAL_PROPERTY_ATTENDEE_STATUS,              "attendee_status"},
661         {CAL_PROPERTY_ATTENDEE_RSVP,                "attendee_rsvp"},
662         {CAL_PROPERTY_ATTENDEE_DELEGATEE_URI,       "attendee_delegatee_uri"},
663         {CAL_PROPERTY_ATTENDEE_DELEGATOR_URI,       "attendee_delegator_uri"},
664         {CAL_PROPERTY_ATTENDEE_NAME,                "attendee_name"},
665         {CAL_PROPERTY_ATTENDEE_MEMBER,              "attendee_member"},
666         {CAL_PROPERTY_ATTENDEE_PARENT_ID,           "event_id"},
667 };
668
669 const cal_property_info_s   __property_alarm[] = {
670         {CAL_PROPERTY_ALARM_TICK,               "remind_tick"},
671         {CAL_PROPERTY_ALARM_TICK_UNIT,          "remind_tick_unit"},
672         {CAL_PROPERTY_ALARM_DESCRIPTION,        "alarm_description"},
673         {CAL_PROPERTY_ALARM_PARENT_ID,          "event_id"},
674         {CAL_PROPERTY_ALARM_SUMMARY,            "alarm_summary"},
675         {CAL_PROPERTY_ALARM_ACTION,             "alarm_action"},
676         {CAL_PROPERTY_ALARM_ATTACH,             "alarm_attach"},
677         {CAL_PROPERTY_ALARM_ALARM,              "alarm_type,alarm_utime,alarm_datetime"},
678 };
679
680 const cal_property_info_s   __property_updated_info[] = {
681         {CAL_PROPERTY_UPDATED_INFO_ID,                  "id"},
682         {CAL_PROPERTY_UPDATED_INFO_CALENDAR_ID,         "calendar_id"},
683         {CAL_PROPERTY_UPDATED_INFO_TYPE,                "type"},
684         {CAL_PROPERTY_UPDATED_INFO_VERSION,             "ver"},
685 };
686
687 const cal_property_info_s   __property_search_event_calendar[] = {
688         {CAL_PROPERTY_EVENT_ID,                     "id"},
689         {CAL_PROPERTY_EVENT_CALENDAR_ID,            "calendar_id"},
690         {CAL_PROPERTY_EVENT_SUMMARY,                "summary"},
691         {CAL_PROPERTY_EVENT_DESCRIPTION,            "description"},
692         {CAL_PROPERTY_EVENT_LOCATION,               "location"},
693         {CAL_PROPERTY_EVENT_CATEGORIES,             "categories"},
694         {CAL_PROPERTY_EVENT_EXDATE,                 "exdate"},
695         {CAL_PROPERTY_EVENT_EVENT_STATUS,           "task_status"},
696         {CAL_PROPERTY_EVENT_PRIORITY,               "priority"},
697         {CAL_PROPERTY_EVENT_TIMEZONE,               "timezone"},
698         {CAL_PROPERTY_EVENT_CONTACT_ID,             "contact_id"},
699         {CAL_PROPERTY_EVENT_BUSY_STATUS,            "busy_status"},
700         {CAL_PROPERTY_EVENT_SENSITIVITY,            "sensitivity"},
701         {CAL_PROPERTY_EVENT_UID,                    "uid"},
702         {CAL_PROPERTY_EVENT_ORGANIZER_NAME,         "organizer_name"},
703         {CAL_PROPERTY_EVENT_ORGANIZER_EMAIL,        "organizer_email"},
704         {CAL_PROPERTY_EVENT_MEETING_STATUS,         "meeting_status"},
705         {CAL_PROPERTY_EVENT_ORIGINAL_EVENT_ID,      "original_event_id"},
706         {CAL_PROPERTY_EVENT_LATITUDE,               "latitude"},
707         {CAL_PROPERTY_EVENT_LONGITUDE,              "longitude"},
708         {CAL_PROPERTY_EVENT_EMAIL_ID,               "email_id"},
709         {CAL_PROPERTY_EVENT_CREATED_TIME,           "created_time"},
710         {CAL_PROPERTY_EVENT_LAST_MODIFIED_TIME,     "last_mod"},
711         {CAL_PROPERTY_EVENT_FREQ,                   "freq"},
712         {CAL_PROPERTY_EVENT_RANGE_TYPE,             "range_type"},
713         {CAL_PROPERTY_EVENT_UNTIL,                  "until_type,until_utime,until_datetime"},
714         {CAL_PROPERTY_EVENT_COUNT,                  "count"},
715         {CAL_PROPERTY_EVENT_INTERVAL,               "interval"},
716         {CAL_PROPERTY_EVENT_BYSECOND,               "bysecond"},
717         {CAL_PROPERTY_EVENT_BYMINUTE,               "byminute"},
718         {CAL_PROPERTY_EVENT_BYHOUR,                 "byhour"},
719         {CAL_PROPERTY_EVENT_BYDAY,                  "byday"},
720         {CAL_PROPERTY_EVENT_BYMONTHDAY,             "bymonthday"},
721         {CAL_PROPERTY_EVENT_BYYEARDAY,              "byyearday"},
722         {CAL_PROPERTY_EVENT_BYWEEKNO,               "byweekno"},
723         {CAL_PROPERTY_EVENT_BYMONTH,                "bymonth"},
724         {CAL_PROPERTY_EVENT_BYSETPOS,               "bysetpos"},
725         {CAL_PROPERTY_EVENT_WKST,                   "wkst"},
726         {CAL_PROPERTY_EVENT_RECURRENCE_ID,          "recurrence_id"},
727         {CAL_PROPERTY_EVENT_RDATE,                  "rdate"},
728         {CAL_PROPERTY_EVENT_HAS_ATTENDEE,           "has_attendee"},
729         {CAL_PROPERTY_EVENT_HAS_ALARM,              "has_alarm"},
730         {CAL_PROPERTY_EVENT_SYNC_DATA1,             "sync_data1"},
731         {CAL_PROPERTY_EVENT_SYNC_DATA2,             "sync_data2"},
732         {CAL_PROPERTY_EVENT_SYNC_DATA3,             "sync_data3"},
733         {CAL_PROPERTY_EVENT_SYNC_DATA4,             "sync_data4"},
734         {CAL_PROPERTY_EVENT_START,                  "dtstart_type,dtstart_utime,dtstart_datetime"},
735         {CAL_PROPERTY_EVENT_END,                    "dtend_type,dtend_utime,dtend_datetime"},
736         {CAL_PROPERTY_EVENT_CALENDAR_SYSTEM_TYPE,   "system_type"},
737         {CAL_PROPERTY_EVENT_START_TZID,             "dtstart_tzid"},
738         {CAL_PROPERTY_EVENT_END_TZID,               "dtend_tzid"},
739         {CAL_PROPERTY_EVENT_IS_ALLDAY,              "is_allday"},
740         {(CAL_PROPERTY_CALENDAR_VISIBILITY|CAL_PROPERTY_FLAGS_FILTER),       "visibility"},
741         {(CAL_PROPERTY_CALENDAR_ACCOUNT_ID|CAL_PROPERTY_FLAGS_FILTER),       "account_id"},
742 };
743
744 const cal_property_info_s   __property_search_todo_calendar[] = {
745         {CAL_PROPERTY_TODO_ID,                      "id"},
746         {CAL_PROPERTY_TODO_CALENDAR_ID,             "calendar_id"},
747         {CAL_PROPERTY_TODO_SUMMARY,                 "summary"},
748         {CAL_PROPERTY_TODO_DESCRIPTION,             "description"},
749         {CAL_PROPERTY_TODO_LOCATION,                "location"},
750         {CAL_PROPERTY_TODO_CATEGORIES,              "categories"},
751         {CAL_PROPERTY_TODO_TODO_STATUS,             "task_status"},
752         {CAL_PROPERTY_TODO_PRIORITY,                "priority"},
753         {CAL_PROPERTY_TODO_SENSITIVITY,             "sensitivity"},
754         {CAL_PROPERTY_TODO_UID,                     "uid"},
755         {CAL_PROPERTY_TODO_LATITUDE,                "latitude"},
756         {CAL_PROPERTY_TODO_LONGITUDE,               "longitude"},
757         {CAL_PROPERTY_TODO_PROGRESS,                "progress"},
758         {CAL_PROPERTY_TODO_CREATED_TIME,            "created_time"},
759         {CAL_PROPERTY_TODO_LAST_MODIFIED_TIME,      "last_mod"},
760         {CAL_PROPERTY_TODO_COMPLETED_TIME,          "completed_time"},
761         {CAL_PROPERTY_TODO_FREQ,                    "freq"},
762         {CAL_PROPERTY_TODO_RANGE_TYPE,              "range_type"},
763         {CAL_PROPERTY_TODO_UNTIL,                   "until_type,until_utime,until_datetime"},
764         {CAL_PROPERTY_TODO_COUNT,                   "count"},
765         {CAL_PROPERTY_TODO_INTERVAL,                "interval"},
766         {CAL_PROPERTY_TODO_BYSECOND,                "bysecond"},
767         {CAL_PROPERTY_TODO_BYMINUTE,                "byminute"},
768         {CAL_PROPERTY_TODO_BYHOUR,                  "byhour"},
769         {CAL_PROPERTY_TODO_BYDAY,                   "byday"},
770         {CAL_PROPERTY_TODO_BYMONTHDAY,              "bymonthday"},
771         {CAL_PROPERTY_TODO_BYYEARDAY,               "byyearday"},
772         {CAL_PROPERTY_TODO_BYWEEKNO,                "byweekno"},
773         {CAL_PROPERTY_TODO_BYMONTH,                 "bymonth"},
774         {CAL_PROPERTY_TODO_BYSETPOS,                "bysetpos"},
775         {CAL_PROPERTY_TODO_WKST,                    "wkst"},
776         {CAL_PROPERTY_TODO_HAS_ALARM,               "has_alarm"},
777         {CAL_PROPERTY_TODO_SYNC_DATA1,              "sync_data1"},
778         {CAL_PROPERTY_TODO_SYNC_DATA2,              "sync_data2"},
779         {CAL_PROPERTY_TODO_SYNC_DATA3,              "sync_data3"},
780         {CAL_PROPERTY_TODO_SYNC_DATA4,              "sync_data4"},
781         {CAL_PROPERTY_TODO_START,                   "dtstart_type,dtstart_utime,dtstart_datetime"},
782         {CAL_PROPERTY_TODO_DUE,                     "dtend_type,dtend_utime,dtend_datetime"},
783         {CAL_PROPERTY_TODO_START_TZID,              "dtstart_tzid"},
784         {CAL_PROPERTY_TODO_DUE_TZID,                "dtend_tzid"},
785         {CAL_PROPERTY_TODO_ORGANIZER_NAME,          "organizer_name"},
786         {CAL_PROPERTY_TODO_ORGANIZER_EMAIL,         "organizer_email"},
787         {CAL_PROPERTY_TODO_HAS_ATTENDEE,            "has_attendee"},
788         {CAL_PROPERTY_TODO_IS_ALLDAY,               "dtend_type"},
789         {(CAL_PROPERTY_CALENDAR_VISIBILITY|CAL_PROPERTY_FLAGS_FILTER),       "visibility"},
790         {(CAL_PROPERTY_CALENDAR_ACCOUNT_ID|CAL_PROPERTY_FLAGS_FILTER),       "account_id"},
791 };
792
793 const cal_property_info_s   __property_search_event_calendar_attendee[] = {
794         {CAL_PROPERTY_EVENT_ID,                     "id"},
795         {CAL_PROPERTY_EVENT_CALENDAR_ID,            "calendar_id"},
796         {CAL_PROPERTY_EVENT_SUMMARY,                "summary"},
797         {CAL_PROPERTY_EVENT_DESCRIPTION,            "description"},
798         {CAL_PROPERTY_EVENT_LOCATION,               "location"},
799         {CAL_PROPERTY_EVENT_CATEGORIES,             "categories"},
800         {CAL_PROPERTY_EVENT_EXDATE,                 "exdate"},
801         {CAL_PROPERTY_EVENT_EVENT_STATUS,           "task_status"},
802         {CAL_PROPERTY_EVENT_PRIORITY,               "priority"},
803         {CAL_PROPERTY_EVENT_TIMEZONE,               "timezone"},
804         {CAL_PROPERTY_EVENT_CONTACT_ID,             "contact_id"},
805         {CAL_PROPERTY_EVENT_BUSY_STATUS,            "busy_status"},
806         {CAL_PROPERTY_EVENT_SENSITIVITY,            "sensitivity"},
807         {CAL_PROPERTY_EVENT_UID,                    "uid"},
808         {CAL_PROPERTY_EVENT_ORGANIZER_NAME,         "organizer_name"},
809         {CAL_PROPERTY_EVENT_ORGANIZER_EMAIL,        "organizer_email"},
810         {CAL_PROPERTY_EVENT_MEETING_STATUS,         "meeting_status"},
811         {CAL_PROPERTY_EVENT_ORIGINAL_EVENT_ID,      "original_event_id"},
812         {CAL_PROPERTY_EVENT_LATITUDE,               "latitude"},
813         {CAL_PROPERTY_EVENT_LONGITUDE,              "longitude"},
814         {CAL_PROPERTY_EVENT_EMAIL_ID,               "email_id"},
815         {CAL_PROPERTY_EVENT_CREATED_TIME,           "created_time"},
816         {CAL_PROPERTY_EVENT_LAST_MODIFIED_TIME,     "last_mod"},
817         {CAL_PROPERTY_EVENT_FREQ,                   "freq"},
818         {CAL_PROPERTY_EVENT_RANGE_TYPE,             "range_type"},
819         {CAL_PROPERTY_EVENT_UNTIL,                  "until_type,until_utime,until_datetime"},
820         {CAL_PROPERTY_EVENT_COUNT,                  "count"},
821         {CAL_PROPERTY_EVENT_INTERVAL,               "interval"},
822         {CAL_PROPERTY_EVENT_BYSECOND,               "bysecond"},
823         {CAL_PROPERTY_EVENT_BYMINUTE,               "byminute"},
824         {CAL_PROPERTY_EVENT_BYHOUR,                 "byhour"},
825         {CAL_PROPERTY_EVENT_BYDAY,                  "byday"},
826         {CAL_PROPERTY_EVENT_BYMONTHDAY,             "bymonthday"},
827         {CAL_PROPERTY_EVENT_BYYEARDAY,              "byyearday"},
828         {CAL_PROPERTY_EVENT_BYWEEKNO,               "byweekno"},
829         {CAL_PROPERTY_EVENT_BYMONTH,                "bymonth"},
830         {CAL_PROPERTY_EVENT_BYSETPOS,               "bysetpos"},
831         {CAL_PROPERTY_EVENT_WKST,                   "wkst"},
832         {CAL_PROPERTY_EVENT_RECURRENCE_ID,          "recurrence_id"},
833         {CAL_PROPERTY_EVENT_RDATE,                  "rdate"},
834         {CAL_PROPERTY_EVENT_HAS_ATTENDEE,           "has_attendee"},
835         {CAL_PROPERTY_EVENT_HAS_ALARM,              "has_alarm"},
836         {CAL_PROPERTY_EVENT_SYNC_DATA1,             "sync_data1"},
837         {CAL_PROPERTY_EVENT_SYNC_DATA2,             "sync_data2"},
838         {CAL_PROPERTY_EVENT_SYNC_DATA3,             "sync_data3"},
839         {CAL_PROPERTY_EVENT_SYNC_DATA4,             "sync_data4"},
840         {CAL_PROPERTY_EVENT_START,                  "dtstart_type,dtstart_utime,dtstart_datetime"},
841         {CAL_PROPERTY_EVENT_END,                    "dtend_type,dtend_utime,dtend_datetime"},
842         {CAL_PROPERTY_EVENT_CALENDAR_SYSTEM_TYPE,   "system_type"},
843         {CAL_PROPERTY_EVENT_START_TZID,             "dtstart_tzid"},
844         {CAL_PROPERTY_EVENT_END_TZID,               "dtend_tzid"},
845         {CAL_PROPERTY_EVENT_IS_ALLDAY,              "is_allday"},
846         {(CAL_PROPERTY_CALENDAR_VISIBILITY|CAL_PROPERTY_FLAGS_FILTER),       "visibility"},
847         {(CAL_PROPERTY_CALENDAR_ACCOUNT_ID|CAL_PROPERTY_FLAGS_FILTER),       "account_id"},
848         {(CAL_PROPERTY_ATTENDEE_EMAIL|CAL_PROPERTY_FLAGS_FILTER),            "attendee_email"},
849         {(CAL_PROPERTY_ATTENDEE_NAME|CAL_PROPERTY_FLAGS_FILTER),             "attendee_name"},
850         {(CAL_PROPERTY_ATTENDEE_MEMBER|CAL_PROPERTY_FLAGS_FILTER),           "attendee_member"},
851 };
852
853 const cal_property_info_s   __property_search_instance_utime_calendar[] = {
854         {CAL_PROPERTY_INSTANCE_NORMAL_EVENT_ID,             "event_id"},
855         {CAL_PROPERTY_INSTANCE_NORMAL_START,                "dtstart_type,dtstart_utime,dtstart_datetime"},
856         {CAL_PROPERTY_INSTANCE_NORMAL_END,                  "dtend_type,dtend_utime,dtend_datetime"},
857         {CAL_PROPERTY_INSTANCE_NORMAL_SUMMARY,              "summary"},
858         {CAL_PROPERTY_INSTANCE_NORMAL_LOCATION,             "location"},
859         {CAL_PROPERTY_INSTANCE_NORMAL_CALENDAR_ID,          "calendar_id"},
860         {CAL_PROPERTY_INSTANCE_NORMAL_DESCRIPTION,          "description"},
861         {CAL_PROPERTY_INSTANCE_NORMAL_BUSY_STATUS,          "busy_status"},
862         {CAL_PROPERTY_INSTANCE_NORMAL_EVENT_STATUS,         "task_status"},
863         {CAL_PROPERTY_INSTANCE_NORMAL_PRIORITY,             "priority"},
864         {CAL_PROPERTY_INSTANCE_NORMAL_SENSITIVITY,          "sensitivity"},
865         {CAL_PROPERTY_INSTANCE_NORMAL_HAS_RRULE,             "rrule_id"},
866         {CAL_PROPERTY_INSTANCE_NORMAL_LATITUDE,             "latitude"},
867         {CAL_PROPERTY_INSTANCE_NORMAL_LONGITUDE,            "longitude"},
868         {CAL_PROPERTY_INSTANCE_NORMAL_HAS_ALARM,            "has_alarm"},
869         {CAL_PROPERTY_INSTANCE_NORMAL_ORIGINAL_EVENT_ID,    "original_event_id"},
870         {(CAL_PROPERTY_CALENDAR_VISIBILITY|CAL_PROPERTY_FLAGS_FILTER),       "visibility"},
871         {(CAL_PROPERTY_CALENDAR_ACCOUNT_ID|CAL_PROPERTY_FLAGS_FILTER),       "account_id"},
872         {CAL_PROPERTY_INSTANCE_NORMAL_LAST_MODIFIED_TIME,   "last_mod"},
873         {CAL_PROPERTY_INSTANCE_NORMAL_SYNC_DATA1,   "sync_data1"},
874 };
875
876 const cal_property_info_s   __property_search_instance_localtime_calendar[] = {
877         {CAL_PROPERTY_INSTANCE_ALLDAY_EVENT_ID,             "event_id"},
878         {CAL_PROPERTY_INSTANCE_ALLDAY_START,                "dtstart_type,dtstart_utime,dtstart_datetime"},
879         {CAL_PROPERTY_INSTANCE_ALLDAY_END,                  "dtend_type,dtend_utime,dtend_datetime"},
880         {CAL_PROPERTY_INSTANCE_ALLDAY_SUMMARY,              "summary"},
881         {CAL_PROPERTY_INSTANCE_ALLDAY_LOCATION,             "location"},
882         {CAL_PROPERTY_INSTANCE_ALLDAY_CALENDAR_ID,          "calendar_id"},
883         {CAL_PROPERTY_INSTANCE_ALLDAY_DESCRIPTION,          "description"},
884         {CAL_PROPERTY_INSTANCE_ALLDAY_BUSY_STATUS,          "busy_status"},
885         {CAL_PROPERTY_INSTANCE_ALLDAY_EVENT_STATUS,         "task_status"},
886         {CAL_PROPERTY_INSTANCE_ALLDAY_PRIORITY,             "priority"},
887         {CAL_PROPERTY_INSTANCE_ALLDAY_SENSITIVITY,          "sensitivity"},
888         {CAL_PROPERTY_INSTANCE_ALLDAY_HAS_RRULE,             "rrule_id"},
889         {CAL_PROPERTY_INSTANCE_ALLDAY_LATITUDE,             "latitude"},
890         {CAL_PROPERTY_INSTANCE_ALLDAY_LONGITUDE,            "longitude"},
891         {CAL_PROPERTY_INSTANCE_ALLDAY_HAS_ALARM,            "has_alarm"},
892         {CAL_PROPERTY_INSTANCE_ALLDAY_ORIGINAL_EVENT_ID,    "original_event_id"},
893         {(CAL_PROPERTY_CALENDAR_VISIBILITY|CAL_PROPERTY_FLAGS_FILTER),       "visibility"},
894         {(CAL_PROPERTY_CALENDAR_ACCOUNT_ID|CAL_PROPERTY_FLAGS_FILTER),       "account_id"},
895         {CAL_PROPERTY_INSTANCE_ALLDAY_LAST_MODIFIED_TIME,   "last_mod"},
896         {CAL_PROPERTY_INSTANCE_ALLDAY_SYNC_DATA1,   "sync_data1"},
897         {CAL_PROPERTY_INSTANCE_ALLDAY_IS_ALLDAY,   "is_allday"},
898 };
899
900 const cal_property_info_s   __property_search_instance_utime_calendar_extended[] = {
901         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_EVENT_ID,             "event_id"},
902         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_START,                "dtstart_type,dtstart_utime,dtstart_datetime"},
903         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_END,                  "dtend_type,dtend_utime,dtend_datetime"},
904         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SUMMARY,              "summary"},
905         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LOCATION,             "location"},
906         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CALENDAR_ID,          "calendar_id"},
907         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_DESCRIPTION,          "description"},
908         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_BUSY_STATUS,          "busy_status"},
909         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_EVENT_STATUS,         "task_status"},
910         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_PRIORITY,             "priority"},
911         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SENSITIVITY,          "sensitivity"},
912         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_RRULE,            "rrule_id"},
913         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LATITUDE,             "latitude"},
914         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LONGITUDE,            "longitude"},
915         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_ALARM,            "has_alarm"},
916         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORIGINAL_EVENT_ID,    "original_event_id"},
917         {(CAL_PROPERTY_CALENDAR_VISIBILITY|CAL_PROPERTY_FLAGS_FILTER),       "visibility"},
918         {(CAL_PROPERTY_CALENDAR_ACCOUNT_ID|CAL_PROPERTY_FLAGS_FILTER),       "account_id"},
919         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_LAST_MODIFIED_TIME,   "last_mod"},
920         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA1,   "sync_data1"},
921         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_ORGANIZER_NAME,   "organizer_name"},
922         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_CATEGORIES,   "categories"},
923         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_HAS_ATTENDEE,   "has_attendee"},
924         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA2,   "sync_data2"},
925         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA3,   "sync_data3"},
926         {CAL_PROPERTY_INSTANCE_NORMAL_EXTENDED_SYNC_DATA4,   "sync_data4"},
927 };
928
929
930 const cal_property_info_s   __property_search_instance_localtime_calendar_extended[] = {
931         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_EVENT_ID,             "event_id"},
932         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_START,                "dtstart_type,dtstart_utime,dtstart_datetime"},
933         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_END,                  "dtend_type,dtend_utime,dtend_datetime"},
934         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SUMMARY,              "summary"},
935         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LOCATION,             "location"},
936         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CALENDAR_ID,          "calendar_id"},
937         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_DESCRIPTION,          "description"},
938         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_BUSY_STATUS,          "busy_status"},
939         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_EVENT_STATUS,         "task_status"},
940         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_PRIORITY,             "priority"},
941         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SENSITIVITY,          "sensitivity"},
942         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_RRULE,            "rrule_id"},
943         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LATITUDE,             "latitude"},
944         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LONGITUDE,            "longitude"},
945         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_ALARM,            "has_alarm"},
946         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORIGINAL_EVENT_ID,    "original_event_id"},
947         {(CAL_PROPERTY_CALENDAR_VISIBILITY|CAL_PROPERTY_FLAGS_FILTER),       "visibility"},
948         {(CAL_PROPERTY_CALENDAR_ACCOUNT_ID|CAL_PROPERTY_FLAGS_FILTER),       "account_id"},
949         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_LAST_MODIFIED_TIME,   "last_mod"},
950         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA1,   "sync_data1"},
951         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_ORGANIZER_NAME,   "organizer_name"},
952         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_CATEGORIES,   "categories"},
953         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_HAS_ATTENDEE,   "has_attendee"},
954         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA2,   "sync_data2"},
955         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA3,   "sync_data3"},
956         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_SYNC_DATA4,   "sync_data4"},
957         {CAL_PROPERTY_INSTANCE_ALLDAY_EXTENDED_IS_ALLDAY,    "is_allday"},
958 };
959
960 const cal_property_info_s   __property_extended[] = {
961         {CAL_PROPERTY_EXTENDED_ID,              "id"},
962         {CAL_PROPERTY_EXTENDED_RECORD_ID,       "record_id"},
963         {CAL_PROPERTY_EXTENDED_RECORD_TYPE,     "record_type"},
964         {CAL_PROPERTY_EXTENDED_KEY,             "key"},
965         {CAL_PROPERTY_EXTENDED_VALUE,           "value"},
966 };
967
968 typedef struct {
969         char *view_uri;
970         cal_record_type_e type;
971         cal_property_info_s *properties;
972         int property_count;
973 } cal_view_uri_info_s;
974
975 #define PTR_COUNT(X)    (void*)(X), sizeof(X)/sizeof(cal_property_info_s)
976
977
978 static const cal_view_uri_info_s __tables[] = {
979         {CALENDAR_VIEW_CALENDAR,        CAL_RECORD_TYPE_CALENDAR,           PTR_COUNT(__property_calendar_book) },
980         {CALENDAR_VIEW_EVENT,           CAL_RECORD_TYPE_EVENT,              PTR_COUNT(__property_event) },
981         {CALENDAR_VIEW_TODO,            CAL_RECORD_TYPE_TODO,               PTR_COUNT(__property_todo) },
982         {CALENDAR_VIEW_TIMEZONE,        CAL_RECORD_TYPE_TIMEZONE,           PTR_COUNT(__property_timezone) },
983         {CALENDAR_VIEW_ATTENDEE,        CAL_RECORD_TYPE_ATTENDEE,           PTR_COUNT(__property_attendee) },
984         {CALENDAR_VIEW_ALARM,           CAL_RECORD_TYPE_ALARM,              PTR_COUNT(__property_alarm) },
985         {CALENDAR_VIEW_UPDATED_INFO,    CAL_RECORD_TYPE_UPDATED_INFO,       PTR_COUNT(__property_updated_info) },
986         {CALENDAR_VIEW_EVENT_CALENDAR,  CAL_RECORD_TYPE_SEARCH,             PTR_COUNT(__property_search_event_calendar) },
987         {CALENDAR_VIEW_TODO_CALENDAR,   CAL_RECORD_TYPE_SEARCH,             PTR_COUNT(__property_search_todo_calendar) },
988         {CALENDAR_VIEW_EVENT_CALENDAR_ATTENDEE,  CAL_RECORD_TYPE_SEARCH,    PTR_COUNT(__property_search_event_calendar_attendee) },
989         {CALENDAR_VIEW_INSTANCE_UTIME_CALENDAR, CAL_RECORD_TYPE_INSTANCE_NORMAL, PTR_COUNT(__property_search_instance_utime_calendar) },
990         {CALENDAR_VIEW_INSTANCE_LOCALTIME_CALENDAR, CAL_RECORD_TYPE_INSTANCE_ALLDAY, PTR_COUNT(__property_search_instance_localtime_calendar) },
991         {CALENDAR_VIEW_INSTANCE_UTIME_CALENDAR_EXTENDED, CAL_RECORD_TYPE_INSTANCE_NORMAL_EXTENDED, PTR_COUNT(__property_search_instance_utime_calendar_extended) },
992         {CALENDAR_VIEW_INSTANCE_LOCALTIME_CALENDAR_EXTENDED, CAL_RECORD_TYPE_INSTANCE_ALLDAY_EXTENDED, PTR_COUNT(__property_search_instance_localtime_calendar_extended) },
993         {CALENDAR_VIEW_EXTENDED, CAL_RECORD_TYPE_EXTENDED, PTR_COUNT(__property_extended) },
994 };
995
996 static bool cal_uri_property_flag = false;
997 static GHashTable *cal_uri_property_hash = NULL;
998 #ifdef CAL_IPC_CLIENT
999 static int calendar_view_count = 0;
1000 #endif
1001
1002 void cal_view_initialize(void)
1003 {
1004         bool bmutex = false;
1005
1006 #ifdef CAL_IPC_CLIENT
1007         cal_mutex_lock(CAL_MUTEX_PROPERTY_HASH);
1008         calendar_view_count++;
1009         cal_mutex_unlock(CAL_MUTEX_PROPERTY_HASH);
1010 #endif
1011
1012         if (cal_uri_property_flag == false) {
1013                 cal_mutex_lock(CAL_MUTEX_PROPERTY_HASH);
1014                 bmutex = true;
1015         }
1016
1017         if (NULL == cal_uri_property_hash) {
1018                 cal_uri_property_hash = g_hash_table_new(g_str_hash, g_str_equal);
1019                 if (cal_uri_property_hash) {
1020                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_CALENDAR, GINT_TO_POINTER(&(__tables[0])));
1021                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_EVENT, GINT_TO_POINTER(&(__tables[1])));
1022                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_TODO, GINT_TO_POINTER(&(__tables[2])));
1023                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_TIMEZONE, GINT_TO_POINTER(&(__tables[3])));
1024                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_ATTENDEE, GINT_TO_POINTER(&(__tables[4])));
1025                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_ALARM, GINT_TO_POINTER(&(__tables[5])));
1026                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_UPDATED_INFO, GINT_TO_POINTER(&(__tables[6])));
1027                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_EVENT_CALENDAR, GINT_TO_POINTER(&(__tables[7])));
1028                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_TODO_CALENDAR, GINT_TO_POINTER(&(__tables[8])));
1029                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_EVENT_CALENDAR_ATTENDEE, GINT_TO_POINTER(&(__tables[9])));
1030                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_INSTANCE_UTIME_CALENDAR, GINT_TO_POINTER(&(__tables[10])));
1031                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_INSTANCE_LOCALTIME_CALENDAR, GINT_TO_POINTER(&(__tables[11])));
1032                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_INSTANCE_UTIME_CALENDAR_EXTENDED, GINT_TO_POINTER(&(__tables[12])));
1033                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_INSTANCE_LOCALTIME_CALENDAR_EXTENDED, GINT_TO_POINTER(&(__tables[13])));
1034                         g_hash_table_insert(cal_uri_property_hash, CALENDAR_VIEW_EXTENDED, GINT_TO_POINTER(&(__tables[14])));
1035                 }
1036         }
1037
1038         if (bmutex == true) {
1039                 cal_uri_property_flag = true;
1040                 cal_mutex_unlock(CAL_MUTEX_PROPERTY_HASH);
1041         }
1042
1043         return ;
1044 }
1045
1046 cal_record_type_e cal_view_get_type(const char *view_uri)
1047 {
1048         cal_view_uri_info_s* view_uri_info = NULL;
1049         cal_record_type_e type = CAL_RECORD_TYPE_INVALID;
1050
1051         if (cal_uri_property_hash) {
1052                 view_uri_info = g_hash_table_lookup(cal_uri_property_hash, view_uri);
1053                 if (view_uri_info)
1054                         type = view_uri_info->type;
1055                 else
1056                         ERR("g_hash_table_lookup() Fail");
1057         } else {
1058                 ERR("Unable to get cal_uri_property_hash[%s]", view_uri);
1059         }
1060
1061         return type;
1062 }
1063
1064 void cal_view_finalize(void)
1065 {
1066 #ifdef CAL_IPC_CLIENT
1067         cal_mutex_lock(CAL_MUTEX_PROPERTY_HASH);
1068         if (calendar_view_count <= 0) {
1069                 cal_mutex_unlock(CAL_MUTEX_PROPERTY_HASH);
1070                 return ;
1071         }
1072         calendar_view_count--;
1073
1074         if (calendar_view_count == 0) {
1075                 if (cal_uri_property_hash) {
1076                         g_hash_table_destroy(cal_uri_property_hash);
1077                         cal_uri_property_hash = NULL;
1078                 }
1079         }
1080         cal_mutex_unlock(CAL_MUTEX_PROPERTY_HASH);
1081 #endif
1082 }
1083
1084 const cal_property_info_s* cal_view_get_property_info(const char *view_uri, int *count)
1085 {
1086         cal_property_info_s* tmp = NULL;
1087         cal_view_uri_info_s* view_uri_info = NULL;
1088
1089         if (cal_uri_property_hash) {
1090                 view_uri_info = g_hash_table_lookup(cal_uri_property_hash, view_uri);
1091                 if (view_uri_info) {
1092                         tmp = view_uri_info->properties;
1093                         *count = view_uri_info->property_count;
1094                 }
1095         }
1096
1097         return tmp;
1098 }
1099
1100 const char* cal_view_get_uri(const char *view_uri)
1101 {
1102         cal_view_uri_info_s* view_uri_info = NULL;
1103
1104         if (cal_uri_property_hash) {
1105                 view_uri_info = g_hash_table_lookup(cal_uri_property_hash, view_uri);
1106                 if (view_uri_info)
1107                         return view_uri_info->view_uri;
1108         }
1109
1110         return NULL;
1111 }