From 63c17f1684e715c5312c8cdca357e76ff623d3a5 Mon Sep 17 00:00:00 2001 From: Rodrigo Moya Date: Fri, 27 Jun 2003 09:04:30 +0000 Subject: Fixes #44723 2003-06-25 Rodrigo Moya Fixes #44723 * gui/dialogs/alarm-page.c: added a new field to the private structure to keep track of the old summary. (alarm_page_init): initialize new field. (alarm_page_finalize): free new field. (alarm_page_set_summary): iterate over the list of alarms to change their description if it was the same as the event's summary. svn path=/trunk/; revision=21561 --- calendar/ChangeLog | 11 ++++++++++ calendar/gui/dialogs/alarm-page.c | 42 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+) (limited to 'calendar') diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 4d0bacb57a..07413363f0 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,14 @@ +2003-06-25 Rodrigo Moya + + Fixes #44723 + + * gui/dialogs/alarm-page.c: added a new field to the private structure + to keep track of the old summary. + (alarm_page_init): initialize new field. + (alarm_page_finalize): free new field. + (alarm_page_set_summary): iterate over the list of alarms to change + their description if it was the same as the event's summary. + 2003-06-25 Rodrigo Moya Fixes #44719 diff --git a/calendar/gui/dialogs/alarm-page.c b/calendar/gui/dialogs/alarm-page.c index 540f11db92..785734ad8c 100644 --- a/calendar/gui/dialogs/alarm-page.c +++ b/calendar/gui/dialogs/alarm-page.c @@ -80,6 +80,9 @@ struct _AlarmPagePrivate { EAlarmList *list_store; gboolean updating; + + /* Old summary, to detect changes */ + gchar *old_summary; }; /* "relative" types */ @@ -218,6 +221,7 @@ alarm_page_init (AlarmPage *apage) icalcomponent_add_property (icalcomp, icalprop); priv->updating = FALSE; + priv->old_summary = NULL; } /* Destroy handler for the alarm page */ @@ -251,6 +255,11 @@ alarm_page_finalize (GObject *object) priv->list_store = NULL; } + if (priv->old_summary) { + g_free (priv->old_summary); + priv->old_summary = NULL; + } + g_free (priv); apage->priv = NULL; @@ -499,6 +508,39 @@ alarm_page_set_summary (CompEditorPage *page, const char *summary) priv = apage->priv; gtk_label_set_text (GTK_LABEL (priv->summary), summary); + + /* iterate over all alarms */ + if (priv->old_summary) { + GtkTreeView *view; + GtkTreeModel *model; + GtkTreeIter iter; + gboolean valid_iter; + + view = GTK_TREE_VIEW (priv->list); + model = GTK_TREE_MODEL (priv->list_store); + + for (valid_iter = gtk_tree_model_get_iter_first (model, &iter); valid_iter; + valid_iter = gtk_tree_model_iter_next (model, &iter)) { + CalComponentAlarm *alarm; + CalComponentText desc; + + alarm = (CalComponentAlarm *) e_alarm_list_get_alarm (priv->list_store, &iter); + g_assert (alarm != NULL); + + cal_component_alarm_get_description (alarm, &desc); + if (desc.value && *desc.value) { + if (!strcmp (desc.value, priv->old_summary)) { + desc.value = summary; + cal_component_alarm_set_description (alarm, &desc); + } + } + } + + g_free (priv->old_summary); + } + + /* update old summary */ + priv->old_summary = g_strdup (summary); } /* set_dates handler for the alarm page */ -- cgit v1.2.3