diff options
-rw-r--r-- | calendar/ChangeLog | 12 | ||||
-rw-r--r-- | calendar/gui/dialogs/memo-page.c | 52 |
2 files changed, 56 insertions, 8 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index b556e9609d..dbf56cdb14 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,15 @@ +2008-01-14 Milan Crha <mcrha@redhat.com> + + ** Fix for bug #490464 + + * gui/dialogs/memo-page.c: (get_recipients): New helper function to + obtain recipients from the component. + * gui/dialogs/memo-page.c: (memo_page_fill_widgets), + (memo_page_fill_component), (memo_page_construct): + Always show recipient's widgets for shared memo, but keep it readonly + when editing old event. Also make sure the organizer is set by + the value in the component, not by the default account. + 2008-01-14 Suman Manjunath <msuman@novell.com> ** Fix for bug #339620 diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c index 93b6239c6d..d70f937c74 100644 --- a/calendar/gui/dialogs/memo-page.c +++ b/calendar/gui/dialogs/memo-page.c @@ -338,6 +338,34 @@ sensitize_widgets (MemoPage *mpage) , NULL); } +/* returns empty string rather than NULL because of simplicity of usage */ +static const char * +get_recipients (ECalComponent *comp) +{ + icalcomponent *icalcomp; + icalproperty *icalprop; + + g_return_val_if_fail (comp != NULL, ""); + + icalcomp = e_cal_component_get_icalcomponent (comp); + + /* first look if we have there such property */ + for (icalprop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY); + icalprop; + icalprop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY)) { + const char *xname = icalproperty_get_x_name (icalprop); + + if (xname && 0 == strcmp (xname, "X-EVOLUTION-RECIPIENTS")) + break; + } + + if (icalprop) + return icalproperty_get_x (icalprop); + + return ""; +} + + /* fill_widgets handler for the memo page */ static gboolean memo_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) @@ -434,6 +462,7 @@ memo_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) string = g_strdup (strip); if (itip_organizer_is_user (comp, page->client) || itip_sentby_is_user (comp)) { + gtk_entry_set_text (GTK_ENTRY (GTK_COMBO (priv->org_combo)->entry), string); } else { list = g_list_append (list, string); gtk_combo_set_popdown_strings (GTK_COMBO (priv->org_combo), list); @@ -452,6 +481,9 @@ memo_page_fill_widgets (CompEditorPage *page, ECalComponent *comp) E_SOURCE_COMBO_BOX (priv->source_selector), e_cal_get_source (page->client)); + if (priv->to_entry && (page->flags & COMP_EDITOR_PAGE_IS_SHARED) && !(page->flags & COMP_EDITOR_PAGE_NEW_ITEM)) + gtk_entry_set_text (GTK_ENTRY (priv->to_entry), get_recipients (comp)); + priv->updating = FALSE; sensitize_widgets (mpage); @@ -723,7 +755,8 @@ memo_page_fill_component (CompEditorPage *page, ECalComponent *comp) if (str) g_free (str); - if ((page->flags & COMP_EDITOR_PAGE_IS_SHARED) && fill_comp_with_recipients (priv->name_selector, comp)) { + /* change recipients only when creating new item, after that no such action is available */ + if ((page->flags & COMP_EDITOR_PAGE_IS_SHARED) && (page->flags & COMP_EDITOR_PAGE_NEW_ITEM) && fill_comp_with_recipients (priv->name_selector, comp)) { ECalComponentOrganizer organizer = {NULL, NULL, NULL, NULL}; EAccount *a; @@ -1221,13 +1254,16 @@ memo_page_construct (MemoPage *mpage) gtk_widget_show (priv->org_label); gtk_widget_show (priv->org_combo); - if (flags & COMP_EDITOR_PAGE_NEW_ITEM) { - priv->name_selector = e_name_selector_new (); - priv->to_entry = get_to_entry (priv->name_selector); - gtk_container_add ((GtkContainer *)priv->to_hbox, priv->to_entry); - gtk_widget_show (priv->to_hbox); - gtk_widget_show (priv->to_entry); - gtk_widget_show (priv->to_button); + priv->name_selector = e_name_selector_new (); + priv->to_entry = get_to_entry (priv->name_selector); + gtk_container_add ((GtkContainer *)priv->to_hbox, priv->to_entry); + gtk_widget_show (priv->to_hbox); + gtk_widget_show (priv->to_entry); + gtk_widget_show (priv->to_button); + + if (!(flags & COMP_EDITOR_PAGE_NEW_ITEM)) { + gtk_widget_set_sensitive (priv->to_button, FALSE); + gtk_widget_set_sensitive (priv->to_entry, FALSE); } } |