aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs/event-editor.c
diff options
context:
space:
mode:
authorChenthill Palanisamy <pchen@src.gnome.org>2005-06-07 05:05:18 +0800
committerChenthill Palanisamy <pchen@src.gnome.org>2005-06-07 05:05:18 +0800
commit9f5a04beb4ce18da2609e93adbb625a51c640e56 (patch)
tree8bf8e8184fcbfa11a5ae8f5eb7ca70c851b20ecf /calendar/gui/dialogs/event-editor.c
parentf05ae97ea17e835b4f9b198e4ebeb892f33aabd9 (diff)
downloadgsoc2013-evolution-9f5a04beb4ce18da2609e93adbb625a51c640e56.tar
gsoc2013-evolution-9f5a04beb4ce18da2609e93adbb625a51c640e56.tar.gz
gsoc2013-evolution-9f5a04beb4ce18da2609e93adbb625a51c640e56.tar.bz2
gsoc2013-evolution-9f5a04beb4ce18da2609e93adbb625a51c640e56.tar.lz
gsoc2013-evolution-9f5a04beb4ce18da2609e93adbb625a51c640e56.tar.xz
gsoc2013-evolution-9f5a04beb4ce18da2609e93adbb625a51c640e56.tar.zst
gsoc2013-evolution-9f5a04beb4ce18da2609e93adbb625a51c640e56.zip
Added support for groupwise meeting delegation.
svn path=/trunk/; revision=29463
Diffstat (limited to 'calendar/gui/dialogs/event-editor.c')
-rw-r--r--calendar/gui/dialogs/event-editor.c84
1 files changed, 48 insertions, 36 deletions
diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c
index 20ded07a6c..223d4c4866 100644
--- a/calendar/gui/dialogs/event-editor.c
+++ b/calendar/gui/dialogs/event-editor.c
@@ -168,9 +168,16 @@ event_editor_construct (EventEditor *ee, ECal *client)
priv->meet_page = meeting_page_new (priv->model, client);
g_object_ref (priv->meet_page);
gtk_object_sink (GTK_OBJECT (priv->meet_page));
- comp_editor_append_page (COMP_EDITOR (ee),
+
+ if (comp_editor_get_flags (COMP_EDITOR (ee)) & COMP_EDITOR_DELEGATE) {
+ comp_editor_append_page (COMP_EDITOR (ee),
COMP_EDITOR_PAGE (priv->meet_page),
- _("Invitations"));
+ _("Delegatees"));
+ } else
+ comp_editor_append_page (COMP_EDITOR (ee),
+ COMP_EDITOR_PAGE (priv->meet_page),
+ _("Attendees"));
+ priv->meeting_shown=TRUE;
}
comp_editor_set_e_cal (COMP_EDITOR (ee), client);
@@ -222,7 +229,7 @@ event_editor_edit_comp (CompEditor *editor, ECalComponent *comp)
e_meeting_store_remove_all_attendees (priv->model);
/* Set up the attendees */
- if (attendees == NULL) {
+ if (attendees == NULL && !(comp_editor_get_flags (COMP_EDITOR (editor)) & COMP_EDITOR_DELEGATE)) {
if (priv->meet_page)
comp_editor_remove_page (editor, COMP_EDITOR_PAGE (priv->meet_page));
if (priv->sched_page)
@@ -231,6 +238,7 @@ event_editor_edit_comp (CompEditor *editor, ECalComponent *comp)
} else {
GSList *l;
int row;
+ const char *user_email;
if (!priv->meeting_shown) {
comp_editor_append_page (COMP_EDITOR (ee),
@@ -240,52 +248,53 @@ event_editor_edit_comp (CompEditor *editor, ECalComponent *comp)
COMP_EDITOR_PAGE (priv->meet_page),
_("Invitations"));
}
-
- for (l = attendees; l != NULL; l = l->next) {
- ECalComponentAttendee *ca = l->data;
- EMeetingAttendee *ia;
+
+ if (! (comp_editor_get_flags (COMP_EDITOR (editor)) & COMP_EDITOR_DELEGATE)) {
+ for (l = attendees; l != NULL; l = l->next) {
+ ECalComponentAttendee *ca = l->data;
+ EMeetingAttendee *ia;
- ia = E_MEETING_ATTENDEE (e_meeting_attendee_new_from_e_cal_component_attendee (ca));
+ ia = E_MEETING_ATTENDEE (e_meeting_attendee_new_from_e_cal_component_attendee (ca));
- /* If we aren't the organizer or the attendee is just delegating, don't allow editing */
- if (!comp_editor_get_user_org (editor) || e_meeting_attendee_is_set_delto (ia))
- e_meeting_attendee_set_edit_level (ia, E_MEETING_ATTENDEE_EDIT_NONE);
- e_meeting_store_add_attendee (priv->model, ia);
+ /* If we aren't the organizer or the attendee is just delegating, don't allow editing */
+ if (!comp_editor_get_user_org (editor) || e_meeting_attendee_is_set_delto (ia))
+ e_meeting_attendee_set_edit_level (ia, E_MEETING_ATTENDEE_EDIT_NONE);
+ e_meeting_store_add_attendee (priv->model, ia);
- g_object_unref(ia);
- }
+ g_object_unref(ia);
+ }
- /* If we aren't the organizer we can still change our own status */
- if (!comp_editor_get_user_org (editor)) {
- EAccountList *accounts;
- EAccount *account;
- EIterator *it;
+ /* If we aren't the organizer we can still change our own status */
+ if (!comp_editor_get_user_org (editor)) {
+ EAccountList *accounts;
+ EAccount *account;
+ EIterator *it;
- accounts = itip_addresses_get ();
- for (it = e_list_get_iterator((EList *)accounts);e_iterator_is_valid(it);e_iterator_next(it)) {
- EMeetingAttendee *ia;
+ accounts = itip_addresses_get ();
+ for (it = e_list_get_iterator((EList *)accounts);e_iterator_is_valid(it);e_iterator_next(it)) {
+ EMeetingAttendee *ia;
- account = (EAccount*)e_iterator_get(it);
+ account = (EAccount*)e_iterator_get(it);
+
+ ia = e_meeting_store_find_attendee (priv->model, account->id->address, &row);
+ if (ia != NULL)
+ e_meeting_attendee_set_edit_level (ia, E_MEETING_ATTENDEE_EDIT_STATUS);
+ }
+ g_object_unref(it);
+ } else if (e_cal_get_organizer_must_attend (client)) {
+ EMeetingAttendee *ia;
- ia = e_meeting_store_find_attendee (priv->model, account->id->address, &row);
+ ia = e_meeting_store_find_attendee (priv->model, organizer.value, &row);
if (ia != NULL)
- e_meeting_attendee_set_edit_level (ia, E_MEETING_ATTENDEE_EDIT_STATUS);
+ e_meeting_attendee_set_edit_level (ia, E_MEETING_ATTENDEE_EDIT_NONE);
}
- g_object_unref(it);
- } else if (e_cal_get_organizer_must_attend (client)) {
- EMeetingAttendee *ia;
-
- ia = e_meeting_store_find_attendee (priv->model, organizer.value, &row);
- if (ia != NULL)
- e_meeting_attendee_set_edit_level (ia, E_MEETING_ATTENDEE_EDIT_NONE);
}
-
priv->meeting_shown = TRUE;
}
e_cal_component_free_attendee_list (attendees);
comp_editor_set_needs_send (COMP_EDITOR (ee), priv->meeting_shown && itip_organizer_is_user (comp, client));
-
+
priv->updating = FALSE;
}
@@ -378,12 +387,13 @@ event_editor_finalize (GObject *object)
* editor could not be created.
**/
EventEditor *
-event_editor_new (ECal *client, gboolean is_meeting)
+event_editor_new (ECal *client, CompEditorFlags flags)
{
EventEditor *ee;
ee = EVENT_EDITOR (g_object_new (TYPE_EVENT_EDITOR, NULL));
- ee->priv->is_meeting = is_meeting;
+ ee->priv->is_meeting = flags & COMP_EDITOR_MEETING;
+ comp_editor_set_flags (COMP_EDITOR (ee), flags);
return event_editor_construct (ee, client);
}
@@ -408,6 +418,8 @@ show_meeting (EventEditor *ee)
comp_editor_set_changed (COMP_EDITOR (ee), FALSE);
comp_editor_set_needs_send (COMP_EDITOR (ee), priv->meeting_shown);
}
+ if (comp_editor_get_flags (COMP_EDITOR (ee)) & COMP_EDITOR_DELEGATE)
+ comp_editor_show_page (COMP_EDITOR (ee), COMP_EDITOR_PAGE (priv->meet_page));
}