diff options
author | JP Rosevear <jpr@ximian.com> | 2004-04-30 03:36:53 +0800 |
---|---|---|
committer | JP Rosevear <jpr@src.gnome.org> | 2004-04-30 03:36:53 +0800 |
commit | 87e60de4aae77bc239ceb67aaa2c7c8bd6a24343 (patch) | |
tree | 36d286e28e9d702ade684a014b40810b89a2ebb0 /calendar/gui/e-tasks.c | |
parent | 68a179bc703eb13cbe758a28cec6cccf6bd8766b (diff) | |
download | gsoc2013-evolution-87e60de4aae77bc239ceb67aaa2c7c8bd6a24343.tar.gz gsoc2013-evolution-87e60de4aae77bc239ceb67aaa2c7c8bd6a24343.tar.zst gsoc2013-evolution-87e60de4aae77bc239ceb67aaa2c7c8bd6a24343.zip |
remove prototypes
2004-04-29 JP Rosevear <jpr@ximian.com>
* gui/tasks-component.h (tasks_component_peek_source_list): remove
prototypes
* gui/tasks-component.c (source_removed_cb): unselect the
source in the selector if source removed from calendar
(create_component_view): create the activity handler and listen to
source remove signal
* gui/gnome-cal.h: add signals, protos
* gui/gnome-cal.c (gnome_calendar_class_init): add source added
and removed signals
(client_cal_opened_cb): emit source removed signal
(open_ecal): set the status message
(backend_died_cb): emit source removed signal
(gnome_calendar_set_activity_handler): allow an activity handler
to be set
(gnome_calendar_add_source): emit source added signal
(gnome_calendar_remove_source): emit source removed signal
(display_view): update the active activity handler
* gui/e-tasks.h: add signal prototypes
* gui/e-tasks.c (e_tasks_class_init): add source added and removed
signals
(backend_died_cb): emit source removed signal
(e_tasks_add_todo_source): emit source added/removed signals
(e_tasks_remove_todo_source): emit source removed signal
* gui/e-calendar-view.h: add proto
* gui/e-calendar-view.c (e_calendar_view_set_activity_handler):
allow an activity handler to be set
(e_calendar_view_set_status_message): use private activity handler
(if any) to set status message
* gui/e-calendar-table.h: add data member and proto
* gui/e-calendar-table.c (e_calendar_table_set_activity_handler):
allow an activity handler to be set
(e_calendar_table_set_status_message): use private activity
handler (if any) to set status message
* gui/e-calendar-marshal.list: add extra marshallers
* gui/calendar-component.h: kill protos
* gui/calendar-component.c (source_removed_cb): unselect the
source in the selector if source removed from calendar
(create_component_view): create the activity handler and listen to
source remove signal
svn path=/trunk/; revision=25694
Diffstat (limited to 'calendar/gui/e-tasks.c')
-rw-r--r-- | calendar/gui/e-tasks.c | 56 |
1 files changed, 46 insertions, 10 deletions
diff --git a/calendar/gui/e-tasks.c b/calendar/gui/e-tasks.c index fab404b38d..e48e954c12 100644 --- a/calendar/gui/e-tasks.c +++ b/calendar/gui/e-tasks.c @@ -42,6 +42,7 @@ #include "widgets/menus/gal-view-menus.h" #include "dialogs/delete-error.h" #include "dialogs/task-editor.h" +#include "e-calendar-marshal.h" #include "cal-search-bar.h" #include "calendar-config.h" #include "calendar-component.h" @@ -92,6 +93,8 @@ static void backend_error_cb (ECal *client, const char *message, gpointer data); /* Signal IDs */ enum { SELECTION_CHANGED, + SOURCE_ADDED, + SOURCE_REMOVED, LAST_SIGNAL }; @@ -383,9 +386,33 @@ e_tasks_class_init (ETasksClass *class) GTK_TYPE_NONE, 1, GTK_TYPE_INT); + e_tasks_signals[SOURCE_ADDED] = + g_signal_new ("source_added", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (ETasksClass, source_added), + NULL, NULL, + e_calendar_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + G_TYPE_OBJECT); + + e_tasks_signals[SOURCE_REMOVED] = + g_signal_new ("source_removed", + G_TYPE_FROM_CLASS (object_class), + G_SIGNAL_RUN_FIRST, + G_STRUCT_OFFSET (ETasksClass, source_removed), + NULL, NULL, + e_calendar_marshal_VOID__OBJECT, + G_TYPE_NONE, + 1, + G_TYPE_OBJECT); + object_class->destroy = e_tasks_destroy; class->selection_changed = NULL; + class->source_added = NULL; + class->source_removed = NULL; } @@ -534,16 +561,23 @@ backend_died_cb (ECal *client, gpointer data) { ETasks *tasks; ETasksPrivate *priv; + ESource *source; char *message; GtkWidget *dialog; - + tasks = E_TASKS (data); priv = tasks->priv; - /* FIXME: this doesn't remove the task list from the list or anything */ - message = g_strdup_printf (_("The task backend for\n%s\n has crashed."), e_cal_get_uri (client)); + source = g_object_ref (e_cal_get_source (client)); + + priv->clients_list = g_list_remove (priv->clients_list, client); + g_hash_table_remove (priv->clients, e_cal_get_uri (client)); + + gtk_signal_emit (GTK_OBJECT (tasks), e_tasks_signals[SOURCE_REMOVED], source); + e_calendar_table_set_status_message (E_CALENDAR_TABLE (e_tasks_get_calendar_table (tasks)), NULL); + message = g_strdup_printf (_("The task backend for '%s' has crashed."), e_source_peek_name (source)); dialog = gtk_message_dialog_new (GTK_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (tasks))), 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, message); @@ -551,13 +585,7 @@ backend_died_cb (ECal *client, gpointer data) gtk_widget_destroy (dialog); g_free (message); - e_source_selector_unselect_source ( - tasks_component_peek_source_selector (tasks_component_peek ()), - e_cal_get_source (client)); - - g_hash_table_remove (priv->clients, e_cal_get_uri (client)); - priv->clients_list = g_list_remove (priv->clients_list, client); - g_object_unref (client); + g_object_unref (source); } void @@ -621,6 +649,8 @@ e_tasks_add_todo_source (ETasks *tasks, ESource *source) return TRUE; } + /* FIXME Loading should be async */ + /* FIXME With no event handling here the status message never actually changes */ set_status_message (tasks, _("Opening tasks at %s"), str_uri); client = auth_new_cal_from_source (source, E_CAL_SOURCE_TYPE_TODO); @@ -636,6 +666,8 @@ e_tasks_add_todo_source (ETasks *tasks, ESource *source) g_signal_connect (G_OBJECT (client), "categories_changed", G_CALLBACK (client_categories_changed_cb), tasks); g_signal_connect (G_OBJECT (client), "backend_died", G_CALLBACK (backend_died_cb), tasks); + gtk_signal_emit (GTK_OBJECT (tasks), e_tasks_signals[SOURCE_ADDED], source); + if (!e_cal_open (client, FALSE, &error)) { GtkWidget *dialog; @@ -653,6 +685,8 @@ e_tasks_add_todo_source (ETasks *tasks, ESource *source) /* Do this last because it unrefs the client */ g_hash_table_remove (priv->clients, str_uri); + gtk_signal_emit (GTK_OBJECT (tasks), e_tasks_signals[SOURCE_REMOVED], source); + gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); @@ -702,6 +736,8 @@ e_tasks_remove_todo_source (ETasks *tasks, ESource *source) g_hash_table_remove (priv->clients, str_uri); g_free (str_uri); + gtk_signal_emit (GTK_OBJECT (tasks), e_tasks_signals[SOURCE_REMOVED], source); + return TRUE; } |