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_create(calendar_record_h* out_record);
31 static int _cal_record_instance_localtime_destroy(calendar_record_h record, bool delete_child);
32 static int _cal_record_instance_localtime_clone(calendar_record_h record, calendar_record_h* out_record);
33 static int _cal_record_instance_localtime_get_str(calendar_record_h record, unsigned int property_id, char** out_str);
34 static int _cal_record_instance_localtime_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str);
35 static int _cal_record_instance_localtime_get_int(calendar_record_h record, unsigned int property_id, int* out_value);
36 static int _cal_record_instance_localtime_get_double(calendar_record_h record, unsigned int property_id, double* out_value);
37 static int _cal_record_instance_localtime_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value);
38 static int _cal_record_instance_localtime_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value);
39 static int _cal_record_instance_localtime_set_str(calendar_record_h record, unsigned int property_id, const char* value);
40 static int _cal_record_instance_localtime_set_int(calendar_record_h record, unsigned int property_id, int value);
41 static int _cal_record_instance_localtime_set_double(calendar_record_h record, unsigned int property_id, double value);
42 static int _cal_record_instance_localtime_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value);
44 cal_record_plugin_cb_s cal_record_instance_localtime_plugin_cb = {
45 .create = _cal_record_instance_localtime_create,
46 .destroy = _cal_record_instance_localtime_destroy,
47 .clone = _cal_record_instance_localtime_clone,
48 .get_str = _cal_record_instance_localtime_get_str,
49 .get_str_p = _cal_record_instance_localtime_get_str_p,
50 .get_int = _cal_record_instance_localtime_get_int,
51 .get_double = _cal_record_instance_localtime_get_double,
52 .get_lli = _cal_record_instance_localtime_get_lli,
53 .get_caltime = _cal_record_instance_localtime_get_caltime,
54 .set_str = _cal_record_instance_localtime_set_str,
55 .set_int = _cal_record_instance_localtime_set_int,
56 .set_double = _cal_record_instance_localtime_set_double,
58 .set_caltime = _cal_record_instance_localtime_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_struct_init(cal_instance_localtime_s* record)
68 memset(record, 0, sizeof(cal_instance_localtime_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_create(calendar_record_h* out_record)
87 cal_instance_localtime_s *temp = NULL;
88 int ret = CALENDAR_ERROR_NONE;
90 temp = calloc(1, sizeof(cal_instance_localtime_s));
91 RETVM_IF(NULL == temp, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
93 _cal_record_instance_localtime_struct_init(temp);
95 *out_record = (calendar_record_h)temp;
100 static void _cal_record_instance_localtime_struct_free(cal_instance_localtime_s *record)
102 CAL_FREE(record->summary);
103 CAL_FREE(record->description);
104 CAL_FREE(record->location);
105 CAL_FREE(record->sync_data1);
110 static int _cal_record_instance_localtime_destroy(calendar_record_h record, bool delete_child)
112 int ret = CALENDAR_ERROR_NONE;
114 cal_instance_localtime_s *temp = (cal_instance_localtime_s*)(record);
116 _cal_record_instance_localtime_struct_free(temp);
121 static int _cal_record_instance_localtime_clone(calendar_record_h record, calendar_record_h* out_record)
123 cal_instance_localtime_s *out_data = NULL;
124 cal_instance_localtime_s *src_data = NULL;
126 src_data = (cal_instance_localtime_s*)(record);
128 out_data = calloc(1, sizeof(cal_instance_localtime_s));
129 RETVM_IF(NULL == out_data, CALENDAR_ERROR_OUT_OF_MEMORY, "calloc() Fail");
131 CAL_RECORD_COPY_COMMON(&(out_data->common), &(src_data->common));
133 out_data->event_id = src_data->event_id;
134 out_data->calendar_id = src_data->calendar_id;
135 out_data->start = src_data->start;
136 out_data->end = src_data->end;
137 out_data->summary = cal_strdup(src_data->summary);
138 out_data->description = cal_strdup(src_data->description);
139 out_data->location = cal_strdup(src_data->location);
140 out_data->busy_status = src_data->busy_status;
141 out_data->event_status = src_data->event_status;
142 out_data->priority = src_data->priority;
143 out_data->sensitivity = src_data->sensitivity;
144 out_data->has_rrule = src_data->has_rrule;
145 out_data->latitude = src_data->latitude;
146 out_data->longitude = src_data->longitude;
147 out_data->has_alarm = src_data->has_alarm;
148 out_data->original_event_id = src_data->original_event_id;
149 out_data->last_mod = src_data->last_mod;
150 out_data->sync_data1 = cal_strdup(src_data->sync_data1);
152 *out_record = (calendar_record_h)out_data;
154 return CALENDAR_ERROR_NONE;
157 static int _cal_record_instance_localtime_get_str(calendar_record_h record, unsigned int property_id, char** out_str)
159 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
160 switch (property_id) {
161 case CAL_PROPERTY_INSTANCE_LOCALTIME_SUMMARY:
162 *out_str = cal_strdup(rec->summary);
164 case CAL_PROPERTY_INSTANCE_LOCALTIME_DESCRIPTION:
165 *out_str = cal_strdup(rec->description);
167 case CAL_PROPERTY_INSTANCE_LOCALTIME_LOCATION:
168 *out_str = cal_strdup(rec->location);
170 case CAL_PROPERTY_INSTANCE_LOCALTIME_SYNC_DATA1:
171 *out_str = cal_strdup(rec->sync_data1);
174 /* LCOV_EXCL_START */
175 ERR("invalid parameter (property:0x%x)", property_id);
176 return CALENDAR_ERROR_INVALID_PARAMETER;
180 return CALENDAR_ERROR_NONE;
183 static int _cal_record_instance_localtime_get_str_p(calendar_record_h record, unsigned int property_id, char** out_str)
185 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
186 switch (property_id) {
187 case CAL_PROPERTY_INSTANCE_LOCALTIME_SUMMARY:
188 *out_str = (rec->summary);
190 case CAL_PROPERTY_INSTANCE_LOCALTIME_DESCRIPTION:
191 *out_str = (rec->description);
193 case CAL_PROPERTY_INSTANCE_LOCALTIME_LOCATION:
194 *out_str = (rec->location);
196 case CAL_PROPERTY_INSTANCE_LOCALTIME_SYNC_DATA1:
197 *out_str = (rec->sync_data1);
200 /* LCOV_EXCL_START */
201 ERR("invalid parameter (property:0x%x)", property_id);
202 return CALENDAR_ERROR_INVALID_PARAMETER;
206 return CALENDAR_ERROR_NONE;
209 static int _cal_record_instance_localtime_get_int(calendar_record_h record, unsigned int property_id, int* out_value)
211 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
212 switch (property_id) {
213 case CAL_PROPERTY_INSTANCE_LOCALTIME_EVENT_ID:
214 *out_value = (rec->event_id);
216 case CAL_PROPERTY_INSTANCE_LOCALTIME_BOOK_ID:
217 *out_value = (rec->calendar_id);
219 case CAL_PROPERTY_INSTANCE_LOCALTIME_BUSY_STATUS:
220 *out_value = (rec->busy_status);
222 case CAL_PROPERTY_INSTANCE_LOCALTIME_EVENT_STATUS:
223 *out_value = (rec->event_status);
225 case CAL_PROPERTY_INSTANCE_LOCALTIME_PRIORITY:
226 *out_value = (rec->priority);
228 case CAL_PROPERTY_INSTANCE_LOCALTIME_SENSITIVITY:
229 *out_value = (rec->sensitivity);
231 case CAL_PROPERTY_INSTANCE_LOCALTIME_HAS_RRULE:
232 *out_value = (rec->has_rrule);
234 case CAL_PROPERTY_INSTANCE_LOCALTIME_HAS_ALARM:
235 *out_value = (rec->has_alarm);
237 case CAL_PROPERTY_INSTANCE_LOCALTIME_ORIGINAL_EVENT_ID:
238 *out_value = (rec->original_event_id);
240 case CAL_PROPERTY_INSTANCE_LOCALTIME_IS_ALLDAY:
241 *out_value = (rec->is_allday);
244 /* LCOV_EXCL_START */
245 ERR("invalid parameter (property:0x%x)", property_id);
246 return CALENDAR_ERROR_INVALID_PARAMETER;
250 return CALENDAR_ERROR_NONE;
253 static int _cal_record_instance_localtime_get_double(calendar_record_h record, unsigned int property_id, double* out_value)
255 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
256 switch (property_id) {
257 case CAL_PROPERTY_INSTANCE_LOCALTIME_LATITUDE:
258 *out_value = (rec->latitude);
260 case CAL_PROPERTY_INSTANCE_LOCALTIME_LONGITUDE:
261 *out_value = (rec->longitude);
264 /* LCOV_EXCL_START */
265 ERR("invalid parameter (property:0x%x)", property_id);
266 return CALENDAR_ERROR_INVALID_PARAMETER;
270 return CALENDAR_ERROR_NONE;
273 static int _cal_record_instance_localtime_get_lli(calendar_record_h record, unsigned int property_id, long long int* out_value)
275 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
276 switch (property_id) {
277 case CAL_PROPERTY_INSTANCE_LOCALTIME_LAST_MODIFIED_TIME:
278 *out_value = (rec->last_mod);
281 return CALENDAR_ERROR_INVALID_PARAMETER;
284 return CALENDAR_ERROR_NONE;
287 static int _cal_record_instance_localtime_get_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s* out_value)
289 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
290 switch (property_id) {
291 case CAL_PROPERTY_INSTANCE_LOCALTIME_START:
292 *out_value = rec->start;
294 case CAL_PROPERTY_INSTANCE_LOCALTIME_END:
295 *out_value = rec->end;
298 /* LCOV_EXCL_START */
299 ERR("invalid parameter (property:0x%x)", property_id);
300 return CALENDAR_ERROR_INVALID_PARAMETER;
304 return CALENDAR_ERROR_NONE;
307 static int _cal_record_instance_localtime_set_str(calendar_record_h record, unsigned int property_id, const char* value)
309 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
310 switch (property_id) {
311 case CAL_PROPERTY_INSTANCE_LOCALTIME_SUMMARY:
312 CAL_FREE(rec->summary);
313 rec->summary = cal_strdup(value);
315 case CAL_PROPERTY_INSTANCE_LOCALTIME_DESCRIPTION:
316 CAL_FREE(rec->description);
317 rec->description = cal_strdup(value);
319 case CAL_PROPERTY_INSTANCE_LOCALTIME_LOCATION:
320 CAL_FREE(rec->location);
321 rec->location = cal_strdup(value);
323 case CAL_PROPERTY_INSTANCE_LOCALTIME_SYNC_DATA1:
324 CAL_FREE(rec->sync_data1);
325 rec->sync_data1 = cal_strdup(value);
328 /* LCOV_EXCL_START */
329 ERR("invalid parameter (property:0x%x)", property_id);
330 return CALENDAR_ERROR_INVALID_PARAMETER;
334 return CALENDAR_ERROR_NONE;
337 static int _cal_record_instance_localtime_set_int(calendar_record_h record, unsigned int property_id, int value)
339 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
340 switch (property_id) {
341 case CAL_PROPERTY_INSTANCE_LOCALTIME_EVENT_ID:
342 (rec->event_id) = value;
344 case CAL_PROPERTY_INSTANCE_LOCALTIME_BOOK_ID:
345 (rec->calendar_id) = value;
347 case CAL_PROPERTY_INSTANCE_LOCALTIME_BUSY_STATUS:
348 (rec->busy_status) = value;
350 case CAL_PROPERTY_INSTANCE_LOCALTIME_EVENT_STATUS:
351 (rec->event_status) = value;
353 case CAL_PROPERTY_INSTANCE_LOCALTIME_PRIORITY:
354 (rec->priority) = value;
356 case CAL_PROPERTY_INSTANCE_LOCALTIME_SENSITIVITY:
357 (rec->sensitivity) = value;
359 case CAL_PROPERTY_INSTANCE_LOCALTIME_HAS_RRULE:
360 (rec->has_rrule) = value;
362 case CAL_PROPERTY_INSTANCE_LOCALTIME_HAS_ALARM:
363 (rec->has_alarm) = value;
365 case CAL_PROPERTY_INSTANCE_LOCALTIME_ORIGINAL_EVENT_ID:
366 (rec->original_event_id) = value;
369 /* LCOV_EXCL_START */
370 ERR("invalid parameter (property:0x%x)", property_id);
371 return CALENDAR_ERROR_INVALID_PARAMETER;
375 return CALENDAR_ERROR_NONE;
378 static int _cal_record_instance_localtime_set_double(calendar_record_h record, unsigned int property_id, double value)
380 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
381 switch (property_id) {
382 case CAL_PROPERTY_INSTANCE_LOCALTIME_LATITUDE:
383 (rec->latitude) = value;
385 case CAL_PROPERTY_INSTANCE_LOCALTIME_LONGITUDE:
386 (rec->longitude) = value;
389 /* LCOV_EXCL_START */
390 ERR("invalid parameter (property:0x%x)", property_id);
391 return CALENDAR_ERROR_INVALID_PARAMETER;
395 return CALENDAR_ERROR_NONE;
398 static int _cal_record_instance_localtime_set_caltime(calendar_record_h record, unsigned int property_id, calendar_time_s value)
400 cal_instance_localtime_s *rec = (cal_instance_localtime_s*)(record);
401 switch (property_id) {
402 case CAL_PROPERTY_INSTANCE_LOCALTIME_START:
405 case CAL_PROPERTY_INSTANCE_LOCALTIME_END:
409 /* LCOV_EXCL_START */
410 ERR("invalid parameter (property:0x%x)", property_id);
411 return CALENDAR_ERROR_INVALID_PARAMETER;
415 return CALENDAR_ERROR_NONE;