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 "cal_internal.h"
25 #include "cal_typedef.h"
27 #include "cal_record.h"
28 #include "cal_utils.h"
30 static int _cal_record_instance_localtime_extended_create(calendar_record_h* out_record);
31 static int _cal_record_instance_localtime_extended_destroy(calendar_record_h record, bool delete_child);
32 static int _cal_record_instance_localtime_extended_clone(calendar_record_h record, calendar_record_h* out_record);
33 static int _cal_record_instance_localtime_extended_get_str(calendar_record_h record, unsigned int property_id, char** out_str);
34 static int _cal_record_instance_localtime_extended_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str);
35 static int _cal_record_instance_localtime_extended_get_int(calendar_record_h record, unsigned int property_id, int* out_value);
36 static int _cal_record_instance_localtime_extended_get_double(calendar_record_h record, unsigned int property_id, double* out_value);
37 static int _cal_record_instance_localtime_extended_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value);
38 static int _cal_record_instance_localtime_extended_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value);
39 static int _cal_record_instance_localtime_extended_set_str(calendar_record_h record, unsigned int property_id, const char* value);
40 static int _cal_record_instance_localtime_extended_set_int(calendar_record_h record, unsigned int property_id, int value);
41 static int _cal_record_instance_localtime_extended_set_double(calendar_record_h record, unsigned int property_id, double value);
42 static int _cal_record_instance_localtime_extended_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value);
44 cal_record_plugin_cb_s cal_record_instance_localtime_extended_plugin_cb = {
45 .create = _cal_record_instance_localtime_extended_create,
46 .destroy = _cal_record_instance_localtime_extended_destroy,
47 .clone = _cal_record_instance_localtime_extended_clone,
48 .get_str = _cal_record_instance_localtime_extended_get_str,
49 .get_str_p = _cal_record_instance_localtime_extended_get_str_p,
50 .get_int = _cal_record_instance_localtime_extended_get_int,
51 .get_double = _cal_record_instance_localtime_extended_get_double,
52 .get_lli = _cal_record_instance_localtime_extended_get_lli,
53 .get_caltime = _cal_record_instance_localtime_extended_get_caltime,
54 .set_str = _cal_record_instance_localtime_extended_set_str,
55 .set_int = _cal_record_instance_localtime_extended_set_int,
56 .set_double = _cal_record_instance_localtime_extended_set_double,
58 .set_caltime = _cal_record_instance_localtime_extended_set_caltime,
59 .add_child_record = NULL,
60 .remove_child_record = NULL,
61 .get_child_record_count = NULL,
62 .get_child_record_at_p = NULL,
63 .clone_child_record_list = NULL
66 static void _cal_record_instance_localtime_extended_struct_init(cal_instance_localtime_extended_s* record)
68 memset(record, 0, sizeof(cal_instance_localtime_extended_s));
70 record->event_status = CALENDAR_EVENT_STATUS_NONE;
71 record->calendar_id = DEFAULT_EVENT_CALENDAR_BOOK_ID;
72 record->event_id = CAL_INVALID_ID;
74 record->busy_status = 2;
75 record->summary = NULL;
76 record->description = NULL;
77 record->location = NULL;
79 record->latitude = 1000; /* set default 1000 out of range(-180 ~ 180) */
80 record->longitude = 1000; /* set default 1000 out of range(-180 ~ 180) */
85 static int _cal_record_instance_localtime_extended_create(calendar_record_h* out_record)
87 cal_instance_localtime_extended_s *temp = NULL;
88 int ret = CALENDAR_ERROR_NONE;
90 temp = calloc(1, sizeof(cal_instance_localtime_extended_s));
91 RETVM_IF(NULL == temp, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
93 _cal_record_instance_localtime_extended_struct_init(temp);
95 *out_record = (calendar_record_h)temp;
100 static void _cal_record_instance_localtime_extended_struct_free(cal_instance_localtime_extended_s *record)
102 CAL_FREE(record->summary);
103 CAL_FREE(record->description);
104 CAL_FREE(record->location);
105 CAL_FREE(record->organizer_name);
106 CAL_FREE(record->categories);
107 CAL_FREE(record->sync_data1);
108 CAL_FREE(record->sync_data2);
109 CAL_FREE(record->sync_data3);
110 CAL_FREE(record->sync_data4);
115 static int _cal_record_instance_localtime_extended_destroy(calendar_record_h record, bool delete_child)
117 int ret = CALENDAR_ERROR_NONE;
119 cal_instance_localtime_extended_s *temp = (cal_instance_localtime_extended_s*)(record);
121 _cal_record_instance_localtime_extended_struct_free(temp);
126 static int _cal_record_instance_localtime_extended_clone(calendar_record_h record, calendar_record_h* out_record)
128 cal_instance_localtime_extended_s *out_data = NULL;
129 cal_instance_localtime_extended_s *src_data = NULL;
131 src_data = (cal_instance_localtime_extended_s*)(record);
133 out_data = calloc(1, sizeof(cal_instance_localtime_extended_s));
134 RETVM_IF(NULL == out_data, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
136 CAL_RECORD_COPY_COMMON(&(out_data->common), &(src_data->common));
138 out_data->event_id = src_data->event_id;
139 out_data->calendar_id = src_data->calendar_id;
140 out_data->start = src_data->start;
141 out_data->end = src_data->end;
142 out_data->summary = cal_strdup(src_data->summary);
143 out_data->description = cal_strdup(src_data->description);
144 out_data->location = cal_strdup(src_data->location);
145 out_data->busy_status = src_data->busy_status;
146 out_data->event_status = src_data->event_status;
147 out_data->priority = src_data->priority;
148 out_data->sensitivity = src_data->sensitivity;
149 out_data->has_rrule = src_data->has_rrule;
150 out_data->latitude = src_data->latitude;
151 out_data->longitude = src_data->longitude;
152 out_data->has_alarm = src_data->has_alarm;
153 out_data->original_event_id = src_data->original_event_id;
154 out_data->last_mod = src_data->last_mod;
155 out_data->organizer_name = cal_strdup(src_data->organizer_name);
156 out_data->categories = cal_strdup(src_data->categories);
157 out_data->sync_data1 = cal_strdup(src_data->sync_data1);
158 out_data->sync_data2 = cal_strdup(src_data->sync_data2);
159 out_data->sync_data3 = cal_strdup(src_data->sync_data3);
160 out_data->sync_data4 = cal_strdup(src_data->sync_data4);
162 *out_record = (calendar_record_h)out_data;
164 return CALENDAR_ERROR_NONE;
167 static int _cal_record_instance_localtime_extended_get_str(calendar_record_h record, unsigned int property_id, char** out_str)
169 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
170 switch (property_id) {
171 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SUMMARY:
172 *out_str = cal_strdup(rec->summary);
174 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_DESCRIPTION:
175 *out_str = cal_strdup(rec->description);
177 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_LOCATION:
178 *out_str = cal_strdup(rec->location);
180 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA1:
181 *out_str = cal_strdup(rec->sync_data1);
183 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_ORGANIZER_NAME:
184 *out_str = cal_strdup(rec->organizer_name);
186 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_CATEGORIES:
187 *out_str = cal_strdup(rec->categories);
189 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA2:
190 *out_str = cal_strdup(rec->sync_data2);
192 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA3:
193 *out_str = cal_strdup(rec->sync_data3);
195 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA4:
196 *out_str = cal_strdup(rec->sync_data4);
199 /* LCOV_EXCL_START */
200 ERR("invalid parameter (property:0x%x)", property_id);
201 return CALENDAR_ERROR_INVALID_PARAMETER;
205 return CALENDAR_ERROR_NONE;
208 static int _cal_record_instance_localtime_extended_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str)
210 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
211 switch (property_id) {
212 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SUMMARY:
213 *out_str = (rec->summary);
215 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_DESCRIPTION:
216 *out_str = (rec->description);
218 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_LOCATION:
219 *out_str = (rec->location);
221 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA1:
222 *out_str = (rec->sync_data1);
224 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_ORGANIZER_NAME:
225 *out_str = (rec->organizer_name);
227 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_CATEGORIES:
228 *out_str = (rec->categories);
230 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA2:
231 *out_str = (rec->sync_data2);
233 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA3:
234 *out_str = (rec->sync_data3);
236 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA4:
237 *out_str = (rec->sync_data4);
240 /* LCOV_EXCL_START */
241 ERR("invalid parameter (property:0x%x)", property_id);
242 return CALENDAR_ERROR_INVALID_PARAMETER;
246 return CALENDAR_ERROR_NONE;
249 static int _cal_record_instance_localtime_extended_get_int(calendar_record_h record, unsigned int property_id, int* out_value)
251 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
252 switch (property_id) {
253 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_EVENT_ID:
254 *out_value = (rec->event_id);
256 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_BOOK_ID:
257 *out_value = (rec->calendar_id);
259 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_BUSY_STATUS:
260 *out_value = (rec->busy_status);
262 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_EVENT_STATUS:
263 *out_value = (rec->event_status);
265 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_PRIORITY:
266 *out_value = (rec->priority);
268 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SENSITIVITY:
269 *out_value = (rec->sensitivity);
271 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_HAS_RRULE:
272 *out_value = (rec->has_rrule);
274 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_HAS_ALARM:
275 *out_value = (rec->has_alarm);
277 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_ORIGINAL_EVENT_ID:
278 *out_value = (rec->original_event_id);
280 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_HAS_ATTENDEE:
281 *out_value = (rec->has_attendee);
283 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_IS_ALLDAY:
284 *out_value = (rec->is_allday);
288 /* LCOV_EXCL_START */
289 ERR("invalid parameter (property:0x%x)", property_id);
290 return CALENDAR_ERROR_INVALID_PARAMETER;
294 return CALENDAR_ERROR_NONE;
297 static int _cal_record_instance_localtime_extended_get_double(calendar_record_h record, unsigned int property_id, double* out_value)
299 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
300 switch (property_id) {
301 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_LATITUDE:
302 *out_value = (rec->latitude);
304 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_LONGITUDE:
305 *out_value = (rec->longitude);
309 /* LCOV_EXCL_START */
310 ERR("invalid parameter (property:0x%x)", property_id);
311 return CALENDAR_ERROR_INVALID_PARAMETER;
315 return CALENDAR_ERROR_NONE;
318 static int _cal_record_instance_localtime_extended_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value)
320 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
321 switch (property_id) {
322 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_LAST_MODIFIED_TIME:
323 *out_value = (rec->last_mod);
326 return CALENDAR_ERROR_INVALID_PARAMETER;
329 return CALENDAR_ERROR_NONE;
332 static int _cal_record_instance_localtime_extended_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value)
334 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
335 switch (property_id) {
336 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_START:
337 *out_value = rec->start;
339 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_END:
340 *out_value = rec->end;
343 /* LCOV_EXCL_START */
344 ERR("invalid parameter (property:0x%x)", property_id);
345 return CALENDAR_ERROR_INVALID_PARAMETER;
349 return CALENDAR_ERROR_NONE;
352 static int _cal_record_instance_localtime_extended_set_str(calendar_record_h record, unsigned int property_id, const char* value)
354 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
355 switch (property_id) {
356 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SUMMARY:
357 CAL_FREE(rec->summary);
358 rec->summary = cal_strdup(value);
360 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_DESCRIPTION:
361 CAL_FREE(rec->description);
362 rec->description = cal_strdup(value);
364 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_LOCATION:
365 CAL_FREE(rec->location);
366 rec->location = cal_strdup(value);
368 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA1:
369 CAL_FREE(rec->sync_data1);
370 rec->sync_data1 = cal_strdup(value);
372 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_ORGANIZER_NAME:
373 CAL_FREE(rec->organizer_name);
374 rec->organizer_name = cal_strdup(value);
376 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_CATEGORIES:
377 CAL_FREE(rec->categories);
378 rec->categories = cal_strdup(value);
380 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA2:
381 CAL_FREE(rec->sync_data2);
382 rec->sync_data2 = cal_strdup(value);
384 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA3:
385 CAL_FREE(rec->sync_data3);
386 rec->sync_data3 = cal_strdup(value);
388 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SYNC_DATA4:
389 CAL_FREE(rec->sync_data4);
390 rec->sync_data4 = cal_strdup(value);
393 /* LCOV_EXCL_START */
394 ERR("invalid parameter (property:0x%x)", property_id);
395 return CALENDAR_ERROR_INVALID_PARAMETER;
399 return CALENDAR_ERROR_NONE;
402 static int _cal_record_instance_localtime_extended_set_int(calendar_record_h record, unsigned int property_id, int value)
404 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
405 switch (property_id) {
406 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_EVENT_ID:
407 (rec->event_id) = value;
409 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_BOOK_ID:
410 (rec->calendar_id) = value;
412 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_BUSY_STATUS:
413 (rec->busy_status) = value;
415 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_EVENT_STATUS:
416 (rec->event_status) = value;
418 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_PRIORITY:
419 (rec->priority) = value;
421 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_SENSITIVITY:
422 (rec->sensitivity) = value;
424 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_HAS_RRULE:
425 (rec->has_rrule) = value;
427 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_HAS_ALARM:
428 (rec->has_alarm) = value;
430 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_ORIGINAL_EVENT_ID:
431 (rec->original_event_id) = value;
433 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_HAS_ATTENDEE:
434 (rec->has_attendee) = value;
437 /* LCOV_EXCL_START */
438 ERR("invalid parameter (property:0x%x)", property_id);
439 return CALENDAR_ERROR_INVALID_PARAMETER;
443 return CALENDAR_ERROR_NONE;
446 static int _cal_record_instance_localtime_extended_set_double(calendar_record_h record, unsigned int property_id, double value)
448 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
449 switch (property_id) {
450 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_LATITUDE:
451 (rec->latitude) = value;
453 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_LONGITUDE:
454 (rec->longitude) = value;
458 /* LCOV_EXCL_START */
459 ERR("invalid parameter (property:0x%x)", property_id);
460 return CALENDAR_ERROR_INVALID_PARAMETER;
464 return CALENDAR_ERROR_NONE;
467 static int _cal_record_instance_localtime_extended_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value)
469 cal_instance_localtime_extended_s *rec = (cal_instance_localtime_extended_s*)(record);
470 switch (property_id) {
471 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_START:
474 case CAL_PROPERTY_INSTANCE_LOCALTIME_EXTENDED_END:
478 /* LCOV_EXCL_START */
479 ERR("invalid parameter (property:0x%x)", property_id);
480 return CALENDAR_ERROR_INVALID_PARAMETER;
484 return CALENDAR_ERROR_NONE;