evolution-data-server/dice-eds-changes.patch
Vincent Untz 9f77110ba4 Accepting request 27500 from home:vuntz:branches:GNOME:Factory
Copy from home:vuntz:branches:GNOME:Factory/evolution-data-server via accept of submit request 27500 revision 2.
Request was accepted with message:
accept

OBS-URL: https://build.opensuse.org/request/show/27500
OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/evolution-data-server?expand=0&rev=47
2009-12-24 15:29:23 +00:00

311 lines
8.5 KiB
Diff
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Index: evolution-data-server-2.29.3/calendar/libecal/e-cal-component.c
===================================================================
--- evolution-data-server-2.29.3.orig/calendar/libecal/e-cal-component.c
+++ evolution-data-server-2.29.3/calendar/libecal/e-cal-component.c
@@ -161,6 +161,8 @@ struct _ECalComponentPrivate {
* object over the wire.
*/
guint need_sequence_inc : 1;
+
+ GSList *x_list; /* list of X icalproperty objects */
};
/* Private structure for alarms */
@@ -372,6 +374,9 @@ free_icalcomponent (ECalComponent *comp,
/* Free the subcomponents */
g_hash_table_foreach_remove (priv->alarm_uid_hash, free_alarm_cb, NULL);
+
+ g_slist_free (priv->x_list);
+ priv->x_list = NULL;
/* Clean up */
@@ -527,6 +532,13 @@ e_cal_component_clone (ECalComponent *co
return new_comp;
}
+static void
+scan_x_prop (GSList **list, icalproperty *prop)
+{
+ *list = g_slist_append (*list, prop);
+}
+
+
/* Scans an attachment property */
static void
scan_attachment (GSList **attachment_list, icalproperty *prop)
@@ -789,7 +801,8 @@ scan_property (ECalComponent *comp, ical
case ICAL_LOCATION_PROPERTY :
priv->location = prop;
break;
-
+ case ICAL_X_PROPERTY:
+ scan_x_prop (&priv->x_list ,prop);
default:
break;
}
@@ -945,6 +958,9 @@ scan_icalcomponent (ECalComponent *comp)
g_assert (priv->icalcomp != NULL);
+ if (e_cal_component_get_vtype (comp) == E_CAL_COMPONENT_VCALENDAR)
+ return;
+
/* Scan properties */
for (prop = icalcomponent_get_first_property (priv->icalcomp, ICAL_ANY_PROPERTY);
@@ -1043,7 +1059,9 @@ e_cal_component_set_new_vtype (ECalCompo
case E_CAL_COMPONENT_TIMEZONE:
kind = ICAL_VTIMEZONE_COMPONENT;
break;
-
+ case E_CAL_COMPONENT_VCALENDAR:
+ kind = ICAL_VCALENDAR_COMPONENT;
+ break;
default:
g_assert_not_reached ();
kind = ICAL_NO_COMPONENT;
@@ -1061,8 +1079,8 @@ e_cal_component_set_new_vtype (ECalCompo
scan_icalcomponent (comp);
/* Add missing stuff */
-
- ensure_mandatory_properties (comp);
+ if (type != E_CAL_COMPONENT_VCALENDAR && type != E_CAL_COMPONENT_TIMEZONE && type != E_CAL_COMPONENT_FREEBUSY);
+ ensure_mandatory_properties (comp);
}
/**
@@ -1085,6 +1103,7 @@ e_cal_component_set_icalcomponent (ECalC
{
ECalComponentPrivate *priv;
icalcomponent_kind kind;
+ ECalComponentVType vtype;
g_return_val_if_fail (comp != NULL, FALSE);
g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), FALSE);
@@ -1107,13 +1126,17 @@ e_cal_component_set_icalcomponent (ECalC
|| kind == ICAL_VTODO_COMPONENT
|| kind == ICAL_VJOURNAL_COMPONENT
|| kind == ICAL_VFREEBUSY_COMPONENT
- || kind == ICAL_VTIMEZONE_COMPONENT))
+ || kind == ICAL_VTIMEZONE_COMPONENT
+ || kind == ICAL_VCALENDAR_COMPONENT))
return FALSE;
priv->icalcomp = icalcomp;
scan_icalcomponent (comp);
- ensure_mandatory_properties (comp);
+
+ vtype = e_cal_component_get_vtype (comp);
+ if (vtype != E_CAL_COMPONENT_VCALENDAR && vtype != E_CAL_COMPONENT_TIMEZONE && vtype != E_CAL_COMPONENT_FREEBUSY);
+ ensure_mandatory_properties (comp);
return TRUE;
}
@@ -1152,6 +1175,7 @@ void
e_cal_component_rescan (ECalComponent *comp)
{
ECalComponentPrivate *priv;
+ ECalComponentVType vtype;
g_return_if_fail (comp != NULL);
g_return_if_fail (E_IS_CAL_COMPONENT (comp));
@@ -1163,7 +1187,10 @@ e_cal_component_rescan (ECalComponent *c
/* Rescan */
scan_icalcomponent (comp);
- ensure_mandatory_properties (comp);
+
+ vtype = e_cal_component_get_vtype (comp);
+ if (vtype != E_CAL_COMPONENT_VCALENDAR && vtype != E_CAL_COMPONENT_TIMEZONE && vtype != E_CAL_COMPONENT_FREEBUSY);
+ ensure_mandatory_properties (comp);
}
/**
@@ -1224,6 +1251,9 @@ e_cal_component_get_vtype (ECalComponent
case ICAL_VTIMEZONE_COMPONENT:
return E_CAL_COMPONENT_TIMEZONE;
+ case ICAL_VCALENDAR_COMPONENT:
+ return E_CAL_COMPONENT_VCALENDAR;
+
default:
/* We should have been loaded with a supported type! */
g_assert_not_reached ();
@@ -2616,6 +2646,27 @@ e_cal_component_set_dtstart (ECalCompone
priv->need_sequence_inc = TRUE;
}
+gboolean
+e_cal_component_is_allday (ECalComponent *comp)
+{
+ ECalComponentPrivate *priv;
+ ECalComponentDateTime dtstart, dtend;
+ gboolean ret = FALSE;
+
+ priv = comp->priv;
+
+ e_cal_component_get_dtstart (comp, &dtstart);
+ e_cal_component_get_dtend (comp, &dtend);
+
+ if (dtstart.value->is_date && dtend.value->is_date)
+ ret = TRUE;
+
+ e_cal_component_free_datetime (&dtstart);
+ e_cal_component_free_datetime (&dtend);
+
+ return ret;
+}
+
/**
* e_cal_component_get_due:
* @comp: A calendar component object.
@@ -4060,6 +4111,24 @@ e_cal_component_get_sequence (ECalCompon
**sequence = icalproperty_get_sequence (priv->sequence);
}
+int
+e_cal_component_get_sequence_as_int (ECalComponent *comp)
+{
+ ECalComponentPrivate *priv;
+
+ g_return_val_if_fail ((comp != NULL), -1);
+ g_return_val_if_fail (E_IS_CAL_COMPONENT (comp), -1);
+
+ priv = comp->priv;
+ g_return_val_if_fail ((priv->icalcomp != NULL), -1);
+
+ if (!priv->sequence) {
+ return 0;
+ }
+
+ return icalproperty_get_sequence (priv->sequence);
+}
+
/**
* e_cal_component_set_sequence:
* @comp: A calendar component object.
@@ -6038,3 +6107,77 @@ e_cal_component_event_dates_match (ECalC
return retval;
}
+void
+e_cal_component_set_x_prop (ECalComponent *comp, const char *x_name, const char *x_value)
+{
+ GSList *l;
+ ECalComponentPrivate *priv;
+ icalproperty *prop;
+
+ priv = comp->priv;
+
+ for (l = priv->x_list; l != NULL; l = g_slist_next (l))
+ {
+ prop = l->data;
+ const char *name = icalproperty_get_x_name (prop);
+
+ if (!strcmp (x_name, name)) {
+ break;
+ }
+ prop = NULL;
+ }
+
+ if (prop) {
+ icalcomponent_remove_property (priv->icalcomp, prop);
+ priv->x_list = g_slist_remove (priv->x_list, prop);
+ icalproperty_free (prop);
+ prop = NULL;
+ }
+
+ if (!x_value || !*x_value)
+ return;
+
+ prop = icalproperty_new_x (x_value);
+ icalproperty_set_x_name (prop, x_name);
+ icalcomponent_add_property (priv->icalcomp, prop);
+
+ priv->x_list = g_slist_prepend (priv->x_list, prop);
+}
+
+char *
+e_cal_component_get_x_prop (ECalComponent *comp, const char *x_name)
+{
+ GSList *l;
+ ECalComponentPrivate *priv;
+
+ priv = comp->priv;
+
+ for (l = priv->x_list; l != NULL; l = g_slist_next (l))
+ {
+ icalproperty *prop = l->data;
+ const char *name = icalproperty_get_x_name (prop);
+
+ if (!strcmp (x_name, name)) {
+ const char *val = icalproperty_get_x (prop);
+
+ return g_strdup (val);
+ }
+ }
+
+ return NULL;
+}
+
+int
+e_cal_component_get_x_prop_as_int (ECalComponent *comp, const char *x_name)
+{
+ char *x_val = e_cal_component_get_x_prop (comp, x_name);
+
+ if (x_val) {
+ int val = atoi (x_val);
+ g_free (x_val);
+
+ return val;
+ }
+
+ return -1;
+}
Index: evolution-data-server-2.29.3/calendar/libecal/e-cal-component.h
===================================================================
--- evolution-data-server-2.29.3.orig/calendar/libecal/e-cal-component.h
+++ evolution-data-server-2.29.3/calendar/libecal/e-cal-component.h
@@ -51,7 +51,8 @@ typedef enum {
E_CAL_COMPONENT_TODO,
E_CAL_COMPONENT_JOURNAL,
E_CAL_COMPONENT_FREEBUSY,
- E_CAL_COMPONENT_TIMEZONE
+ E_CAL_COMPONENT_TIMEZONE,
+ E_CAL_COMPONENT_VCALENDAR
} ECalComponentVType;
/* Field identifiers for a calendar component; these are used by the data model
@@ -256,6 +257,7 @@ void e_cal_component_set_dtend (ECalComp
void e_cal_component_get_dtstamp (ECalComponent *comp, struct icaltimetype *t);
void e_cal_component_set_dtstamp (ECalComponent *comp, struct icaltimetype *t);
+gboolean e_cal_component_is_allday (ECalComponent *comp);
void e_cal_component_get_dtstart (ECalComponent *comp, ECalComponentDateTime *dt);
void e_cal_component_set_dtstart (ECalComponent *comp, ECalComponentDateTime *dt);
@@ -312,6 +314,8 @@ gboolean e_cal_component_is_instance (EC
void e_cal_component_get_sequence (ECalComponent *comp, gint **sequence);
void e_cal_component_set_sequence (ECalComponent *comp, gint *sequence);
+int e_cal_component_get_sequence_as_int (ECalComponent *comp);
+
void e_cal_component_get_status (ECalComponent *comp, icalproperty_status *status);
void e_cal_component_set_status (ECalComponent *comp, icalproperty_status status);
@@ -457,6 +461,10 @@ gboolean e_cal_component_alarm_has_atten
icalcomponent *e_cal_component_alarm_get_icalcomponent (ECalComponentAlarm *alarm);
+char *e_cal_component_get_x_prop (ECalComponent *comp, const char *x_name);
+int e_cal_component_get_x_prop_as_int (ECalComponent *comp, const char *x_name);
+void e_cal_component_set_x_prop (ECalComponent *comp, const char *x_name, const char *x_value);
+
G_END_DECLS