aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/dialogs')
-rw-r--r--calendar/gui/dialogs/event-editor.c31
-rw-r--r--calendar/gui/dialogs/event-editor.h5
-rw-r--r--calendar/gui/dialogs/meeting-page.c20
-rw-r--r--calendar/gui/dialogs/meeting-page.h6
-rw-r--r--calendar/gui/dialogs/task-editor.c32
-rw-r--r--calendar/gui/dialogs/task-editor.h5
6 files changed, 72 insertions, 27 deletions
diff --git a/calendar/gui/dialogs/event-editor.c b/calendar/gui/dialogs/event-editor.c
index 20b91475d4..4ee2556d97 100644
--- a/calendar/gui/dialogs/event-editor.c
+++ b/calendar/gui/dialogs/event-editor.c
@@ -188,6 +188,18 @@ event_editor_init (EventEditor *ee)
priv = g_new0 (EventEditorPrivate, 1);
ee->priv = priv;
+ priv->model = E_MEETING_MODEL (e_meeting_model_new ());
+ priv->meeting_shown = TRUE;
+ priv->updating = FALSE;
+}
+
+EventEditor *
+event_editor_construct (EventEditor *ee, CalClient *client)
+{
+ EventEditorPrivate *priv;
+
+ priv = ee->priv;
+
priv->event_page = event_page_new ();
comp_editor_append_page (COMP_EDITOR (ee),
COMP_EDITOR_PAGE (priv->event_page),
@@ -203,25 +215,24 @@ event_editor_init (EventEditor *ee)
COMP_EDITOR_PAGE (priv->recur_page),
_("Recurrence"));
- priv->model = E_MEETING_MODEL (e_meeting_model_new ());
-
priv->sched_page = schedule_page_new (priv->model);
comp_editor_append_page (COMP_EDITOR (ee),
COMP_EDITOR_PAGE (priv->sched_page),
_("Scheduling"));
- priv->meet_page = meeting_page_new (priv->model);
+ priv->meet_page = meeting_page_new (priv->model, client);
comp_editor_append_page (COMP_EDITOR (ee),
COMP_EDITOR_PAGE (priv->meet_page),
_("Meeting"));
- comp_editor_merge_ui (COMP_EDITOR (ee), "evolution-event-editor.xml", verbs, pixmaps);
+ comp_editor_set_cal_client (COMP_EDITOR (ee), client);
- priv->meeting_shown = TRUE;
- priv->updating = FALSE;
+ comp_editor_merge_ui (COMP_EDITOR (ee), "evolution-event-editor.xml", verbs, pixmaps);
init_widgets (ee);
set_menu_sens (ee);
+
+ return ee;
}
static void
@@ -382,6 +393,7 @@ event_editor_destroy (GtkObject *object)
/**
* event_editor_new:
+ * @client: a CalClient
*
* Creates a new event editor dialog.
*
@@ -389,9 +401,12 @@ event_editor_destroy (GtkObject *object)
* editor could not be created.
**/
EventEditor *
-event_editor_new (void)
+event_editor_new (CalClient *client)
{
- return EVENT_EDITOR (gtk_type_new (TYPE_EVENT_EDITOR));
+ EventEditor *ee;
+
+ ee = EVENT_EDITOR (gtk_type_new (TYPE_EVENT_EDITOR));
+ return event_editor_construct (ee, client);
}
static void
diff --git a/calendar/gui/dialogs/event-editor.h b/calendar/gui/dialogs/event-editor.h
index d27bb8e52d..1b6f72829a 100644
--- a/calendar/gui/dialogs/event-editor.h
+++ b/calendar/gui/dialogs/event-editor.h
@@ -52,8 +52,9 @@ struct _EventEditorClass {
};
GtkType event_editor_get_type (void);
-EventEditor *event_editor_construct (EventEditor *ee);
-EventEditor *event_editor_new (void);
+EventEditor *event_editor_construct (EventEditor *ee,
+ CalClient *client);
+EventEditor *event_editor_new (CalClient *client);
void event_editor_show_meeting (EventEditor *ee);
diff --git a/calendar/gui/dialogs/meeting-page.c b/calendar/gui/dialogs/meeting-page.c
index 011f1301af..44ff76eb08 100644
--- a/calendar/gui/dialogs/meeting-page.c
+++ b/calendar/gui/dialogs/meeting-page.c
@@ -733,11 +733,13 @@ table_canvas_focus_out_cb (GtkWidget *widget, GdkEventFocus *event, gpointer dat
* be created.
**/
MeetingPage *
-meeting_page_construct (MeetingPage *mpage, EMeetingModel *emm)
+meeting_page_construct (MeetingPage *mpage, EMeetingModel *emm,
+ CalClient *client)
{
MeetingPagePrivate *priv;
ETable *real_table;
gchar *filename;
+ const char *backend_address;
GList *l;
priv = mpage->priv;
@@ -757,6 +759,8 @@ meeting_page_construct (MeetingPage *mpage, EMeetingModel *emm)
}
/* Address information */
+ backend_address = cal_client_get_email_address (client);
+
priv->addresses = itip_addresses_get ();
for (l = priv->addresses; l != NULL; l = l->next) {
ItipAddress *a = l->data;
@@ -764,8 +768,14 @@ meeting_page_construct (MeetingPage *mpage, EMeetingModel *emm)
s = e_utf8_to_gtk_string (GTK_COMBO (priv->organizer)->entry, a->full);
priv->address_strings = g_list_append (priv->address_strings, s);
- if (a->default_address)
- priv->default_address = s;
+
+ /* Note that the address specified by the backend gets
+ * precedence over the default mail address.
+ */
+ if (backend_address && !strcmp (backend_address, a->address))
+ priv->default_address = a->full;
+ else if (a->default_address && !priv->default_address)
+ priv->default_address = a->full;
}
/* The etable displaying attendees and their status */
@@ -803,12 +813,12 @@ meeting_page_construct (MeetingPage *mpage, EMeetingModel *emm)
* not be created.
**/
MeetingPage *
-meeting_page_new (EMeetingModel *emm)
+meeting_page_new (EMeetingModel *emm, CalClient *client)
{
MeetingPage *mpage;
mpage = gtk_type_new (TYPE_MEETING_PAGE);
- if (!meeting_page_construct (mpage, emm)) {
+ if (!meeting_page_construct (mpage, emm, client)) {
gtk_object_unref (GTK_OBJECT (mpage));
return NULL;
}
diff --git a/calendar/gui/dialogs/meeting-page.h b/calendar/gui/dialogs/meeting-page.h
index b7c8571b44..be55aecf98 100644
--- a/calendar/gui/dialogs/meeting-page.h
+++ b/calendar/gui/dialogs/meeting-page.h
@@ -53,8 +53,10 @@ typedef struct {
GtkType meeting_page_get_type (void);
MeetingPage *meeting_page_construct (MeetingPage *mpage,
- EMeetingModel *emm);
-MeetingPage *meeting_page_new (EMeetingModel *emm);
+ EMeetingModel *emm,
+ CalClient *client);
+MeetingPage *meeting_page_new (EMeetingModel *emm,
+ CalClient *client);
CalComponent *meeting_page_get_cancel_comp (MeetingPage *mpage);
diff --git a/calendar/gui/dialogs/task-editor.c b/calendar/gui/dialogs/task-editor.c
index 6261b8deda..e3c55ffe29 100644
--- a/calendar/gui/dialogs/task-editor.c
+++ b/calendar/gui/dialogs/task-editor.c
@@ -176,6 +176,19 @@ task_editor_init (TaskEditor *te)
priv = g_new0 (TaskEditorPrivate, 1);
te->priv = priv;
+ priv->model = E_MEETING_MODEL (e_meeting_model_new ());
+ priv->assignment_shown = TRUE;
+ priv->updating = FALSE;
+
+}
+
+TaskEditor *
+task_editor_construct (TaskEditor *te, CalClient *client)
+{
+ TaskEditorPrivate *priv;
+
+ priv = te->priv;
+
priv->task_page = task_page_new ();
comp_editor_append_page (COMP_EDITOR (te),
COMP_EDITOR_PAGE (priv->task_page),
@@ -186,20 +199,19 @@ task_editor_init (TaskEditor *te)
COMP_EDITOR_PAGE (priv->task_details_page),
_("Details"));
- priv->model = E_MEETING_MODEL (e_meeting_model_new ());
-
- priv->meet_page = meeting_page_new (priv->model);
+ priv->meet_page = meeting_page_new (priv->model, client);
comp_editor_append_page (COMP_EDITOR (te),
COMP_EDITOR_PAGE (priv->meet_page),
_("Assignment"));
- comp_editor_merge_ui (COMP_EDITOR (te), "evolution-task-editor.xml", verbs, NULL);
+ comp_editor_set_cal_client (COMP_EDITOR (te), client);
- priv->assignment_shown = TRUE;
- priv->updating = FALSE;
+ comp_editor_merge_ui (COMP_EDITOR (te), "evolution-task-editor.xml", verbs, NULL);
init_widgets (te);
set_menu_sens (te);
+
+ return te;
}
static void
@@ -334,6 +346,7 @@ task_editor_destroy (GtkObject *object)
/**
* task_editor_new:
+ * @client: a CalClient
*
* Creates a new event editor dialog.
*
@@ -341,9 +354,12 @@ task_editor_destroy (GtkObject *object)
* editor could not be created.
**/
TaskEditor *
-task_editor_new (void)
+task_editor_new (CalClient *client)
{
- return TASK_EDITOR (gtk_type_new (TYPE_TASK_EDITOR));
+ TaskEditor *te;
+
+ te = TASK_EDITOR (gtk_type_new (TYPE_TASK_EDITOR));
+ return task_editor_construct (te, client);
}
static void
diff --git a/calendar/gui/dialogs/task-editor.h b/calendar/gui/dialogs/task-editor.h
index e9888f446a..070546bee0 100644
--- a/calendar/gui/dialogs/task-editor.h
+++ b/calendar/gui/dialogs/task-editor.h
@@ -53,8 +53,9 @@ struct _TaskEditorClass {
};
GtkType task_editor_get_type (void);
-TaskEditor *task_editor_construct (TaskEditor *te);
-TaskEditor *task_editor_new (void);
+TaskEditor *task_editor_construct (TaskEditor *te,
+ CalClient *client);
+TaskEditor *task_editor_new (CalClient *client);
void task_editor_show_assignment(TaskEditor *te);