diff options
author | Matthew Barnes <mbarnes@src.gnome.org> | 2008-10-30 04:11:07 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2008-10-30 04:11:07 +0800 |
commit | d6b8b58bb45b16c1cb3a575c277ffdc77441e2df (patch) | |
tree | c80db345f4d3e05a1ee165b40c561f2649e574cb /calendar/modules/e-cal-shell-view-private.c | |
parent | 5e82bdba14fba81603f3879a46b46a011db7d2e4 (diff) | |
download | gsoc2013-evolution-d6b8b58bb45b16c1cb3a575c277ffdc77441e2df.tar.gz gsoc2013-evolution-d6b8b58bb45b16c1cb3a575c277ffdc77441e2df.tar.zst gsoc2013-evolution-d6b8b58bb45b16c1cb3a575c277ffdc77441e2df.zip |
Get the calendar's memopad and taskpad working.
What's interesting here is we're actually sharing the ECalModel across views.
Instead of having the Calendar view listen to GConf for changes to the Task
and Memo models, the Calendar view fetches the models directly from the Task
and Memo views -- starting the views if it has to, although the shell really
takes care of that -- and loads the models into its own taskpad and memopad.
We couldn't do that sort of thing before with Bonobo in the way.
Big chunks of redundant code should begin falling out shortly.
svn path=/branches/kill-bonobo/; revision=36696
Diffstat (limited to 'calendar/modules/e-cal-shell-view-private.c')
-rw-r--r-- | calendar/modules/e-cal-shell-view-private.c | 96 |
1 files changed, 74 insertions, 22 deletions
diff --git a/calendar/modules/e-cal-shell-view-private.c b/calendar/modules/e-cal-shell-view-private.c index 3b7bea2449..7f24eddd2e 100644 --- a/calendar/modules/e-cal-shell-view-private.c +++ b/calendar/modules/e-cal-shell-view-private.c @@ -25,6 +25,22 @@ #include "widgets/menus/gal-view-factory-etable.h" static void +cal_shell_view_process_completed_tasks (ECalShellView *cal_shell_view, + gboolean config_changed) +{ +#if 0 + ECalShellContent *cal_shell_content; + ECalendarTable *task_table; + + cal_shell_content = cal_shell_view->priv->cal_shell_content; + task_table = e_cal_shell_content_get_task_table (cal_shell_content); + + e_calendar_table_process_completed_tasks ( + task_table, clients, config_changed); +#endif +} + +static void cal_shell_view_update_timezone (ECalShellView *cal_shell_view) { #if 0 @@ -49,10 +65,21 @@ cal_shell_view_update_timezone (ECalShellView *cal_shell_view) } static void -cal_shell_view_timezone_changed_cb (GConfClient *client, - guint id, - GConfEntry *entry, - gpointer user_data) +cal_shell_view_config_hide_completed_tasks_changed_cb (GConfClient *client, + guint id, + GConfEntry *entry, + gpointer user_data) +{ + ECalShellView *cal_shell_view = user_data; + + /* FIXME */ +} + +static void +cal_shell_view_config_timezone_changed_cb (GConfClient *client, + guint id, + GConfEntry *entry, + gpointer user_data) { ECalShellView *cal_shell_view = user_data; @@ -197,6 +224,7 @@ e_cal_shell_view_private_init (ECalShellView *cal_shell_view, ECalShellViewPrivate *priv = cal_shell_view->priv; ESourceList *source_list; GObject *object; + guint notification_id; object = G_OBJECT (shell_view_class->type_module); source_list = g_object_get_data (object, "source-list"); @@ -227,7 +255,7 @@ e_cal_shell_view_private_constructed (ECalShellView *cal_shell_view) ECalendar *mini_calendar; EMemoTable *memo_table; ECalendarTable *task_table; - guint notification; + guint id; shell_view = E_SHELL_VIEW (cal_shell_view); shell_content = e_shell_view_get_shell_content (shell_view); @@ -249,10 +277,12 @@ e_cal_shell_view_private_constructed (ECalShellView *cal_shell_view) mini_calendar->calitem, (ECalendarItemGetTimeCallback) cal_shell_view_get_current_time, cal_shell_view, NULL); +#if 0 /* KILL-BONOBO */ g_signal_connect_swapped ( calendar, "dates-shown-changed", G_CALLBACK (e_cal_shell_view_update_sidebar), cal_shell_view); +#endif g_signal_connect_swapped ( mini_calendar, "scroll-event", @@ -291,13 +321,27 @@ e_cal_shell_view_private_constructed (ECalShellView *cal_shell_view) /* Listen for configuration changes. */ -#if 0 - notification = calendar_config_add_notification_timezone ( - cal_shell_view_timezone_changed_cb, cal_shell_view); + /* Timezone */ + id = calendar_config_add_notification_timezone ( + cal_shell_view_config_timezone_changed_cb, cal_shell_view); priv->notifications = g_list_prepend ( - priv->notifications, GUINT_TO_POINTER (notification)); + priv->notifications, GUINT_TO_POINTER (id)); cal_shell_view_update_timezone (cal_shell_view); -#endif + + /* Hide Completed Tasks (enable/units/value) */ + id = calendar_config_add_notification_hide_completed_tasks ( + cal_shell_view_config_hide_completed_tasks_changed_cb, + cal_shell_view); + priv->notifications = g_list_prepend ( + priv->notifications, GUINT_TO_POINTER (id)); + id = calendar_config_add_notification_hide_completed_tasks_units ( + cal_shell_view_config_hide_completed_tasks_changed_cb, + cal_shell_view); + priv->notifications = g_list_prepend ( + priv->notifications, GUINT_TO_POINTER (id)); + id = calendar_config_add_notification_hide_completed_tasks_value ( + cal_shell_view_config_hide_completed_tasks_changed_cb, + cal_shell_view); e_categories_register_change_listener ( G_CALLBACK (e_cal_shell_view_update_search_filter), @@ -312,6 +356,7 @@ void e_cal_shell_view_private_dispose (ECalShellView *cal_shell_view) { ECalShellViewPrivate *priv = cal_shell_view->priv; + GList *iter; DISPOSE (priv->source_list); @@ -321,26 +366,33 @@ e_cal_shell_view_private_dispose (ECalShellView *cal_shell_view) DISPOSE (priv->cal_shell_content); DISPOSE (priv->cal_shell_sidebar); - if (cal_shell_view->priv->calendar_activity != NULL) { + if (priv->calendar_activity != NULL) { /* XXX Activity is not cancellable. */ - e_activity_complete (cal_shell_view->priv->calendar_activity); - g_object_unref (cal_shell_view->priv->calendar_activity); - cal_shell_view->priv->calendar_activity = NULL; + e_activity_complete (priv->calendar_activity); + g_object_unref (priv->calendar_activity); + priv->calendar_activity = NULL; } - if (cal_shell_view->priv->memopad_activity != NULL) { + if (priv->memopad_activity != NULL) { /* XXX Activity is not cancellable. */ - e_activity_complete (cal_shell_view->priv->memopad_activity); - g_object_unref (cal_shell_view->priv->memopad_activity); - cal_shell_view->priv->memopad_activity = NULL; + e_activity_complete (priv->memopad_activity); + g_object_unref (priv->memopad_activity); + priv->memopad_activity = NULL; } - if (cal_shell_view->priv->taskpad_activity != NULL) { + if (priv->taskpad_activity != NULL) { /* XXX Activity is not cancellable. */ - e_activity_complete (cal_shell_view->priv->taskpad_activity); - g_object_unref (cal_shell_view->priv->taskpad_activity); - cal_shell_view->priv->taskpad_activity = NULL; + e_activity_complete (priv->taskpad_activity); + g_object_unref (priv->taskpad_activity); + priv->taskpad_activity = NULL; + } + + for (iter = priv->notifications; iter != NULL; iter = iter->next) { + guint notification_id = GPOINTER_TO_UINT (iter->data); + calendar_config_remove_notification (notification_id); } + g_list_free (priv->notifications); + priv->notifications = NULL; } void |