4 * Copyright (c) 2012 - 2015 Samsung Electronics Co., Ltd. All rights reserved.
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
10 * http://www.apache.org/licenses/LICENSE-2.0
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.
24 #include "calendar_list.h"
25 #include "cal_internal.h"
26 #include "cal_typedef.h"
29 #include "cal_record.h"
30 #include "cal_utils.h"
32 static int _cal_record_todo_create(calendar_record_h* out_record);
33 static int _cal_record_todo_destroy(calendar_record_h record, bool delete_child);
34 static int _cal_record_todo_clone(calendar_record_h record, calendar_record_h* out_record);
35 static int _cal_record_todo_get_str(calendar_record_h record, unsigned int property_id, char** out_str);
36 static int _cal_record_todo_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str);
37 static int _cal_record_todo_get_int(calendar_record_h record, unsigned int property_id, int* out_value);
38 static int _cal_record_todo_get_double(calendar_record_h record, unsigned int property_id, double* out_value);
39 static int _cal_record_todo_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value);
40 static int _cal_record_todo_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value);
41 static int _cal_record_todo_set_str(calendar_record_h record, unsigned int property_id, const char* value);
42 static int _cal_record_todo_set_int(calendar_record_h record, unsigned int property_id, int value);
43 static int _cal_record_todo_set_double(calendar_record_h record, unsigned int property_id, double value);
44 static int _cal_record_todo_set_lli(calendar_record_h record, unsigned int property_id, long long int value);
45 static int _cal_record_todo_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value);
46 static int _cal_record_todo_add_child_record(calendar_record_h record, unsigned int property_id, calendar_record_h child_record);
47 static int _cal_record_todo_remove_child_record(calendar_record_h record, unsigned int property_id, calendar_record_h child_record);
48 static int _cal_record_todo_get_child_record_count(calendar_record_h record, unsigned int property_id, unsigned int* count);
49 static int _cal_record_todo_get_child_record_at_p(calendar_record_h record, unsigned int property_id, int index, calendar_record_h* child_record);
50 static int _cal_record_todo_clone_child_record_list(calendar_record_h record, unsigned int property_id, calendar_list_h* out_list);
52 cal_record_plugin_cb_s cal_record_todo_plugin_cb = {
53 .create = _cal_record_todo_create,
54 .destroy = _cal_record_todo_destroy,
55 .clone = _cal_record_todo_clone,
56 .get_str = _cal_record_todo_get_str,
57 .get_str_p = _cal_record_todo_get_str_p,
58 .get_int = _cal_record_todo_get_int,
59 .get_double = _cal_record_todo_get_double,
60 .get_lli = _cal_record_todo_get_lli,
61 .get_caltime = _cal_record_todo_get_caltime,
62 .set_str = _cal_record_todo_set_str,
63 .set_int = _cal_record_todo_set_int,
64 .set_double = _cal_record_todo_set_double,
65 .set_lli = _cal_record_todo_set_lli,
66 .set_caltime = _cal_record_todo_set_caltime,
67 .add_child_record = _cal_record_todo_add_child_record,
68 .remove_child_record = _cal_record_todo_remove_child_record,
69 .get_child_record_count = _cal_record_todo_get_child_record_count,
70 .get_child_record_at_p = _cal_record_todo_get_child_record_at_p,
71 .clone_child_record_list = _cal_record_todo_clone_child_record_list
74 static void _cal_record_todo_struct_init(cal_todo_s *record)
76 memset(record, 0, sizeof(cal_todo_s));
78 record->todo_status = CALENDAR_TODO_STATUS_NONE;
79 record->calendar_id = DEFAULT_TODO_CALENDAR_BOOK_ID;
81 record->index = CAL_INVALID_ID;
82 record->summary = NULL;
83 record->description = NULL;
84 record->location = NULL;
85 record->categories = NULL;
87 record->is_deleted = 0;
88 record->latitude = CALENDAR_RECORD_NO_COORDINATE; /* set default 1000 out of range(-180 ~ 180) */
89 record->longitude = CALENDAR_RECORD_NO_COORDINATE; /* set default 1000 out of range(-180 ~ 180) */
90 record->priority = CALENDAR_TODO_PRIORITY_NONE;
91 record->freq = CALENDAR_RECURRENCE_NONE;
92 record->start.time.utime = CALENDAR_TODO_NO_START_DATE;
93 record->due.time.utime = CALENDAR_TODO_NO_DUE_DATE;
94 record->until.time.utime = CALENDAR_RECORD_NO_UNTIL;
96 record->alarm_list = calloc(1, sizeof(cal_list_s));
97 record->attendee_list = calloc(1, sizeof(cal_list_s));
98 record->extended_list = calloc(1, sizeof(cal_list_s));
103 static int _cal_record_todo_create(calendar_record_h* out_record)
105 cal_todo_s *temp = NULL;
106 int ret = CALENDAR_ERROR_NONE;
108 temp = calloc(1, sizeof(cal_todo_s));
109 RETVM_IF(NULL == temp, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
111 _cal_record_todo_struct_init(temp);
113 *out_record = (calendar_record_h)temp;
118 static void _cal_record_todo_struct_free(cal_todo_s *record, bool delete_child)
120 CAL_FREE(record->summary);
121 CAL_FREE(record->description);
122 CAL_FREE(record->location);
123 CAL_FREE(record->categories);
124 CAL_FREE(record->uid);
125 CAL_FREE(record->start_tzid);
126 CAL_FREE(record->due_tzid);
128 CAL_FREE(record->bysecond);
129 CAL_FREE(record->byminute);
130 CAL_FREE(record->byhour);
131 CAL_FREE(record->byday);
132 CAL_FREE(record->bymonthday);
133 CAL_FREE(record->byyearday);
134 CAL_FREE(record->byweekno);
135 CAL_FREE(record->bymonth);
136 CAL_FREE(record->bysetpos);
138 CAL_FREE(record->sync_data1);
139 CAL_FREE(record->sync_data2);
140 CAL_FREE(record->sync_data3);
141 CAL_FREE(record->sync_data4);
143 CAL_FREE(record->organizer_name);
144 CAL_FREE(record->organizer_email);
146 calendar_list_destroy((calendar_list_h)record->alarm_list, delete_child);
147 calendar_list_destroy((calendar_list_h)record->attendee_list, delete_child);
148 calendar_list_destroy((calendar_list_h)record->extended_list, delete_child);
153 static int _cal_record_todo_destroy(calendar_record_h record, bool delete_child)
155 int ret = CALENDAR_ERROR_NONE;
157 cal_todo_s *temp = (cal_todo_s*)(record);
159 _cal_record_todo_struct_free(temp, delete_child);
164 static int _cal_record_todo_clone(calendar_record_h record, calendar_record_h* out_record)
166 cal_todo_s *out_data = NULL;
167 cal_todo_s *src_data = NULL;
169 src_data = (cal_todo_s*)(record);
171 out_data = calloc(1, sizeof(cal_todo_s));
172 RETVM_IF(NULL == out_data, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
174 CAL_RECORD_COPY_COMMON(&(out_data->common), &(src_data->common));
176 out_data->index = src_data->index;
177 out_data->summary = cal_strdup(src_data->summary);
178 out_data->description = cal_strdup(src_data->description);
179 out_data->location = cal_strdup(src_data->location);
180 out_data->categories = cal_strdup(src_data->categories);
182 out_data->todo_status = src_data->todo_status;
183 out_data->priority = src_data->priority;
184 out_data->sensitivity = src_data->sensitivity;
186 out_data->uid = cal_strdup(src_data->uid);
188 out_data->calendar_id = src_data->calendar_id;
189 out_data->latitude = src_data->latitude;
190 out_data->longitude = src_data->longitude;
192 out_data->created_time = src_data->created_time;
193 out_data->completed_time = src_data->completed_time;
194 out_data->progress = src_data->progress;
195 out_data->is_deleted = src_data->is_deleted;
196 out_data->last_mod = src_data->last_mod;
198 out_data->freq = src_data->freq;
199 out_data->range_type = src_data->range_type;
200 out_data->until = src_data->until;
201 out_data->count = src_data->count;
202 out_data->interval = src_data->interval;
203 out_data->bysecond = cal_strdup(src_data->bysecond);
204 out_data->byminute = cal_strdup(src_data->byminute);
205 out_data->byhour = cal_strdup(src_data->byhour);
206 out_data->byday = cal_strdup(src_data->byday);
207 out_data->bymonthday = cal_strdup(src_data->bymonthday);
208 out_data->byyearday = cal_strdup(src_data->byyearday);
209 out_data->byweekno = cal_strdup(src_data->byweekno);
210 out_data->bymonth = cal_strdup(src_data->bymonth);
211 out_data->bysetpos = cal_strdup(src_data->bysetpos);
212 out_data->wkst = src_data->wkst;
213 out_data->has_alarm = src_data->has_alarm;
214 out_data->updated = src_data->updated;
216 out_data->sync_data1 = cal_strdup(src_data->sync_data1);
217 out_data->sync_data2 = cal_strdup(src_data->sync_data2);
218 out_data->sync_data3 = cal_strdup(src_data->sync_data3);
219 out_data->sync_data4 = cal_strdup(src_data->sync_data4);
221 out_data->start = src_data->start;
222 out_data->start_tzid = cal_strdup(src_data->start_tzid);
223 out_data->due = src_data->due;
224 out_data->due_tzid = cal_strdup(src_data->due_tzid);
226 out_data->organizer_name = cal_strdup(src_data->organizer_name);
227 out_data->organizer_email = cal_strdup(src_data->organizer_email);
228 out_data->has_attendee = src_data->has_attendee;
230 cal_list_clone((calendar_list_h)src_data->alarm_list, (calendar_list_h *)&out_data->alarm_list);
231 cal_list_clone((calendar_list_h)src_data->attendee_list, (calendar_list_h *)&out_data->attendee_list);
232 cal_list_clone((calendar_list_h)src_data->extended_list, (calendar_list_h *)&out_data->extended_list);
234 *out_record = (calendar_record_h)out_data;
236 return CALENDAR_ERROR_NONE;
239 static int _cal_record_todo_get_str(calendar_record_h record, unsigned int property_id, char** out_str)
241 cal_todo_s *rec = (cal_todo_s*)(record);
242 switch (property_id) {
243 case CAL_PROPERTY_TODO_SUMMARY:
244 *out_str = cal_strdup(rec->summary);
246 case CAL_PROPERTY_TODO_DESCRIPTION:
247 *out_str = cal_strdup(rec->description);
249 case CAL_PROPERTY_TODO_LOCATION:
250 *out_str = cal_strdup(rec->location);
252 case CAL_PROPERTY_TODO_CATEGORIES:
253 *out_str = cal_strdup(rec->categories);
255 case CAL_PROPERTY_TODO_UID:
256 *out_str = cal_strdup(rec->uid);
258 case CAL_PROPERTY_TODO_BYSECOND:
259 *out_str = cal_strdup(rec->bysecond);
261 case CAL_PROPERTY_TODO_BYMINUTE:
262 *out_str = cal_strdup(rec->byminute);
264 case CAL_PROPERTY_TODO_BYHOUR:
265 *out_str = cal_strdup(rec->byhour);
267 case CAL_PROPERTY_TODO_BYDAY:
268 *out_str = cal_strdup(rec->byday);
270 case CAL_PROPERTY_TODO_BYMONTHDAY:
271 *out_str = cal_strdup(rec->bymonthday);
273 case CAL_PROPERTY_TODO_BYYEARDAY:
274 *out_str = cal_strdup(rec->byyearday);
276 case CAL_PROPERTY_TODO_BYWEEKNO:
277 *out_str = cal_strdup(rec->byweekno);
279 case CAL_PROPERTY_TODO_BYMONTH:
280 *out_str = cal_strdup(rec->bymonth);
282 case CAL_PROPERTY_TODO_BYSETPOS:
283 *out_str = cal_strdup(rec->bysetpos);
285 case CAL_PROPERTY_TODO_SYNC_DATA1:
286 *out_str = cal_strdup(rec->sync_data1);
288 case CAL_PROPERTY_TODO_SYNC_DATA2:
289 *out_str = cal_strdup(rec->sync_data2);
291 case CAL_PROPERTY_TODO_SYNC_DATA3:
292 *out_str = cal_strdup(rec->sync_data3);
294 case CAL_PROPERTY_TODO_SYNC_DATA4:
295 *out_str = cal_strdup(rec->sync_data4);
297 case CAL_PROPERTY_TODO_START_TZID:
298 *out_str = cal_strdup(rec->start_tzid);
300 case CAL_PROPERTY_TODO_DUE_TZID:
301 *out_str = cal_strdup(rec->due_tzid);
303 case CAL_PROPERTY_TODO_ORGANIZER_NAME:
304 *out_str = cal_strdup(rec->organizer_name);
306 case CAL_PROPERTY_TODO_ORGANIZER_EMAIL:
307 *out_str = cal_strdup(rec->organizer_email);
310 /* LCOV_EXCL_START */
311 ERR("invalid parameter (property:0x%x)", property_id);
312 return CALENDAR_ERROR_INVALID_PARAMETER;
316 return CALENDAR_ERROR_NONE;
319 static int _cal_record_todo_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str)
321 cal_todo_s *rec = (cal_todo_s*)(record);
322 switch (property_id) {
323 case CAL_PROPERTY_TODO_SUMMARY:
324 *out_str = (rec->summary);
326 case CAL_PROPERTY_TODO_DESCRIPTION:
327 *out_str = (rec->description);
329 case CAL_PROPERTY_TODO_LOCATION:
330 *out_str = (rec->location);
332 case CAL_PROPERTY_TODO_CATEGORIES:
333 *out_str = (rec->categories);
335 case CAL_PROPERTY_TODO_UID:
336 *out_str = (rec->uid);
338 case CAL_PROPERTY_TODO_BYSECOND:
339 *out_str = (rec->bysecond);
341 case CAL_PROPERTY_TODO_BYMINUTE:
342 *out_str = (rec->byminute);
344 case CAL_PROPERTY_TODO_BYHOUR:
345 *out_str = (rec->byhour);
347 case CAL_PROPERTY_TODO_BYDAY:
348 *out_str = (rec->byday);
350 case CAL_PROPERTY_TODO_BYMONTHDAY:
351 *out_str = (rec->bymonthday);
353 case CAL_PROPERTY_TODO_BYYEARDAY:
354 *out_str = (rec->byyearday);
356 case CAL_PROPERTY_TODO_BYWEEKNO:
357 *out_str = (rec->byweekno);
359 case CAL_PROPERTY_TODO_BYMONTH:
360 *out_str = (rec->bymonth);
362 case CAL_PROPERTY_TODO_BYSETPOS:
363 *out_str = (rec->bysetpos);
365 case CAL_PROPERTY_TODO_SYNC_DATA1:
366 *out_str = (rec->sync_data1);
368 case CAL_PROPERTY_TODO_SYNC_DATA2:
369 *out_str = (rec->sync_data2);
371 case CAL_PROPERTY_TODO_SYNC_DATA3:
372 *out_str = (rec->sync_data3);
374 case CAL_PROPERTY_TODO_SYNC_DATA4:
375 *out_str = (rec->sync_data4);
377 case CAL_PROPERTY_TODO_START_TZID:
378 *out_str = (rec->start_tzid);
380 case CAL_PROPERTY_TODO_DUE_TZID:
381 *out_str = (rec->due_tzid);
383 case CAL_PROPERTY_TODO_ORGANIZER_NAME:
384 *out_str = (rec->organizer_name);
386 case CAL_PROPERTY_TODO_ORGANIZER_EMAIL:
387 *out_str = (rec->organizer_email);
390 /* LCOV_EXCL_START */
391 ERR("invalid parameter (property:0x%x)", property_id);
392 return CALENDAR_ERROR_INVALID_PARAMETER;
396 return CALENDAR_ERROR_NONE;
399 static int _cal_record_todo_get_int(calendar_record_h record, unsigned int property_id, int* out_value)
401 cal_todo_s *rec = (cal_todo_s*)(record);
402 switch (property_id) {
403 case CAL_PROPERTY_TODO_ID:
404 *out_value = (rec->index);
406 case CAL_PROPERTY_TODO_CALENDAR_ID:
407 *out_value = (rec->calendar_id);
409 case CAL_PROPERTY_TODO_TODO_STATUS:
410 *out_value = (rec->todo_status);
412 case CAL_PROPERTY_TODO_PRIORITY:
413 *out_value = (rec->priority);
415 case CAL_PROPERTY_TODO_SENSITIVITY:
416 *out_value = (rec->sensitivity);
418 case CAL_PROPERTY_TODO_PROGRESS:
419 *out_value = (rec->progress);
421 case CAL_PROPERTY_TODO_IS_DELETED:
422 *out_value = (rec->is_deleted);
424 case CAL_PROPERTY_TODO_FREQ:
425 *out_value = (rec->freq);
427 case CAL_PROPERTY_TODO_RANGE_TYPE:
428 *out_value = (rec->range_type);
430 case CAL_PROPERTY_TODO_COUNT:
431 *out_value = (rec->count);
433 case CAL_PROPERTY_TODO_INTERVAL:
434 *out_value = (rec->interval);
436 case CAL_PROPERTY_TODO_WKST:
437 *out_value = (rec->wkst);
439 case CAL_PROPERTY_TODO_HAS_ALARM:
440 *out_value = (rec->has_alarm);
442 case CAL_PROPERTY_TODO_HAS_ATTENDEE:
443 *out_value = (rec->has_attendee);
445 case CAL_PROPERTY_TODO_IS_ALLDAY:
446 *out_value = (rec->is_allday);
449 /* LCOV_EXCL_START */
450 ERR("invalid parameter (property:0x%x)", property_id);
451 return CALENDAR_ERROR_INVALID_PARAMETER;
455 return CALENDAR_ERROR_NONE;
458 static int _cal_record_todo_get_double(calendar_record_h record, unsigned int property_id, double* out_value)
460 cal_todo_s *rec = (cal_todo_s*)(record);
461 switch (property_id) {
462 case CAL_PROPERTY_TODO_LATITUDE:
463 *out_value = (rec->latitude);
465 case CAL_PROPERTY_TODO_LONGITUDE:
466 *out_value = (rec->longitude);
469 /* LCOV_EXCL_START */
470 ERR("invalid parameter (property:0x%x)", property_id);
471 return CALENDAR_ERROR_INVALID_PARAMETER;
475 return CALENDAR_ERROR_NONE;
478 static int _cal_record_todo_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value)
480 cal_todo_s *rec = (cal_todo_s*)(record);
481 switch (property_id) {
482 case CAL_PROPERTY_TODO_CREATED_TIME:
483 *out_value = (rec->created_time);
485 case CAL_PROPERTY_TODO_LAST_MODIFIED_TIME:
486 *out_value = (rec->last_mod);
488 case CAL_PROPERTY_TODO_COMPLETED_TIME:
489 *out_value = (rec->completed_time);
492 /* LCOV_EXCL_START */
493 ERR("invalid parameter (property:0x%x)", property_id);
494 return CALENDAR_ERROR_INVALID_PARAMETER;
498 return CALENDAR_ERROR_NONE;
501 static int _cal_record_todo_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value)
503 cal_todo_s *rec = (cal_todo_s*)(record);
504 switch (property_id) {
505 case CAL_PROPERTY_TODO_START:
506 *out_value = rec->start;
508 case CAL_PROPERTY_TODO_DUE:
509 *out_value = rec->due;
511 case CAL_PROPERTY_TODO_UNTIL:
512 *out_value = rec->until;
515 /* LCOV_EXCL_START */
516 ERR("invalid parameter (property:0x%x)", property_id);
517 return CALENDAR_ERROR_INVALID_PARAMETER;
521 return CALENDAR_ERROR_NONE;
524 static int _cal_record_todo_set_str(calendar_record_h record, unsigned int property_id, const char* value)
526 cal_todo_s *rec = (cal_todo_s*)(record);
527 switch (property_id) {
528 case CAL_PROPERTY_TODO_SUMMARY:
529 CAL_FREE(rec->summary);
530 rec->summary = cal_strdup(value);
532 case CAL_PROPERTY_TODO_DESCRIPTION:
533 CAL_FREE(rec->description);
534 rec->description = cal_strdup(value);
536 case CAL_PROPERTY_TODO_LOCATION:
537 CAL_FREE(rec->location);
538 rec->location = cal_strdup(value);
540 case CAL_PROPERTY_TODO_CATEGORIES:
541 CAL_FREE(rec->categories);
542 rec->categories = cal_strdup(value);
544 case CAL_PROPERTY_TODO_UID:
546 rec->uid = cal_strdup(value);
548 case CAL_PROPERTY_TODO_BYSECOND:
549 CAL_FREE(rec->bysecond);
550 rec->bysecond = cal_strdup(value);
552 case CAL_PROPERTY_TODO_BYMINUTE:
553 CAL_FREE(rec->byminute);
554 rec->byminute = cal_strdup(value);
556 case CAL_PROPERTY_TODO_BYHOUR:
557 CAL_FREE(rec->byhour);
558 rec->byhour = cal_strdup(value);
560 case CAL_PROPERTY_TODO_BYDAY:
561 CAL_FREE(rec->byday);
562 rec->byday = cal_strdup(value);
564 case CAL_PROPERTY_TODO_BYMONTHDAY:
565 CAL_FREE(rec->bymonthday);
566 rec->bymonthday = cal_strdup(value);
568 case CAL_PROPERTY_TODO_BYYEARDAY:
569 CAL_FREE(rec->byyearday);
570 rec->byyearday = cal_strdup(value);
572 case CAL_PROPERTY_TODO_BYWEEKNO:
573 CAL_FREE(rec->byweekno);
574 rec->byweekno = cal_strdup(value);
576 case CAL_PROPERTY_TODO_BYMONTH:
577 CAL_FREE(rec->bymonth);
578 rec->bymonth = cal_strdup(value);
580 case CAL_PROPERTY_TODO_BYSETPOS:
581 CAL_FREE(rec->bysetpos);
582 rec->bysetpos = cal_strdup(value);
584 case CAL_PROPERTY_TODO_SYNC_DATA1:
585 CAL_FREE(rec->sync_data1);
586 rec->sync_data1 = cal_strdup(value);
588 case CAL_PROPERTY_TODO_SYNC_DATA2:
589 CAL_FREE(rec->sync_data2);
590 rec->sync_data2 = cal_strdup(value);
592 case CAL_PROPERTY_TODO_SYNC_DATA3:
593 CAL_FREE(rec->sync_data3);
594 rec->sync_data3 = cal_strdup(value);
596 case CAL_PROPERTY_TODO_SYNC_DATA4:
597 CAL_FREE(rec->sync_data4);
598 rec->sync_data4 = cal_strdup(value);
600 case CAL_PROPERTY_TODO_START_TZID:
601 CAL_FREE(rec->start_tzid);
602 rec->start_tzid = cal_strdup(value);
604 case CAL_PROPERTY_TODO_DUE_TZID:
605 CAL_FREE(rec->due_tzid);
606 rec->due_tzid = cal_strdup(value);
608 case CAL_PROPERTY_TODO_ORGANIZER_NAME:
609 CAL_FREE(rec->organizer_name);
610 rec->organizer_name = cal_strdup(value);
612 case CAL_PROPERTY_TODO_ORGANIZER_EMAIL:
613 CAL_FREE(rec->organizer_email);
614 rec->organizer_email = cal_strdup(value);
617 /* LCOV_EXCL_START */
618 ERR("invalid parameter (value:%s)", value);
619 return CALENDAR_ERROR_INVALID_PARAMETER;
623 return CALENDAR_ERROR_NONE;
626 static int _cal_record_todo_set_int(calendar_record_h record, unsigned int property_id, int value)
628 cal_todo_s *rec = (cal_todo_s*)(record);
629 switch (property_id) {
630 case CAL_PROPERTY_TODO_ID:
631 (rec->index) = value;
633 case CAL_PROPERTY_TODO_CALENDAR_ID:
634 (rec->calendar_id) = value;
636 case CAL_PROPERTY_TODO_TODO_STATUS:
638 case CALENDAR_TODO_STATUS_NONE:
639 case CALENDAR_TODO_STATUS_NEEDS_ACTION:
640 case CALENDAR_TODO_STATUS_COMPLETED:
641 case CALENDAR_TODO_STATUS_IN_PROCESS:
642 case CALENDAR_TODO_STATUS_CANCELED:
643 (rec->todo_status) = value;
646 /* LCOV_EXCL_START */
647 ERR("invalid parameter (value:%d)", value);
648 return CALENDAR_ERROR_INVALID_PARAMETER;
652 case CAL_PROPERTY_TODO_PRIORITY:
654 case CALENDAR_TODO_PRIORITY_NONE:
655 case CALENDAR_TODO_PRIORITY_LOW:
656 case CALENDAR_TODO_PRIORITY_NORMAL:
657 case CALENDAR_TODO_PRIORITY_HIGH:
658 (rec->priority) = value;
661 /* LCOV_EXCL_START */
662 ERR("invalid parameter (value:%d)", value);
663 return CALENDAR_ERROR_INVALID_PARAMETER;
667 case CAL_PROPERTY_TODO_SENSITIVITY:
668 (rec->sensitivity) = value;
670 case CAL_PROPERTY_TODO_PROGRESS:
671 (rec->progress) = value;
673 case CAL_PROPERTY_TODO_IS_DELETED:
674 (rec->is_deleted) = value;
676 case CAL_PROPERTY_TODO_FREQ:
678 case CALENDAR_RECURRENCE_NONE:
679 case CALENDAR_RECURRENCE_DAILY:
680 case CALENDAR_RECURRENCE_WEEKLY:
681 case CALENDAR_RECURRENCE_MONTHLY:
682 case CALENDAR_RECURRENCE_YEARLY:
686 /* LCOV_EXCL_START */
687 ERR("invalid parameter (value:%d)", value);
688 return CALENDAR_ERROR_INVALID_PARAMETER;
692 case CAL_PROPERTY_TODO_RANGE_TYPE:
694 case CALENDAR_RANGE_UNTIL:
695 case CALENDAR_RANGE_COUNT:
696 case CALENDAR_RANGE_NONE:
697 (rec->range_type) = value;
700 /* LCOV_EXCL_START */
701 ERR("invalid parameter (value:%d)", value);
702 return CALENDAR_ERROR_INVALID_PARAMETER;
706 case CAL_PROPERTY_TODO_COUNT:
707 (rec->count) = value;
709 case CAL_PROPERTY_TODO_INTERVAL:
710 (rec->interval) = value;
712 case CAL_PROPERTY_TODO_WKST:
715 DBG("set wkst as default");
716 case CALENDAR_SUNDAY:
717 case CALENDAR_MONDAY:
718 case CALENDAR_TUESDAY:
719 case CALENDAR_WEDNESDAY:
720 case CALENDAR_THURSDAY:
721 case CALENDAR_FRIDAY:
722 case CALENDAR_SATURDAY:
726 /* LCOV_EXCL_START */
727 ERR("invalid parameter (value:%d)", value);
728 return CALENDAR_ERROR_INVALID_PARAMETER;
732 case CAL_PROPERTY_TODO_HAS_ALARM:
733 (rec->has_alarm) = value;
735 case CAL_PROPERTY_TODO_HAS_ATTENDEE:
736 (rec->has_attendee) = value;
738 case CAL_PROPERTY_TODO_IS_ALLDAY:
739 (rec->is_allday) = value;
742 /* LCOV_EXCL_START */
743 ERR("invalid parameter (property:0x%x)", property_id);
744 return CALENDAR_ERROR_INVALID_PARAMETER;
748 return CALENDAR_ERROR_NONE;
751 static int _cal_record_todo_set_double(calendar_record_h record, unsigned int property_id, double value)
753 cal_todo_s *rec = (cal_todo_s*)(record);
754 switch (property_id) {
755 case CAL_PROPERTY_TODO_LATITUDE:
756 (rec->latitude) = value;
758 case CAL_PROPERTY_TODO_LONGITUDE:
759 (rec->longitude) = value;
762 /* LCOV_EXCL_START */
763 ERR("invalid parameter (property:0x%x)", property_id);
764 return CALENDAR_ERROR_INVALID_PARAMETER;
768 return CALENDAR_ERROR_NONE;
771 static int _cal_record_todo_set_lli(calendar_record_h record, unsigned int property_id, long long int value)
773 cal_todo_s *rec = (cal_todo_s*)(record);
774 switch (property_id) {
775 case CAL_PROPERTY_TODO_COMPLETED_TIME:
776 (rec->completed_time) = value;
778 case CAL_PROPERTY_TODO_CREATED_TIME:
779 (rec->created_time) = value;
782 /* LCOV_EXCL_START */
783 ERR("invalid parameter (property:0x%x)", property_id);
784 return CALENDAR_ERROR_INVALID_PARAMETER;
788 return CALENDAR_ERROR_NONE;
791 static int _cal_record_todo_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value)
793 cal_todo_s *rec = (cal_todo_s*)(record);
794 switch (property_id) {
795 case CAL_PROPERTY_TODO_START:
796 (rec->start) = value;
798 case CAL_PROPERTY_TODO_DUE:
801 case CAL_PROPERTY_TODO_UNTIL:
802 (rec->until) = value;
805 /* LCOV_EXCL_START */
806 ERR("invalid parameter (property:0x%x)", property_id);
807 return CALENDAR_ERROR_INVALID_PARAMETER;
811 return CALENDAR_ERROR_NONE;
814 static int _cal_record_todo_reset_child_record_id(calendar_record_h child_record)
816 cal_record_s *record = (cal_record_s*)child_record;
817 RETV_IF(NULL == record, CALENDAR_ERROR_INVALID_PARAMETER);
819 switch (record->type) {
820 case CAL_RECORD_TYPE_ALARM:
821 ((cal_alarm_s *)record)->id = 0;
823 case CAL_RECORD_TYPE_ATTENDEE:
824 ((cal_attendee_s *)record)->id = 0;
826 case CAL_RECORD_TYPE_EXTENDED:
827 ((cal_extended_s *)record)->id = 0;
830 /* LCOV_EXCL_START */
831 ERR("Invalid child record type (%d)", record->type);
832 return CALENDAR_ERROR_INVALID_PARAMETER;
835 return CALENDAR_ERROR_NONE;
839 static int _cal_record_todo_add_child_record(calendar_record_h record, unsigned int property_id, calendar_record_h child_record)
841 int ret = CALENDAR_ERROR_NONE;
842 cal_todo_s *rec = (cal_todo_s*)(record);
843 _cal_record_todo_reset_child_record_id(child_record);
845 switch (property_id) {
846 case CAL_PROPERTY_TODO_CALENDAR_ALARM:
847 ret = calendar_list_add((calendar_list_h)rec->alarm_list, child_record);
850 case CAL_PROPERTY_TODO_CALENDAR_ATTENDEE:
851 ret = calendar_list_add((calendar_list_h)rec->attendee_list, child_record);
852 rec->has_attendee = 1;
854 case CAL_PROPERTY_TODO_EXTENDED:
855 ret = calendar_list_add((calendar_list_h)rec->extended_list, child_record);
858 /* LCOV_EXCL_START */
859 ERR("invalid parameter (property:0x%x)", property_id);
860 return CALENDAR_ERROR_INVALID_PARAMETER;
866 static int _cal_record_todo_remove_child_record(calendar_record_h record, unsigned int property_id, calendar_record_h child_record)
868 int ret = CALENDAR_ERROR_NONE;
869 cal_todo_s *rec = (cal_todo_s *)record;
871 switch (property_id) {
872 case CAL_PROPERTY_TODO_CALENDAR_ALARM:
873 ret = calendar_list_remove((calendar_list_h)rec->alarm_list, child_record);
874 if (rec->alarm_list->count == 0)
877 case CAL_PROPERTY_TODO_CALENDAR_ATTENDEE:
878 ret = calendar_list_remove((calendar_list_h)rec->attendee_list, child_record);
879 if (rec->attendee_list->count == 0)
880 rec->has_attendee = 0;
882 case CAL_PROPERTY_TODO_EXTENDED:
883 ret = calendar_list_remove((calendar_list_h)rec->extended_list, child_record);
886 /* LCOV_EXCL_START */
887 ERR("invalid parameter (property:0x%x)", property_id);
888 return CALENDAR_ERROR_INVALID_PARAMETER;
894 static int _cal_record_todo_get_child_record_count(calendar_record_h record, unsigned int property_id , unsigned int* count)
896 int ret = CALENDAR_ERROR_NONE;
897 cal_todo_s *rec = (cal_todo_s *)record;
899 RETV_IF(NULL == count, CALENDAR_ERROR_INVALID_PARAMETER);
902 switch (property_id) {
903 case CAL_PROPERTY_TODO_CALENDAR_ALARM:
904 ret = calendar_list_get_count((calendar_list_h)rec->alarm_list, (int *)count);
906 case CAL_PROPERTY_TODO_CALENDAR_ATTENDEE:
907 ret = calendar_list_get_count((calendar_list_h)rec->attendee_list, (int *)count);
909 case CAL_PROPERTY_TODO_EXTENDED:
910 ret = calendar_list_get_count((calendar_list_h)rec->extended_list, (int *)count);
913 /* LCOV_EXCL_START */
914 ERR("invalid parameter (property:0x%x)", property_id);
915 return CALENDAR_ERROR_INVALID_PARAMETER;
921 static int _cal_record_todo_get_child_record_at_p(calendar_record_h record, unsigned int property_id, int index, calendar_record_h* child_record)
924 cal_todo_s *rec = (cal_todo_s*)(record);
926 RETV_IF(NULL == child_record, CALENDAR_ERROR_INVALID_PARAMETER);
927 *child_record = NULL;
929 switch (property_id) {
930 case CAL_PROPERTY_TODO_CALENDAR_ALARM:
931 ret = cal_list_get_nth_record_p(rec->alarm_list, index, child_record);
933 case CAL_PROPERTY_TODO_CALENDAR_ATTENDEE:
934 ret = cal_list_get_nth_record_p(rec->attendee_list, index, child_record);
936 case CAL_PROPERTY_TODO_EXTENDED:
937 ret = cal_list_get_nth_record_p(rec->extended_list, index, child_record);
940 /* LCOV_EXCL_START */
941 ERR("invalid parameter (property:0x%x)", property_id);
942 return CALENDAR_ERROR_INVALID_PARAMETER;
948 static int _cal_record_todo_clone_child_record_list(calendar_record_h record, unsigned int property_id, calendar_list_h* out_list)
951 cal_todo_s *rec = (cal_todo_s*)(record);
953 RETV_IF(NULL == out_list, CALENDAR_ERROR_INVALID_PARAMETER);
956 switch (property_id) {
957 case CAL_PROPERTY_TODO_CALENDAR_ALARM:
958 ret = cal_list_clone((calendar_list_h)rec->alarm_list, out_list);
960 case CAL_PROPERTY_TODO_CALENDAR_ATTENDEE:
961 ret = cal_list_clone((calendar_list_h)rec->attendee_list, out_list);
963 case CAL_PROPERTY_TODO_EXTENDED:
964 ret = cal_list_clone((calendar_list_h)rec->extended_list, out_list);
967 /* LCOV_EXCL_START */
968 ERR("invalid parameter (property:0x%x)", property_id);
969 return CALENDAR_ERROR_INVALID_PARAMETER;