[evolution/gnome-3-10] Show both component summary and alarm description in Reminders



commit 7cf439f1a276c66e8f0c849841692633754b7e52
Author: Milan Crha <mcrha redhat com>
Date:   Tue Oct 8 15:37:37 2013 +0200

    Show both component summary and alarm description in Reminders
    
    It turned out that my understanding of the RFC when fixing bug #386113
    was incorrect, the alarm description is not supposed to replace
    the component summary, but only extend it with an additional text.

 calendar/alarm-notify/alarm-queue.c |   82 +++++++++++++++++++---------------
 1 files changed, 46 insertions(+), 36 deletions(-)
---
diff --git a/calendar/alarm-notify/alarm-queue.c b/calendar/alarm-notify/alarm-queue.c
index bd044e5..d4c335f 100644
--- a/calendar/alarm-notify/alarm-queue.c
+++ b/calendar/alarm-notify/alarm-queue.c
@@ -1597,37 +1597,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), CAL_STATIC_CAPABILITY_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 */
@@ -1639,8 +1653,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;
@@ -1656,11 +1670,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.");
 
@@ -1739,8 +1753,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);
@@ -1775,9 +1788,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;
@@ -1794,11 +1806,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.");
 
@@ -1849,9 +1861,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);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]