[Internal: merge private->RSA , Patch create momanager.db]
[platform/core/system/sync-agent.git] / src / fw-plugins / common-public / vcalendar / include / vcalendar_string_util.h
1 /*
2  * sync-agent
3  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
4  *
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
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
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.
16  */
17
18 #ifndef IN_VCALENDAR_STRING_UTIL_H_
19 #define IN_VCALENDAR_STRING_UTIL_H_
20
21 #include <stdio.h>
22 #include <string.h>
23 #include <stdlib.h>
24 #include <glib/gprintf.h>
25
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>
33
34 #include "utility/sync_util.h"
35 #include "data-adapter/error.h"
36
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;
47
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;
55
56 typedef struct sync_agent_calendar_exdate_s sync_agent_calendar_exdate_t;
57
58 struct sync_agent_calendar_exdate_s {
59         calendar_exdate_type_e exdate_type;
60         int exdate_count;
61         GList *exdate_list;
62 };
63
64 #define RRULE_KEYWORD                                   "\r\nRRULE:"
65 #define RRULE_KEYWORD_FREQ_DAILY                RRULE_KEYWORD"FREQ=DAILY"
66 #define RRULE_KEYWORD_FREQ_WEEKLY               RRULE_KEYWORD"FREQ=WEEKLY"
67 #define RRULE_KEYWORD_FREQ_MONTHLY              RRULE_KEYWORD"FREQ=MONTHLY"
68 #define RRULE_KEYWORD_FREQ_YEARLY               RRULE_KEYWORD"FREQ=YEARLY"
69
70 #define RRULE_KEYWORD_INTERVAL                  "INTERVAL="
71 #define RRULE_KEYWORD_BYDAY                             "BYDAY="
72 #define RRULE_KEYWORD_BYMONTH                   "BYMONTH="
73 #define RRULE_KEYWORD_BYMONTHDAY                "BYMONTHDAY="
74 #define RRULE_KEYWORD_UNTIL                             "UNTIL="
75 #define RRULE_KEYWORD_COUNT                             "COUNT="
76
77 #define MAX_RRULE_DATE_KEYWORD                  "20361231T"
78 #define WEEKDAY_RRULE_ORIGIN_KEYWORD    RRULE_KEYWORD"W0 "
79 #define WEEKDAY_RRULE_CONVERTED_KEYWORD RRULE_KEYWORD"W1 MO TU WE TH FR "
80
81 #define DTSTART_KEYWORD                                 "DTSTART:"
82 #define DTEND_KEYWORD                                   "DTEND:"
83 #define AALARM_KEYWORD                                  "AALARM:"
84 #define END_VEVENT_KEYWORD                              "END:VEVENT"
85 #define SUMMARY_KEYWORD                                 "SUMMARY:"
86 #define TIMEZONE_GMT                                    "Etc/GMT"
87 #define ALLDAY_PREFIX                                   "X-ALLDAY:"
88
89 #define EXTYPE_UID_KEYWORD                              "\r\nUID:"
90 #define EXTYPE_DELETE_KEYWORD                   "X-EXTYPE:1"
91 #define EXTYPE_UPDATE_KEYWORD                   "X-EXTYPE:2"
92 #define IMPORT_EXTYPE_DELETE_KEYWORD    "\r\nX-EXTYPE:1\r\nEXDATE:"
93 #define IMPORT_EXTYPE_UPDATE_KEYWORD    "\r\nX-EXTYPE:2\r\nEXDATE:"
94 #define EXDATE_KEYWORD                                  "\r\nEXDATE:"
95
96 #define CALENDAR_IMAGE_KEYWORD_SNOTE    "snote" // refer to Cal-svc.h (calendar\include)
97 #define CALENDAR_IMAGE_KEYWORD_PHOTO    "photo" // refer to Cal-svc.h (calendar\include)
98 #define IMAGE_KEYWORD_PREFIX_SNOTE              "X-SS-ATTACH-SNOTE;"
99 #define IMAGE_KEYWORD_PREFIX_PHOTO              "X-SS-ATTACH-IMAGE;"
100 #define IMAGE_KEYWORD_BEGIN_PATH                "PATH=3D"
101 #define IMAGE_KEYWORD_END_PATH                  "=3bDATE=3D\r\n"
102
103 #define INTERNAL_MEMORY_ORIGIN                  "/opt/usr/media"
104 #define INTERNAL_MEMORY_CONVERTED               "Internal=3a"
105 #define EXTERNAL_MEMORY_ORIGIN                  "/opt/storage/sdcard"
106 #define EXTERNAL_MEMORY_CONVERTED               "External=3a"
107 #define SNOTE_MEMORY_ORIGIN                             "/opt/usr/apps/com.samsung.smemo/data/"
108
109 #define EXDATE_LENGTH                                   16 // length of "20130211T000000Z"
110
111
112 char * get_value_by_token(const char *src, const char *token, const char *end_of_token);
113 char * replace_string(char *origin, const char *src, const char *dest);
114
115 calendar_list_h set_vcalendar_version(calendar_record_h cal_record);
116 void set_timezone(const char *origin, calendar_record_h cal_record);
117 void set_allday(const char *origin, calendar_record_h calendar_record, bool is_phone_to_kies);
118
119 char * remove_uid(char *origin);
120 char * insert_exdate_data(char *origin, sync_agent_calendar_exdate_t *exdate_struct, int index);
121 char * has_image_import(const char *origin);
122 char * has_image_export(calendar_record_h cal_record);
123 void get_exdate_data(calendar_record_h cal_record, sync_agent_calendar_exdate_t *exdate_struct);
124
125 char * replace_rrule_data(char *origin);
126 char * replace_image_data(char *origin, char *image_path);
127 void replace_deleted_exdate_data(const char *origin, calendar_record_h parent_record);
128 int replace_updated_exdate_data(const char *origin, calendar_record_h parent_record);
129
130 #endif                          /* IN_VCALENDAR_STRING_UTIL_H_ */