3 * Copyright (c) 2012 Samsung Electronics Co., Ltd.
5 * Licensed under the Apache License, Version 2.0 (the License);
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 #ifndef IN_VCALENDAR_STRING_UTIL_H_
19 #define IN_VCALENDAR_STRING_UTIL_H_
24 #include <glib/gprintf.h>
26 #include <calendar2.h>
27 #include <calendar_types2.h>
28 #include <unicode/ucal.h>
29 #include <unicode/ustring.h>
30 #include <unicode/ustdio.h>
31 #include <unicode/udat.h>
32 #include <sys/types.h>
34 #include "utility/sync_util.h"
35 #include "data-adapter/error.h"
37 typedef enum cal_date_type {
38 CALENDAR_DATE_TYPE_ONTIME = 0,
39 CALENDAR_DATE_TYPE_YEAR,
40 CALENDAR_DATE_TYPE_MONTH,
41 CALENDAR_DATE_TYPE_WEEK,
42 CALENDAR_DATE_TYPE_DAY,
43 CALENDAR_DATE_TYPE_HOUR,
44 CALENDAR_DATE_TYPE_MINUTE,
45 CALENDAR_DATE_TYPE_SECOND,
46 } calendar_date_type_e;
48 typedef enum cal_exdate_type {
49 CALENDAR_EXDATE_TYPE_NONE = 0,
50 CALENDAR_EXDATE_TYPE_DELETED,
51 CALENDAR_EXDATE_TYPE_UPDATED_PARENT,
52 CALENDAR_EXDATE_TYPE_UPDATED_CHILD,
53 CALENDAR_EXDATE_TYPE_MAX,
54 } calendar_exdate_type_e;
56 typedef struct sync_agent_calendar_exdate_s sync_agent_calendar_exdate_t;
58 struct sync_agent_calendar_exdate_s {
59 calendar_exdate_type_e exdate_type;
64 #define RRULE_KEYWORD "\r\nRRULE:"
65 #define RRULE_KEYWORD_FREQ_DAILY "\r\nRRULE:FREQ=DAILY"
66 #define RRULE_KEYWORD_FREQ_WEEKLY "\r\nRRULE:FREQ=WEEKLY"
67 #define RRULE_KEYWORD_FREQ_MONTHLY "\r\nRRULE:FREQ=MONTHLY"
68 #define RRULE_KEYWORD_FREQ_YEARLY "\r\nRRULE:FREQ=YEARLY"
69 #define RRULE_KEYWORD_INTERVAL "INTERVAL="
70 #define RRULE_KEYWORD_BYDAY "BYDAY="
71 #define RRULE_KEYWORD_BYMONTH "BYMONTH="
72 #define RRULE_KEYWORD_BYMONTHDAY "BYMONTHDAY="
73 #define RRULE_KEYWORD_UNTIL "UNTIL="
74 #define RRULE_KEYWORD_COUNT "COUNT="
75 #define DTSTART_KEYWORD "\r\nDTSTART:"
76 #define DTEND_KEYWORD "\r\nDTEND:"
77 #define BEGIN_ALARM_KEYWORD "\r\nBEGIN:VALARM"
78 #define AALARM_KEYWORD "\r\nAALARM"
79 #define END_VEVENT_KEYWORD "\r\nEND:VEVENT\r\n"
80 #define SUMMARY_KEYWORD "\r\nSUMMARY:"
81 #define MAX_RRULE_DATE_KEYWORD "20361231T"
82 #define WEEKDAY_RRULE_ORIGIN_KEYWORD "\r\nRRULE:W0 "
83 #define WEEKDAY_RRULE_CONVERTED_KEYWORD "\r\nRRULE:W1 MO TU WE TH FR "
84 #define TIMEZONE_GMT "Etc/GMT"
86 #define EXTYPE_UID_KEYWORD "\r\nUID:"
87 #define EXTYPE_DELETE_KEYWORD "X-EXTYPE:1"
88 #define EXTYPE_UPDATE_KEYWORD "X-EXTYPE:2"
89 #define CR_EXTYPE_DELETE_KEYWORD "\r\nX-EXTYPE:1" // carrige return + EXTYPE_DELETE_KEYWORD
90 #define CR_EXTYPE_UPDATE_KEYWORD "\r\nX-EXTYPE:2" // carrige return + EXTYPE_UPDATE_KEYWORD
91 #define IMPORT_EXTYPE_DELETE_KEYWORD "\r\nX-EXTYPE:1\r\nEXDATE:"
92 #define IMPORT_EXTYPE_UPDATE_KEYWORD "\r\nX-EXTYPE:2\r\nEXDATE:"
93 #define EXDATE_KEYWORD "\r\nEXDATE:"
95 #define CALENDAR_IMAGE_KEYWORD_SNOTE "snote" // refer to Cal-svc.h (calendar\include)
96 #define CALENDAR_IMAGE_KEYWORD_PHOTO "photo" // refer to Cal-svc.h (calendar\include)
97 #define IMAGE_KEYWORD_PREFIX_SNOTE "X-SS-ATTACH-SNOTE;"
98 #define IMAGE_KEYWORD_PREFIX_PHOTO "X-SS-ATTACH-IMAGE;"
99 #define CR_IMAGE_KEYWORD_PREFIX_SNOTE "\r\nX-SS-ATTACH-SNOTE;"
100 #define CR_IMAGE_KEYWORD_PREFIX_PHOTO "\r\nX-SS-ATTACH-IMAGE;"
101 #define IMAGE_KEYWORD_BEGIN_PATH "PATH=3D"
102 #define IMAGE_KEYWORD_END_PATH "=3bDATE=3D\r\n"
104 #define INTERNAL_MEMORY_ORIGIN "/opt/usr/media"
105 #define INTERNAL_MEMORY_CONVERTED "Internal=3a"
106 #define EXTERNAL_MEMORY_ORIGIN "/opt/storage/sdcard"
107 #define EXTERNAL_MEMORY_CONVERTED "External=3a"
108 #define SNOTE_MEMORY_ORIGIN "/opt/usr/apps/com.samsung.smemo/data/"
110 #define EXDATE_LENGTH 16 // length of "20130211T000000Z"
113 char * get_value_by_token(const char *src, const char *token, const char *end_of_token);
114 char * replace_string(char *origin, const char *src, const char *dest);
115 void set_timezone(const char *origin, calendar_record_h cal_record);
116 char * remove_uid(char *origin);
117 char * insert_exdate_data(char *origin, sync_agent_calendar_exdate_t *exdate_struct, int index);
118 void insert_allday_data(const char *origin, calendar_record_h calendar_record);
119 char * has_image_import(const char *origin);
120 char * has_image_export(calendar_record_h cal_record);
121 void get_exdate_data(calendar_record_h cal_record, sync_agent_calendar_exdate_t *exdate_struct);
122 char * replace_rrule_data(char *origin);
123 char * replace_image_data(char *origin, char *image_path);
124 void replace_deleted_exdate_data(const char *origin, calendar_record_h parent_record);
125 int replace_updated_exdate_data(const char *origin, calendar_record_h parent_record);
127 #endif /* IN_VCALENDAR_STRING_UTIL_H_ */