diff options
Diffstat (limited to 'calendar/cal-util')
-rw-r--r-- | calendar/cal-util/cal-component.c | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/calendar/cal-util/cal-component.c b/calendar/cal-util/cal-component.c index 5fc5addf19..eeb51c79f6 100644 --- a/calendar/cal-util/cal-component.c +++ b/calendar/cal-util/cal-component.c @@ -4462,19 +4462,6 @@ make_alarm (icalcomponent *subcomp) return alarm; } -/* Used from g_hash_table_foreach(); adds an alarm UID to a list */ -static void -add_alarm_uid (gpointer key, gpointer value, gpointer data) -{ - const char *auid; - GList **l; - - auid = key; - l = data; - - *l = g_list_prepend (*l, g_strdup (auid)); -} - /** * cal_component_get_alarm_uids: * @comp: A calendar component. @@ -4489,6 +4476,7 @@ GList * cal_component_get_alarm_uids (CalComponent *comp) { CalComponentPrivate *priv; + icalcompiter iter; GList *l; g_return_val_if_fail (comp != NULL, NULL); @@ -4498,7 +4486,29 @@ cal_component_get_alarm_uids (CalComponent *comp) g_return_val_if_fail (priv->icalcomp != NULL, NULL); l = NULL; - g_hash_table_foreach (priv->alarm_uid_hash, add_alarm_uid, &l); + for (iter = icalcomponent_begin_component (priv->icalcomp, ICAL_VALARM_COMPONENT); + icalcompiter_deref (&iter) != NULL; + icalcompiter_next (&iter)) { + icalcomponent *subcomp; + icalproperty *prop; + + subcomp = icalcompiter_deref (&iter); + for (prop = icalcomponent_get_first_property (subcomp, ICAL_X_PROPERTY); + prop; + prop = icalcomponent_get_next_property (subcomp, ICAL_X_PROPERTY)) { + const char *xname; + + xname = icalproperty_get_x_name (prop); + g_assert (xname != NULL); + + if (strcmp (xname, EVOLUTION_ALARM_UID_PROPERTY) == 0) { + const char *auid; + + auid = alarm_uid_from_prop (prop); + l = g_list_append (l, g_strdup (auid)); + } + } + } return l; } |