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