e_gw_item_set_recipient_list (item, recipient_list);
}
+
+ if (e_cal_component_has_organizer (comp)) {
+ ECalComponentOrganizer *cal_organizer;
+ EGwItemOrganizer *organizer = NULL;
+
+ e_cal_component_get_organizer (comp, cal_organizer);
+ if (cal_organizer) {
+ organizer = g_new0 (EGwItemOrganizer, 1);
+ organizer->display_name = g_strdup (cal_organizer->cn);
+ organizer->email = g_strdup (cal_organizer->value + 7);
+ e_gw_item_set_organizer (item, organizer);
+ }
+ }
+
+
/* check if recurrences exist and update the item */
if (e_cal_component_has_recurrences (comp)) {
- GSList *recur_dates = NULL, *tmp;
+ GSList *recur_dates = NULL;
e_cal_recur_generate_instances (comp, -1, -1,
int percent;
int alarm_duration;
GSList *recipient_list, *rl, *attendee_list = NULL;
+ EGwItemOrganizer *organizer;
EGwItemType item_type;
g_return_val_if_fail (E_IS_GW_ITEM (item), NULL);
e_cal_component_set_attendee_list (comp, attendee_list);
}
+ /* set organizer if it exists */
+ organizer = e_gw_item_get_organizer (item);
+ if (organizer) {
+ ECalComponentOrganizer *cal_organizer;
+
+ cal_organizer = g_new0 (ECalComponentOrganizer, 1);
+ cal_organizer->cn = g_strdup (organizer->display_name);
+ cal_organizer->value = g_strconcat("MAILTO:", organizer->email, NULL);
+ e_cal_component_set_organizer (comp, cal_organizer);
+ }
+
/* set specific properties */
switch (item_type) {
case E_GW_ITEM_TYPE_APPOINTMENT :
+2004-06-15 Harish Krishnaswamy <kharish@novell.com>
+
+ Fixes #59352
+ * e-gw-item.c:
+ (e_gw_item_init), (e_gw_item_dispose),
+ (e_gw_item_new_from_soap_parameter), (e_gw_item_get_organizer),
+ (e_gw_item_set_organizer), (add_distribution_to_soap_message):
+ Convert EGwItemOrganizer to/from the <from> soap element.
+
+ (e_gw_item_append_to_soap_message): Add the <from> element explicitly
+ to <distribution> element, in addition to the <recipients> element.
+
+ * e-gw-item.h: Add EGwItemOrganizer structure and get/set functions
+ for the same.
+
2004-06-15 Sivaiah Nallagatla <snallagatla@novell.com>
* e-gw-item.h : added "name" member ot EGroupMember structure
GSList *recipient_list;
GSList *recurrence_dates;
int trigger; /* alarm */
+ EGwItemOrganizer *organizer;
/* properties for tasks/calendars */
char *icalid;
g_slist_free (priv->recipient_list);
priv->recipient_list = NULL;
}
+ if (priv->organizer) {
+ g_free (priv->organizer);
+ priv->organizer = NULL;
+ }
if (priv->recurrence_dates) {
g_slist_foreach (priv->recurrence_dates, free_string, NULL);
g_slist_free (priv->recurrence_dates);
priv->due_date = NULL;
priv->trigger = 0;
priv->recipient_list = NULL;
+ priv->organizer = NULL;
priv->recurrence_dates = NULL;
priv->completed = FALSE;
priv->im_list = NULL;
item->priv->recipient_list = NULL;
set_recipient_list_from_soap_parameter (&item->priv->recipient_list, tp);
}
+ tp = soup_soap_parameter_get_first_child_by_name (child, "from");
+ if (tp) {
+ SoupSoapParameter *subparam;
+ EGwItemOrganizer *organizer = g_new0 (EGwItemOrganizer, 1);
+
+ subparam = soup_soap_parameter_get_first_child_by_name (tp, "displayName");
+ if (subparam)
+ organizer->display_name = soup_soap_parameter_get_string_value (subparam);
+ subparam = soup_soap_parameter_get_first_child_by_name (tp, "email");
+ if (subparam)
+ organizer->email = soup_soap_parameter_get_string_value (subparam);
+ e_gw_item_set_organizer (item, organizer);
+ }
} else if (!g_ascii_strcasecmp (name, "dueDate")) {
char *formatted_date;
item->priv->recipient_list = new_recipient_list;
}
+EGwItemOrganizer *
+e_gw_item_get_organizer (EGwItem *item)
+{
+ g_return_val_if_fail (E_IS_GW_ITEM (item), NULL);
+ return item->priv->organizer;
+}
+
+void
+e_gw_item_set_organizer (EGwItem *item, EGwItemOrganizer *organizer)
+{
+ /* free organizer */
+ g_free (item->priv->organizer);
+ item->priv->organizer = organizer;
+}
+
GSList *
e_gw_item_get_recurrence_dates (EGwItem *item)
{
}
static void
-add_distribution_to_soap_message (GSList *recipient_list, SoupSoapMessage *msg)
+add_distribution_to_soap_message (EGwItemOrganizer *organizer, GSList *recipient_list, SoupSoapMessage *msg)
{
GSList *rl;
/* start distribution element */
soup_soap_message_start_element (msg, "distribution", NULL, NULL);
- /*FIXME Add the from element to identify the organizer */
+ if (organizer) {
+ soup_soap_message_start_element (msg, "from", NULL, NULL);
+ e_gw_message_write_string_parameter (msg, "displayName", NULL,
+ organizer->display_name ? organizer->display_name : "");
+ e_gw_message_write_string_parameter (msg, "email", NULL,
+ organizer->email ? organizer->email : "");
+
+ soup_soap_message_end_element (msg);
+ }
/* start recipients */
soup_soap_message_start_element (msg, "recipients", NULL, NULL);
/* add each recipient */
g_free (alarm);
}
if (priv->recipient_list != NULL)
- add_distribution_to_soap_message (priv->recipient_list, msg);
+ add_distribution_to_soap_message (priv->organizer, priv->recipient_list, msg);
if (priv->end_date) {
e_gw_message_write_string_parameter (msg, "endDate", NULL, priv->end_date);
} else