static int __cal_vcalendar_parse_completed(int type, calendar_list_h list, calendar_record_h event, char *prop, char *cont);
static int __cal_vcalendar_parse_percent(int type, calendar_list_h list, calendar_record_h event, char *prop, char *cont);
-enum {
- ATTENDEE_CUTYPE = 0x0,
- ATTENDEE_MEMBER,
- ATTENDEE_ROLE,
- ATTENDEE_PARTSTAT,
- ATTENDEE_RSVP,
- ATTENDEE_DELTO,
- ATTENDEE_DELFROM,
- ATTENDEE_SENTBY,
- ATTENDEE_CN,
- ATTENDEE_DIR,
- ATTENDEE_MAX,
-};
-
-static int __cal_vcalendar_parse_attendee_cutype(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_member(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_role(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_partstat(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_rsvp(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_delto(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_delfrom(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_sentby(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_cn(calendar_record_h event, void *data);
-static int __cal_vcalendar_parse_attendee_dir(calendar_record_h event, void *data);
-
-struct _record_func _attendee_funcs[ATTENDEE_MAX] =
-{
- { "CUTYPE=", __cal_vcalendar_parse_attendee_cutype },
- { "MEMBER=", __cal_vcalendar_parse_attendee_member },
- { "ROLE=", __cal_vcalendar_parse_attendee_role },
- { "PARTSTAT=", __cal_vcalendar_parse_attendee_partstat },
- { "RSVP=", __cal_vcalendar_parse_attendee_rsvp },
- { "DELTO=", __cal_vcalendar_parse_attendee_delto },
- { "DELFROM=", __cal_vcalendar_parse_attendee_delfrom },
- { "SENTBY=", __cal_vcalendar_parse_attendee_sentby },
- { "CN=", __cal_vcalendar_parse_attendee_cn },
- { "DIR=", __cal_vcalendar_parse_attendee_dir }
-};
-
static int __cal_vcalendar_parse_attendee(int type, calendar_list_h list, calendar_record_h event, char *prop, char *cont);
static int __cal_vcalendar_parse_categories(int type, calendar_list_h list, calendar_record_h event, char *prop, char *cont);
static int __cal_vcalendar_parse_aalarm(int type, calendar_list_h list, calendar_record_h event, char *prop, char *cont);
return CALENDAR_ERROR_NONE;
}
-/////////////////////////////////////////////////////////////////
-static int __cal_vcalendar_parse_attendee_cutype(calendar_record_h attendee, void *data)
-{
- return CALENDAR_ERROR_NONE;
-}
-
-static int __cal_vcalendar_parse_attendee_member(calendar_record_h attendee, void *data)
+static int __cal_vcalendar_parse_attendee_role(char *p, int *role)
{
- return CALENDAR_ERROR_NONE;
-}
-
-static int __cal_vcalendar_parse_attendee_role(calendar_record_h attendee, void *data)
-{
- return CALENDAR_ERROR_NONE;
-}
-
-static int __cal_vcalendar_parse_attendee_partstat(calendar_record_h attendee, void *data)
-{
- return CALENDAR_ERROR_NONE;
-}
+ if (NULL == p)
+ {
+ return CALENDAR_ERROR_INVALID_PARAMETER;
+ }
-static int __cal_vcalendar_parse_attendee_rsvp(calendar_record_h attendee, void *data)
-{
+ if (!strncmp(p, "REQ-PARTICIPANT", strlen("REQ-PARTICIPANT")))
+ {
+ *role = CALENDAR_ATTENDEE_ROLE_REQ_PARTICIPANT;
+ }
+ else if (!strncmp(p, "OPT-PARTICIPANT", strlen("OPT-PARTICIPANT")))
+ {
+ *role = CALENDAR_ATTENDEE_ROLE_OPT_PARTICIPANT;
+ }
+ else if (!strncmp(p, "NON-PARTICIPANT", strlen("NON-PARTICIPANT")))
+ {
+ *role = CALENDAR_ATTENDEE_ROLE_NON_PARTICIPANT;
+ }
+ else if (!strncmp(p, "CHAIR", strlen("CHAIR")))
+ {
+ *role = CALENDAR_ATTENDEE_ROLE_CHAIR;
+ }
+ else
+ {
+ }
return CALENDAR_ERROR_NONE;
}
-static int __cal_vcalendar_parse_attendee_delto(calendar_record_h attendee, void *data)
+static int __cal_vcalendar_parse_attendee_partstat(char *p, int *stat)
{
- return CALENDAR_ERROR_NONE;
-}
+ if (NULL == p)
+ {
+ return CALENDAR_ERROR_INVALID_PARAMETER;
+ }
-static int __cal_vcalendar_parse_attendee_delfrom(calendar_record_h attendee, void *data)
-{
+ if (!strncmp(p, "NEEDS-ACTION", strlen("NEEDS-ACTION")))
+ {
+ *stat = CALENDAR_ATTENDEE_STATUS_PENDING;
+ }
+ else if (!strncmp(p, "ACCEPTED", strlen("ACCEPTED")))
+ {
+ *stat = CALENDAR_ATTENDEE_STATUS_ACCEPTED;
+ }
+ else if (!strncmp(p, "DECLINED", strlen("DECLINED")))
+ {
+ *stat = CALENDAR_ATTENDEE_STATUS_DECLINED;
+ }
+ else if (!strncmp(p, "TENTATIVE", strlen("TENTATIVE")))
+ {
+ *stat = CALENDAR_ATTENDEE_STATUS_TENTATIVE;
+ }
+ else if (!strncmp(p, "DELEGATED", strlen("DELEGATED")))
+ {
+ *stat = CALENDAR_ATTENDEE_STATUS_DELEGATED;
+ }
+ else if (!strncmp(p, "COMPLETED", strlen("COMPLETED")))
+ {
+ *stat = CALENDAR_ATTENDEE_STATUS_COMPLETED;
+ }
+ else if (!strncmp(p, "IN-PROCESS", strlen("IN-PROCESS")))
+ {
+ *stat = CALENDAR_ATTENDEE_STATUS_IN_PROCESS;
+ }
+ else
+ {
+ ERR("Unable to parse[%s]", p);
+ }
return CALENDAR_ERROR_NONE;
}
-static int __cal_vcalendar_parse_attendee_sentby(calendar_record_h attendee, void *data)
+static int __cal_vcalendar_parse_attendee_mailto(char *p, calendar_record_h attendee)
{
+ if (NULL == p || NULL == attendee)
+ {
+ ERR("Invalid parameter");
+ return CALENDAR_ERROR_INVALID_PARAMETER;
+ }
+ p++; // to remove ':'
+ _cal_record_set_str(attendee, _calendar_attendee.email, p);
return CALENDAR_ERROR_NONE;
}
-static int __cal_vcalendar_parse_attendee_cn(calendar_record_h attendee, void *data)
+static int __cal_vcalendar_parse_attendee_param(char *p, calendar_record_h attendee)
{
- int ret;
- int i = 0;
- char *text = NULL;
- char *p = (char *)data;
+ int i;
+ int len = 0;
+ char **t;
- while (*p != ':' && *p != '\n' && *p != '\r' && *p != '\0') {
- i++;
- p++;
+ if (NULL == p || NULL == attendee)
+ {
+ ERR("Invalid parameter");
+ return CALENDAR_ERROR_INVALID_PARAMETER;
}
- text = calloc(i + 1, sizeof(char));
- if (text == NULL) {
- ERR("Failed to calloc");
- return -1;
+ DBG("attendee param[%s]", p);
+ t = g_strsplit_set(p, ";:", -1);
+ if (NULL == t)
+ {
+ ERR("g_strsplit_set() failed");
+ return CALENDAR_ERROR_OUT_OF_MEMORY;
}
- snprintf(text, i + 1, "%s", (char *)data);
-
- ret = _cal_record_set_str(attendee, _calendar_attendee.name, text);
- DBG("cn[%s]", text);
- if (text) free(text);
-
- return CALENDAR_ERROR_NONE;
-}
-
-static int __cal_vcalendar_parse_attendee_dir(calendar_record_h attendee, void *data)
-{
- return CALENDAR_ERROR_NONE;
-}
-
-int _work_attendee_mailto(calendar_record_h attendee, char *buf)
-{
- return CALENDAR_ERROR_NONE;
-}
-
-int _work_attendee_property(calendar_record_h attendee, char *buf)
-{
- int i;
- int len_all, len_prop;
- for (i = 0; i < ATTENDEE_MAX; i++) {
- if (!strncmp(buf, _attendee_funcs[i].prop, strlen(_attendee_funcs[i].prop))) {
- len_all = strlen(buf);
- len_prop = strlen(_attendee_funcs[i].prop);
- snprintf(buf, len_all - len_prop + 1, "%s", &buf[len_prop]);
- _attendee_funcs[i].func(attendee, buf);
- break;
+ len = g_strv_length(t);
+ for (i = 0; i < len; i++)
+ {
+ DBG("get string[%s]", t[i]);
+ if (!strncmp(t[i], "CUTYPE=", strlen("CUTYPE=")))
+ {
+ }
+ else if (!strncmp(t[i], "MEMBER=", strlen("MEMBER=")))
+ {
+ }
+ else if (!strncmp(t[i], "ROLE=", strlen("ROLE=")))
+ {
+ int role = 0;
+ __cal_vcalendar_parse_attendee_role(t[i] + strlen("ROLE="), &role);
+ _cal_record_set_int(attendee, _calendar_attendee.role, role);
+ }
+ else if (!strncmp(t[i], "PARTSTAT=", strlen("PARTSTAT=")))
+ {
+ int stat = 0;
+ __cal_vcalendar_parse_attendee_partstat(t[i] + strlen("PARTSTAT="), &stat);
+ _cal_record_set_int(attendee, _calendar_attendee.status, stat);
+ }
+ else if (!strncmp(t[i], "RSVP=", strlen("RSVP=")))
+ {
+ }
+ else if (!strncmp(t[i], "DELTO=", strlen("DELTO=")))
+ {
+ DBG("[%s]", t[i] + strlen("DELTO="));
+ _cal_record_set_str(attendee, _calendar_attendee.delegate_uri, t[i] + strlen("DELTO="));
+ }
+ else if (!strncmp(t[i], "DELFROM=", strlen("DELFROM=")))
+ {
+ DBG("[%s]", t[i] + strlen("DELFROM="));
+ _cal_record_set_str(attendee, _calendar_attendee.delegator_uri, t[i] + strlen("DELFROM="));
+ }
+ else if (!strncmp(t[i], "SENT-BY=", strlen("SENT-BY=")))
+ {
+ }
+ else if (!strncmp(t[i], "CN=", strlen("CN=")))
+ {
+ DBG("[%s]", t[i] + strlen("CN="));
+ _cal_record_set_str(attendee, _calendar_attendee.name, t[i] + strlen("CN="));
+ }
+ else if (!strncmp(t[i], "DIR=", strlen("DIR=")))
+ {
+ }
+ else
+ {
+ DBG("No macthed field[%s]", t[i]);
}
}
+ g_strfreev(t);
return CALENDAR_ERROR_NONE;
}
static int __cal_vcalendar_parse_attendee(int type, calendar_list_h list, calendar_record_h event, char *prop, char *cont)
{
+ int i;
int ret;
- int i, j;
+ int len = 0;
char *p = (char *)cont;
- calendar_record_h attendee;
-
- ret = calendar_record_create(_calendar_attendee._uri, &attendee);
-
- ret = calendar_record_add_child_record(event, _calendar_event.calendar_attendee, attendee);
+ char **t;
- i = 0;
- j = 0;
- int mode = 0;
- char buf[64] = {0};
+ p++;
- if (p[i + 1] == '\0')
+ // divide mailto firstly.
+ t = g_strsplit(p, ":mailto", -1);
{
- ERR("Invalid parameter");
- return CALENDAR_ERROR_INVALID_PARAMETER;
+ if (NULL == t)
+ {
+ ERR("g_strsplit_set() failed");
+ return CALENDAR_ERROR_OUT_OF_MEMORY;
+ }
}
- while (p[i] != '\0') {
- switch (p[i]) {
- case ':':
- /* work mail to */
- if (mode) {
- buf[j] = '\0';
- _work_attendee_mailto(attendee, buf);
- mode = 0;
- } else {
- mode = 1;
- }
- j = 0;
- break;
-
- case ';':
- /* work property */
- if (mode) {
- buf[j] = '\0';
- _work_attendee_property(attendee, buf);
- mode = 0;
- } else {
- mode = 2;
- }
- j = 0;
- break;
+ calendar_record_h attendee = NULL;
+ ret = calendar_record_create(_calendar_attendee._uri, &attendee);
+ if (NULL == attendee)
+ {
+ ERR("Failed to create attedee(ret:%d)", ret);
+ return ret;
+ }
- default:
- buf[j] = p[i];
- j++;
- break;
+ len = g_strv_length(t);
+ for (i = 0; i < len; i++)
+ {
+ if (*t[i] == ':')
+ {
+ __cal_vcalendar_parse_attendee_mailto(t[i], attendee);
+ }
+ else
+ {
+ __cal_vcalendar_parse_attendee_param(t[i], attendee);
}
- i++;
}
- switch (mode) {
- case 1:
- buf[j] = '\0';
- _work_attendee_mailto(attendee, buf);
- break;
- case 2:
- buf[j] = '\0';
- _work_attendee_property(attendee, buf);
- break;
- default:
- break;
- }
+ ret = calendar_record_add_child_record(event, _calendar_event.calendar_attendee, attendee);
+ g_strfreev(t);
return CALENDAR_ERROR_NONE;
}
-
static int __cal_vcalendar_parse_categories(int type, calendar_list_h list, calendar_record_h event, char *prop, char *cont)
{
char *p = (char *)cont;
// register new list
long long int mod_alarm_utime; // del seconds
mod_alarm_utime = nd->alarm_utime - (nd->alarm_utime % 60);
- ret = alarmmgr_add_alarm(ALARM_TYPE_VOLATILE,
- (time_t)(mod_alarm_utime - now_utime),
- 0, NULL, &alarm_id);
+// ret = alarmmgr_add_alarm(ALARM_TYPE_VOLATILE, (time_t)(mod_alarm_utime - now_utime), 0, NULL, &alarm_id);
+
+///////////////////////////////////////
+ alarm_entry_t *alarm_info = NULL;
+ alarm_info = alarmmgr_create_alarm();
+ if (NULL == alarm_info)
+ {
+ ERR("Failed to create alarm");
+ return CALENDAR_ERROR_DB_FAILED;
+ }
+ char *tzid = NULL;
+ tzid = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+
+ alarm_date_t alarm_date;
+ _cal_time_utoi(mod_alarm_utime, tzid,
+ &alarm_date.year, &alarm_date.month, &alarm_date.day,
+ &alarm_date.hour, &alarm_date.min, &alarm_date.sec);
+ alarmmgr_set_time(alarm_info, alarm_date);
+ ret = alarmmgr_add_alarm_with_localtime(alarm_info, NULL, &alarm_id);
+ if (tzid) free(tzid);
+///////////////////////////////////////
+
if (ret < 0)
{
ERR("alarmmgr_add_alarm_appsvc failed (%d)", ret);
}
// register new list
- ret = alarmmgr_add_alarm(ALARM_TYPE_VOLATILE,
- (time_t)(alarm_timet - (ad->tick * ad->unit) - now_timet),
- 0, NULL, &alarm_id);
+// ret = alarmmgr_add_alarm(ALARM_TYPE_VOLATILE, (time_t)(alarm_timet - (ad->tick * ad->unit) - now_timet), 0, NULL, &alarm_id);
+
+///////////////////////////////////////
+ alarm_entry_t *alarm_info = NULL;
+ alarm_info = alarmmgr_create_alarm();
+ if (NULL == alarm_info)
+ {
+ ERR("Failed to create alarm");
+ return CALENDAR_ERROR_DB_FAILED;
+ }
+ char *tzid = NULL;
+ tzid = vconf_get_str(VCONFKEY_SETAPPL_TIMEZONE_ID);
+
+ alarm_date_t alarm_date;
+ _cal_time_utoi((long long int)(alarm_timet - (ad->tick * ad->unit)), tzid,
+ &alarm_date.year, &alarm_date.month, &alarm_date.day,
+ &alarm_date.hour, &alarm_date.min, &alarm_date.sec);
+ alarmmgr_set_time(alarm_info, alarm_date);
+ ret = alarmmgr_add_alarm_with_localtime(alarm_info, NULL, &alarm_id);
+ if (tzid) free(tzid);
+///////////////////////////////////////
+
if (ret < 0)
{
ERR("alarmmgr_add_alarm_appsvc failed (%d)", ret);