diff options
author | Chenthill Palanisamy <pchen@src.gnome.org> | 2006-08-10 15:34:30 +0800 |
---|---|---|
committer | Chenthill Palanisamy <pchen@src.gnome.org> | 2006-08-10 15:34:30 +0800 |
commit | d7e017d1bf0c1237bcd4c94e62378a2bd6f56538 (patch) | |
tree | 021e61e54f2878644e2c7eef3de11a8315b734af /calendar/gui | |
parent | d37f6d14e38072a1550e7573cb958299c417de1f (diff) | |
download | gsoc2013-evolution-d7e017d1bf0c1237bcd4c94e62378a2bd6f56538.tar gsoc2013-evolution-d7e017d1bf0c1237bcd4c94e62378a2bd6f56538.tar.gz gsoc2013-evolution-d7e017d1bf0c1237bcd4c94e62378a2bd6f56538.tar.bz2 gsoc2013-evolution-d7e017d1bf0c1237bcd4c94e62378a2bd6f56538.tar.lz gsoc2013-evolution-d7e017d1bf0c1237bcd4c94e62378a2bd6f56538.tar.xz gsoc2013-evolution-d7e017d1bf0c1237bcd4c94e62378a2bd6f56538.tar.zst gsoc2013-evolution-d7e017d1bf0c1237bcd4c94e62378a2bd6f56538.zip |
Fixes shared memos for File system.
svn path=/trunk/; revision=32520
Diffstat (limited to 'calendar/gui')
-rw-r--r-- | calendar/gui/dialogs/comp-editor.c | 48 | ||||
-rw-r--r-- | calendar/gui/dialogs/event-editor.c | 2 | ||||
-rw-r--r-- | calendar/gui/dialogs/memo-page.c | 45 | ||||
-rw-r--r-- | calendar/gui/dialogs/send-comp.c | 3 | ||||
-rw-r--r-- | calendar/gui/dialogs/task-editor.c | 2 | ||||
-rw-r--r-- | calendar/gui/e-cal-model-calendar.c | 2 | ||||
-rw-r--r-- | calendar/gui/e-calendar-table.c | 2 | ||||
-rw-r--r-- | calendar/gui/e-calendar-view.c | 12 | ||||
-rw-r--r-- | calendar/gui/e-itip-control.c | 6 | ||||
-rw-r--r-- | calendar/gui/e-memo-table.c | 2 | ||||
-rw-r--r-- | calendar/gui/itip-utils.c | 21 | ||||
-rw-r--r-- | calendar/gui/itip-utils.h | 2 | ||||
-rw-r--r-- | calendar/gui/tasks-control.c | 2 |
13 files changed, 120 insertions, 29 deletions
diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c index 80827036f9..83a1f09d40 100644 --- a/calendar/gui/dialogs/comp-editor.c +++ b/calendar/gui/dialogs/comp-editor.c @@ -861,9 +861,12 @@ save_comp_with_send (CompEditor *editor) return FALSE; if ((delegate && !e_cal_get_save_schedules (priv->client)) || (send && send_component_dialog ((GtkWindow *) editor, priv->client, priv->comp, !priv->existing_org))) { - if (itip_organizer_is_user (priv->comp, priv->client)) - return comp_editor_send_comp (editor, E_CAL_COMPONENT_METHOD_REQUEST); - else { + if (itip_organizer_is_user (priv->comp, priv->client)) { + if (e_cal_component_get_vtype (priv->comp) == E_CAL_COMPONENT_JOURNAL) + return comp_editor_send_comp (editor, E_CAL_COMPONENT_METHOD_PUBLISH); + else + return comp_editor_send_comp (editor, E_CAL_COMPONENT_METHOD_REQUEST); + } else { if (!comp_editor_send_comp (editor, E_CAL_COMPONENT_METHOD_REQUEST)) return FALSE; @@ -2460,12 +2463,43 @@ set_attendees_for_delegation (ECalComponent *comp, const char *address, ECalComp } +static void +get_users_from_memo_comp (ECalComponent *comp, GList **users) +{ + icalcomponent *icalcomp; + icalproperty *icalprop; + const char *attendees = NULL; + char **emails, **iter; + + icalcomp = e_cal_component_get_icalcomponent (comp); + + for (icalprop = icalcomponent_get_first_property (icalcomp, ICAL_X_PROPERTY); icalprop; + icalprop = icalcomponent_get_next_property (icalcomp, ICAL_X_PROPERTY)) { + if (g_str_equal (icalproperty_get_x_name (icalprop), "X-EVOLUTION-RECIPIENTS")) { + break; + } + } + + if (icalprop) { + attendees = icalproperty_get_x (icalprop); + emails = g_strsplit (attendees, ";", -1); + + iter = emails; + while (*iter) { + *users = g_list_append (*users, g_strdup (*iter)); + iter++; + } + g_strfreev (emails); + } +} + static gboolean real_send_comp (CompEditor *editor, ECalComponentItipMethod method) { CompEditorPrivate *priv; ECalComponent *send_comp; char *address = NULL; + GList *users = NULL; g_return_val_if_fail (editor != NULL, FALSE); g_return_val_if_fail (IS_COMP_EDITOR (editor), FALSE); @@ -2473,6 +2507,10 @@ real_send_comp (CompEditor *editor, ECalComponentItipMethod method) priv = editor->priv; send_comp = e_cal_component_clone (priv->comp); + + if (e_cal_component_get_vtype (send_comp) == E_CAL_COMPONENT_JOURNAL) + get_users_from_memo_comp (send_comp, &users); + /* The user updates the delegated status to the Organizer, so remove all other attendees */ if ((priv->flags & COMP_EDITOR_DELEGATE)) { address = itip_get_comp_attendee (send_comp, priv->client); @@ -2483,7 +2521,7 @@ real_send_comp (CompEditor *editor, ECalComponentItipMethod method) if (!e_cal_component_has_attachments (priv->comp)) { if (itip_send_comp (method, send_comp, priv->client, - NULL, NULL)) { + NULL, NULL, users)) { g_object_unref (send_comp); return TRUE; } @@ -2504,7 +2542,7 @@ real_send_comp (CompEditor *editor, ECalComponentItipMethod method) /* mime_attach_list is freed by itip_send_comp */ mime_attach_list = comp_editor_get_mime_attach_list (editor); if (itip_send_comp (method, send_comp, priv->client, - NULL, mime_attach_list)) { + NULL, mime_attach_list, users)) { save_comp (editor); g_object_unref (send_comp); return TRUE; diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c index 389834180f..4869f8887a 100644 --- a/calendar/gui/dialogs/event-editor.c +++ b/calendar/gui/dialogs/event-editor.c @@ -767,7 +767,7 @@ event_editor_send_comp (CompEditor *editor, ECalComponentItipMethod method) client = e_meeting_store_get_e_cal (priv->model); result = itip_send_comp (E_CAL_COMPONENT_METHOD_CANCEL, comp, - client, NULL, NULL); + client, NULL, NULL, NULL); g_object_unref (comp); if (!result) diff --git a/calendar/gui/dialogs/memo-page.c b/calendar/gui/dialogs/memo-page.c index 42850b60b3..41d03f322b 100644 --- a/calendar/gui/dialogs/memo-page.c +++ b/calendar/gui/dialogs/memo-page.c @@ -485,7 +485,7 @@ fill_comp_with_recipients (ENameSelector *name_selector, ECalComponent *comp) } if (book) { - GList *contacts; + GList *contacts = NULL; EContact *n_con = NULL; char *qu; EBookQuery *query; @@ -496,7 +496,6 @@ fill_comp_with_recipients (ENameSelector *name_selector, ECalComponent *comp) if (!e_book_get_contacts (book, query, &contacts, NULL)) { g_warning ("Could not get contact from the book \n"); - return; } else { des = e_destination_new (); n_con = contacts->data; @@ -704,7 +703,7 @@ 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)) { + 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; @@ -732,6 +731,8 @@ memo_page_fill_component (CompEditorPage *page, ECalComponent *comp) organizer.cn = a->id->name; e_cal_component_set_organizer (comp, &organizer); + comp_editor_page_notify_needs_send (page); + g_free (addr); } @@ -899,6 +900,27 @@ widget_focus_out_cb (GtkWidget *widget, GdkEventFocus *event, gpointer data) return FALSE; } + +/* Callback used when the summary changes; we emit the notification signal. */ +static void +summary_changed_cb (GtkEditable *editable, gpointer data) +{ + MemoPage *mpage; + MemoPagePrivate *priv; + gchar *summary; + + mpage = MEMO_PAGE (data); + priv = mpage->priv; + + if (priv->updating) + return; + + summary = e_dialog_editable_get (GTK_WIDGET (editable)); + comp_editor_page_notify_summary_changed (COMP_EDITOR_PAGE (mpage), + summary); + g_free (summary); +} + static void to_button_clicked_cb (GtkButton *button, gpointer data) { @@ -925,6 +947,14 @@ init_widgets (MemoPage *mpage) priv = mpage->priv; + /* Summary */ + g_signal_connect((priv->summary_entry), "changed", + G_CALLBACK (summary_changed_cb), mpage); + g_signal_connect(priv->summary_entry, "focus-in-event", + G_CALLBACK (widget_focus_in_cb), mpage); + g_signal_connect(priv->summary_entry, "focus-out-event", + G_CALLBACK (widget_focus_out_cb), mpage); + /* Memo Content */ text_buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->memo_content)); @@ -942,7 +972,7 @@ init_widgets (MemoPage *mpage) /* Source selector */ g_signal_connect((priv->source_selector), "source_selected", G_CALLBACK (source_changed_cb), mpage); - + /* Connect the default signal handler to use to make sure the "changed" field gets set whenever a field is changed. */ @@ -955,6 +985,12 @@ init_widgets (MemoPage *mpage) g_signal_connect((priv->summary_entry), "changed", G_CALLBACK (field_changed_cb), mpage); + + g_signal_connect((priv->source_selector), "changed", + G_CALLBACK (field_changed_cb), mpage); + + g_signal_connect((priv->start_date), "changed", + G_CALLBACK (field_changed_cb), mpage); if (priv->name_selector) { ENameSelectorDialog *name_selector_dialog; @@ -964,6 +1000,7 @@ init_widgets (MemoPage *mpage) g_signal_connect (name_selector_dialog, "response", G_CALLBACK (response_cb), mpage); g_signal_connect ((priv->to_button), "clicked", G_CALLBACK (to_button_clicked_cb), mpage); + g_signal_connect ((priv->to_entry), "changed", G_CALLBACK (field_changed_cb), mpage); } memo_page_set_show_categories (mpage, calendar_config_get_show_categories()); diff --git a/calendar/gui/dialogs/send-comp.c b/calendar/gui/dialogs/send-comp.c index 9e88f302eb..e9f6275400 100644 --- a/calendar/gui/dialogs/send-comp.c +++ b/calendar/gui/dialogs/send-comp.c @@ -61,7 +61,8 @@ send_component_dialog (GtkWindow *parent, ECal *client, ECalComponent *comp, gbo else id = "calendar:prompt-send-updated-task-info"; break; - + case E_CAL_COMPONENT_JOURNAL: + return TRUE; default: g_message ("send_component_dialog(): " "Cannot handle object of type %d", vtype); diff --git a/calendar/gui/dialogs/task-editor.c b/calendar/gui/dialogs/task-editor.c index 11b6443843..482fb4ef39 100644 --- a/calendar/gui/dialogs/task-editor.c +++ b/calendar/gui/dialogs/task-editor.c @@ -584,7 +584,7 @@ task_editor_send_comp (CompEditor *editor, ECalComponentItipMethod method) client = e_meeting_store_get_e_cal (priv->model); result = itip_send_comp (E_CAL_COMPONENT_METHOD_CANCEL, comp, - client, NULL, NULL); + client, NULL, NULL, NULL); g_object_unref (comp); if (!result) diff --git a/calendar/gui/e-cal-model-calendar.c b/calendar/gui/e-cal-model-calendar.c index f27bd8b451..e7af82566e 100644 --- a/calendar/gui/e-cal-model-calendar.c +++ b/calendar/gui/e-cal-model-calendar.c @@ -381,7 +381,7 @@ ecmc_set_value_at (ETableModel *etm, int col, int row, const void *value) if (itip_organizer_is_user (comp, comp_data->client) && send_component_dialog (NULL, comp_data->client, comp, FALSE)) itip_send_comp (E_CAL_COMPONENT_METHOD_REQUEST, comp, - comp_data->client, NULL, NULL); + comp_data->client, NULL, NULL, NULL); } else { g_warning (G_STRLOC ": Could not modify the object!"); diff --git a/calendar/gui/e-calendar-table.c b/calendar/gui/e-calendar-table.c index 300b9dbeb0..ad017e534d 100644 --- a/calendar/gui/e-calendar-table.c +++ b/calendar/gui/e-calendar-table.c @@ -1183,7 +1183,7 @@ e_calendar_table_on_forward (EPopup *ep, EPopupItem *pitem, void *data) comp = e_cal_component_new (); e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (comp_data->icalcomp)); - itip_send_comp (E_CAL_COMPONENT_METHOD_PUBLISH, comp, comp_data->client, NULL, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_PUBLISH, comp, comp_data->client, NULL, NULL, NULL); g_object_unref (comp); } diff --git a/calendar/gui/e-calendar-view.c b/calendar/gui/e-calendar-view.c index c8408c647c..6ab0e7f908 100644 --- a/calendar/gui/e-calendar-view.c +++ b/calendar/gui/e-calendar-view.c @@ -385,7 +385,7 @@ e_calendar_view_add_event (ECalendarView *cal_view, ECal *client, time_t dtstart send_component_dialog ((GtkWindow *) gtk_widget_get_toplevel (GTK_WIDGET (cal_view)), client, comp, TRUE)) { itip_send_comp (E_CAL_COMPONENT_METHOD_REQUEST, comp, - client, NULL, NULL); + client, NULL, NULL, NULL); } } else { g_message (G_STRLOC ": Could not create the object!"); @@ -690,7 +690,7 @@ e_calendar_view_cut_clipboard (ECalendarView *cal_view) && cancel_component_dialog ((GtkWindow *) gtk_widget_get_toplevel (GTK_WIDGET (cal_view)), event->comp_data->client, comp, TRUE)) itip_send_comp (E_CAL_COMPONENT_METHOD_CANCEL, comp, - event->comp_data->client, NULL, NULL); + event->comp_data->client, NULL, NULL, NULL); e_cal_component_get_uid (comp, &uid); if (e_cal_component_is_instance (comp)) { @@ -961,7 +961,7 @@ delete_event (ECalendarView *cal_view, ECalendarViewEvent *event) event->comp_data->client, comp, TRUE)) itip_send_comp (E_CAL_COMPONENT_METHOD_CANCEL, comp, - event->comp_data->client, NULL, NULL); + event->comp_data->client, NULL, NULL, NULL); e_cal_component_get_uid (comp, &uid); if (!uid || !*uid) { @@ -1108,7 +1108,7 @@ e_calendar_view_delete_selected_occurrence (ECalendarView *cal_view) e_cal_component_free_datetime (&range.datetime); } - itip_send_comp (E_CAL_COMPONENT_METHOD_CANCEL, comp, event->comp_data->client, NULL, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_CANCEL, comp, event->comp_data->client, NULL, NULL, NULL); } if (is_instance) @@ -1507,7 +1507,7 @@ on_forward (EPopup *ep, EPopupItem *pitem, void *data) comp = e_cal_component_new (); e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); - itip_send_comp (E_CAL_COMPONENT_METHOD_PUBLISH, comp, event->comp_data->client, NULL, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_PUBLISH, comp, event->comp_data->client, NULL, NULL, NULL); g_list_free (selected); g_object_unref (comp); @@ -2024,7 +2024,7 @@ e_calendar_view_modify_and_send (ECalComponent *comp, if (e_cal_modify_object (client, e_cal_component_get_icalcomponent (comp), mod, NULL)) { if (itip_organizer_is_user (comp, client) && send_component_dialog (toplevel, client, comp, new)) - itip_send_comp (E_CAL_COMPONENT_METHOD_REQUEST, comp, client, NULL, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_REQUEST, comp, client, NULL, NULL, NULL); } else { g_message (G_STRLOC ": Could not update the object!"); } diff --git a/calendar/gui/e-itip-control.c b/calendar/gui/e-itip-control.c index 314387e1eb..bc4ac19369 100644 --- a/calendar/gui/e-itip-control.c +++ b/calendar/gui/e-itip-control.c @@ -1993,7 +1993,7 @@ send_item (EItipControl *itip) comp = get_real_item (itip); if (comp != NULL) { - itip_send_comp (E_CAL_COMPONENT_METHOD_REQUEST, comp, priv->current_ecal, NULL, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_REQUEST, comp, priv->current_ecal, NULL, NULL, NULL); g_object_unref (comp); dialog = gnome_ok_dialog (_("Item sent!\n")); } else { @@ -2039,7 +2039,7 @@ send_freebusy (EItipControl *itip) for (l = comp_list; l; l = l->next) { ECalComponent *comp = E_CAL_COMPONENT (l->data); - itip_send_comp (E_CAL_COMPONENT_METHOD_REPLY, comp, priv->current_ecal, NULL, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_REPLY, comp, priv->current_ecal, NULL, NULL, NULL); g_object_unref (comp); } @@ -2478,7 +2478,7 @@ ok_clicked_cb (GtkWidget *widget, gpointer data) g_slist_free (list); e_cal_component_rescan (comp); - itip_send_comp (E_CAL_COMPONENT_METHOD_REPLY, comp, priv->current_ecal, priv->top_level, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_REPLY, comp, priv->current_ecal, priv->top_level, NULL, NULL); g_object_unref (comp); } diff --git a/calendar/gui/e-memo-table.c b/calendar/gui/e-memo-table.c index 212d12187f..49594300dd 100644 --- a/calendar/gui/e-memo-table.c +++ b/calendar/gui/e-memo-table.c @@ -863,7 +863,7 @@ e_memo_table_on_forward (EPopup *ep, EPopupItem *pitem, void *data) comp = e_cal_component_new (); e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (comp_data->icalcomp)); - itip_send_comp (E_CAL_COMPONENT_METHOD_PUBLISH, comp, comp_data->client, NULL, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_PUBLISH, comp, comp_data->client, NULL, NULL, NULL); g_object_unref (comp); } diff --git a/calendar/gui/itip-utils.c b/calendar/gui/itip-utils.c index 08af83cab3..e34ec28c78 100644 --- a/calendar/gui/itip-utils.c +++ b/calendar/gui/itip-utils.c @@ -601,7 +601,23 @@ comp_to_list (ECalComponentItipMethod method, ECalComponent *comp, GList *users, e_cal_component_free_attendee_list (attendees); break; + case E_CAL_COMPONENT_METHOD_PUBLISH: + if(users) { + len = g_list_length (users); + to_list = GNOME_Evolution_Composer_RecipientList__alloc (); + to_list->_maximum = len; + to_list->_length = 0; + to_list->_buffer = CORBA_sequence_GNOME_Evolution_Composer_Recipient_allocbuf (len); + + for (l = users; l != NULL; l = l->next) { + recipient = &(to_list->_buffer[to_list->_length]); + recipient->name = CORBA_string_dup (""); + recipient->address = CORBA_string_dup (l->data); + to_list->_length++; + } + break; + } default: to_list = GNOME_Evolution_Composer_RecipientList__alloc (); to_list->_maximum = to_list->_length = 0; @@ -1145,12 +1161,11 @@ append_cal_attachments (GNOME_Evolution_Composer composer_server, ECalComponent gboolean itip_send_comp (ECalComponentItipMethod method, ECalComponent *send_comp, - ECal *client, icalcomponent *zones, GSList *attachments_list) + ECal *client, icalcomponent *zones, GSList *attachments_list, GList *users) { GNOME_Evolution_Composer composer_server; ECalComponent *comp = NULL; icalcomponent *top_level = NULL; - GList *users = NULL; GNOME_Evolution_Composer_RecipientList *to_list = NULL; GNOME_Evolution_Composer_RecipientList *cc_list = NULL; GNOME_Evolution_Composer_RecipientList *bcc_list = NULL; @@ -1267,7 +1282,7 @@ itip_send_comp (ECalComponentItipMethod method, ECalComponent *send_comp, retval = TRUE; } - if (method == E_CAL_COMPONENT_METHOD_PUBLISH) { + if ((method == E_CAL_COMPONENT_METHOD_PUBLISH) && !users) { GNOME_Evolution_Composer_show (composer_server, &ev); if (BONOBO_EX (&ev)) g_warning ("Unable to show the composer while sending iTip message"); diff --git a/calendar/gui/itip-utils.h b/calendar/gui/itip-utils.h index 843ae8210d..eded65974d 100644 --- a/calendar/gui/itip-utils.h +++ b/calendar/gui/itip-utils.h @@ -40,7 +40,7 @@ const gchar *itip_strip_mailto (const gchar *address); char *itip_get_comp_attendee (ECalComponent *comp, ECal *client); gboolean itip_send_comp (ECalComponentItipMethod method, ECalComponent *comp, - ECal *client, icalcomponent *zones, GSList *attachments_list); + ECal *client, icalcomponent *zones, GSList *attachments_list, GList *users); gboolean itip_publish_comp (ECal *client, gchar* uri, gchar* username, gchar* password, ECalComponent **pub_comp); diff --git a/calendar/gui/tasks-control.c b/calendar/gui/tasks-control.c index ec35373445..0ef93c932a 100644 --- a/calendar/gui/tasks-control.c +++ b/calendar/gui/tasks-control.c @@ -540,7 +540,7 @@ tasks_control_forward_cmd (BonoboUIComponent *uic, ECalComponent *comp; comp = e_cal_component_new (); e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (comp_data->icalcomp)); - itip_send_comp (E_CAL_COMPONENT_METHOD_PUBLISH, comp, comp_data->client, NULL, NULL); + itip_send_comp (E_CAL_COMPONENT_METHOD_PUBLISH, comp, comp_data->client, NULL, NULL, NULL); g_object_unref (comp); } } |