diff -up evolution-3.8.5/calendar/alarm-notify/alarm-queue.c.evo evolution-3.8.5/calendar/alarm-notify/alarm-queue.c
--- evolution-3.8.5/calendar/alarm-notify/alarm-queue.c.evo 2013-08-01 14:12:40.000000000 +0200
+++ evolution-3.8.5/calendar/alarm-notify/alarm-queue.c 2013-10-09 08:37:59.488015698 +0200
@@ -1593,37 +1593,51 @@ tray_list_add_new (TrayIconData *data)
message_push ((Message *) msg);
}
-static void
+static gchar *
alarm_queue_get_alarm_summary (ECalClient *cal_client,
ECalComponent *comp,
- const ECalComponentAlarmInstance *instance,
- ECalComponentText *text,
- ECalComponentAlarm **palarm)
+ const ECalComponentAlarmInstance *instance)
{
- g_return_if_fail (comp != NULL);
- g_return_if_fail (instance != NULL);
- g_return_if_fail (instance->auid != NULL);
- g_return_if_fail (text != NULL);
- g_return_if_fail (palarm != NULL);
+ ECalComponentAlarm *alarm = NULL;
+ ECalComponentText summary_text, alarm_text;
+ gchar *alarm_summary;
+
+ g_return_val_if_fail (comp != NULL, NULL);
+ g_return_val_if_fail (instance != NULL, NULL);
+ g_return_val_if_fail (instance->auid != NULL, NULL);
+
+ summary_text.value = NULL;
+ alarm_text.value = NULL;
- text->value = NULL;
+ e_cal_component_get_summary (comp, &summary_text);
if (e_client_check_capability (E_CLIENT (cal_client), "alarm-description")) {
- *palarm = e_cal_component_get_alarm (comp, instance->auid);
- if (*palarm) {
- e_cal_component_alarm_get_description (*palarm, text);
- if (!text->value || !*text->value) {
- text->value = NULL;
- e_cal_component_alarm_free (*palarm);
- *palarm = NULL;
- }
- } else {
- *palarm = NULL;
+ alarm = e_cal_component_get_alarm (comp, instance->auid);
+ if (alarm) {
+ e_cal_component_alarm_get_description (alarm, &alarm_text);
+ if (!alarm_text.value || !*alarm_text.value)
+ alarm_text.value = NULL;
}
}
- if (!text->value)
- e_cal_component_get_summary (comp, text);
+ if (alarm_text.value && summary_text.value &&
+ e_util_utf8_strcasecmp (alarm_text.value, summary_text.value) == 0)
+ alarm_text.value = NULL;
+
+ if (summary_text.value && *summary_text.value &&
+ alarm_text.value && *alarm_text.value)
+ alarm_summary = g_strconcat (summary_text.value, "\n", alarm_text.value, NULL);
+ else if (summary_text.value && *summary_text.value)
+ alarm_summary = g_strdup (summary_text.value);
+ else if (alarm_text.value && *alarm_text.value)
+ alarm_summary = g_strdup (alarm_text.value);
+ else
+ alarm_summary = NULL;
+
+ if (alarm)
+ e_cal_component_alarm_free (alarm);
+
+ return alarm_summary;
}
/* Performs notification of a display alarm */
@@ -1635,8 +1649,8 @@ display_notification (time_t trigger,
{
QueuedAlarm *qa;
ECalComponent *comp;
- ECalComponentAlarm *comp_alarm = NULL;
const gchar *summary, *description, *location;
+ gchar *alarm_summary;
TrayIconData *tray_data;
ECalComponentText text;
GSList *text_list;
@@ -1652,11 +1666,11 @@ display_notification (time_t trigger,
return;
/* get a sensible description for the event */
- alarm_queue_get_alarm_summary (cqa->parent_client->cal_client, comp, qa->instance, &text, &comp_alarm);
+ alarm_summary = alarm_queue_get_alarm_summary (cqa->parent_client->cal_client, comp, qa->instance);
e_cal_component_get_organizer (comp, &organiser);
- if (text.value)
- summary = text.value;
+ if (alarm_summary && *alarm_summary)
+ summary = alarm_summary;
else
summary = _("No summary available.");
@@ -1735,8 +1749,7 @@ display_notification (time_t trigger,
gtk_status_icon_set_tooltip_text (tray_icon, str);
}
- if (comp_alarm)
- e_cal_component_alarm_free (comp_alarm);
+ g_free (alarm_summary);
g_free (start_str);
g_free (end_str);
g_free (alarm_str);
@@ -1771,9 +1784,8 @@ popup_notification (time_t trigger,
{
QueuedAlarm *qa;
ECalComponent *comp;
- ECalComponentAlarm *comp_alarm = NULL;
const gchar *summary, *location;
- ECalComponentText text;
+ gchar *alarm_summary;
gchar *str, *start_str, *end_str, *alarm_str, *time_str;
icaltimezone *current_zone;
ECalComponentOrganizer organiser;
@@ -1790,11 +1802,11 @@ popup_notification (time_t trigger,
notify_init (_("Evolution Reminders"));
/* get a sensible description for the event */
- alarm_queue_get_alarm_summary (cqa->parent_client->cal_client, comp, qa->instance, &text, &comp_alarm);
+ alarm_summary = alarm_queue_get_alarm_summary (cqa->parent_client->cal_client, comp, qa->instance);
e_cal_component_get_organizer (comp, &organiser);
- if (text.value)
- summary = text.value;
+ if (alarm_summary && *alarm_summary)
+ summary = alarm_summary;
else
summary = _("No summary available.");
@@ -1845,9 +1857,7 @@ popup_notification (time_t trigger,
if (!notify_notification_show (notify, NULL))
g_warning ("Could not send notification to daemon\n");
- if (comp_alarm)
- e_cal_component_alarm_free (comp_alarm);
- /* create the private structure */
+ g_free (alarm_summary);
g_free (start_str);
g_free (end_str);
g_free (alarm_str);