aboutsummaryrefslogtreecommitdiffstats
path: root/calendar
diff options
context:
space:
mode:
Diffstat (limited to 'calendar')
-rw-r--r--calendar/ChangeLog13
-rw-r--r--calendar/gui/e-memos.c40
-rw-r--r--calendar/gui/e-tasks.c21
-rw-r--r--calendar/gui/gnome-cal.c19
4 files changed, 27 insertions, 66 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog
index fb81e8c1a8..c43975dcbe 100644
--- a/calendar/ChangeLog
+++ b/calendar/ChangeLog
@@ -1,3 +1,16 @@
+2008-04-30 Milan Crha <mcrha@redhat.com>
+
+ ** Fix for bug #316390
+
+ * calendar/gui/e-memos.c: (struct _EMemosPrivate), (categories_changed_cb),
+ (setup_widgets), (e_memos_init), (e_memos_destroy):
+ * calendar/gui/gnome-cal.c: (struct _GnomeCalendarPrivate), (setup_widgets),
+ (categories_changed_cb), (gnome_calendar_init),
+ (gnome_calendar_destroy):
+ * calendar/gui/e-tasks.c: (struct _ETasksPrivate), (categories_changed_cb),
+ (setup_widgets), (e_tasks_init), (e_tasks_destroy):
+ Listen for changes in categories setup and propagate them to UI.
+
2008-04-30 Srinivasa Ragavan <sragavan@novell.com>
** Fix for bnc #363908
diff --git a/calendar/gui/e-memos.c b/calendar/gui/e-memos.c
index 08ce5f84c8..019cf2ddaa 100644
--- a/calendar/gui/e-memos.c
+++ b/calendar/gui/e-memos.c
@@ -38,7 +38,6 @@
#include "e-util/e-error.h"
#include "e-util/e-categories-config.h"
-#include "e-util/e-config-listener.h"
#include "e-util/e-util-private.h"
#include "shell/e-user-creatable-items-handler.h"
#include <libecal/e-cal-time-util.h>
@@ -68,8 +67,6 @@ struct _EMemosPrivate {
ECalView *query;
- EConfigListener *config_listener;
-
/* The EMemoTable showing the memos. */
GtkWidget *memos_view;
EMemoTableConfig *memos_view_config;
@@ -97,7 +94,7 @@ static void setup_widgets (EMemos *memos);
static void e_memos_destroy (GtkObject *object);
static void update_view (EMemos *memos);
-static void config_categories_changed_cb (EConfigListener *config_listener, const char *key, gpointer user_data);
+static void categories_changed_cb (gpointer object, gpointer user_data);
static void backend_error_cb (ECal *client, const char *message, gpointer data);
/* Signal IDs */
@@ -499,8 +496,7 @@ setup_widgets (EMemos *memos)
g_signal_connect (priv->search_bar, "category_changed",
G_CALLBACK (search_bar_category_changed_cb), memos);
- /* TODO Why doesn't this work?? */
- config_categories_changed_cb (priv->config_listener, "/apps/evolution/general/category_master_list", memos);
+ categories_changed_cb (NULL, memos);
gtk_table_attach (GTK_TABLE (memos), priv->search_bar, 0, 1, 0, 1,
GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0, 0);
@@ -601,7 +597,7 @@ e_memos_class_init (EMemosClass *klass)
static void
-config_categories_changed_cb (EConfigListener *config_listener, const char *key, gpointer user_data)
+categories_changed_cb (gpointer object, gpointer user_data)
{
GList *cat_list;
GPtrArray *cat_array;
@@ -635,8 +631,7 @@ e_memos_init (EMemos *memos)
setup_config (memos);
setup_widgets (memos);
- priv->config_listener = e_config_listener_new ();
- g_signal_connect (priv->config_listener, "key_changed", G_CALLBACK (config_categories_changed_cb), memos);
+ e_categories_register_change_listener (G_CALLBACK (categories_changed_cb), memos);
priv->clients = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
priv->query = NULL;
@@ -648,23 +643,6 @@ e_memos_init (EMemos *memos)
update_view (memos);
}
-/* Callback used when the set of categories changes in the calendar client */
-/* TODO this was actually taken out of tasks in 2.3.x
- * config_categories doesn't work, but this may - trying with memos*/
-/*
-static void
-client_categories_changed_cb (ECal *client, GPtrArray *categories, gpointer data)
-{
- EMemos *memos;
- EMemosPrivate *priv;
-
- memos = E_MEMOS (data);
- priv = memos->priv;
-
- cal_search_bar_set_categories (CAL_SEARCH_BAR (priv->search_bar), categories);
-}
-*/
-
GtkWidget *
e_memos_new (void)
{
@@ -702,14 +680,7 @@ e_memos_destroy (GtkObject *object)
if (priv) {
GList *l;
- /* unset the config listener */
- if (priv->config_listener) {
- g_signal_handlers_disconnect_matched (priv->config_listener,
- G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, memos);
- g_object_unref (priv->config_listener);
- priv->config_listener = NULL;
- }
+ e_categories_unregister_change_listener (G_CALLBACK (categories_changed_cb), memos);
/* disconnect from signals on all the clients */
for (l = priv->clients_list; l != NULL; l = l->next) {
@@ -979,7 +950,6 @@ e_memos_add_memo_source (EMemos *memos, ESource *source)
}
g_signal_connect (G_OBJECT (client), "backend_error", G_CALLBACK (backend_error_cb), memos);
-/* g_signal_connect (G_OBJECT (client), "categories_changed", G_CALLBACK (client_categories_changed_cb), memos); */
g_signal_connect (G_OBJECT (client), "backend_died", G_CALLBACK (backend_died_cb), memos);
/* add the client to internal structure */
diff --git a/calendar/gui/e-tasks.c b/calendar/gui/e-tasks.c
index 7e55b99d20..eae255bd88 100644
--- a/calendar/gui/e-tasks.c
+++ b/calendar/gui/e-tasks.c
@@ -36,7 +36,6 @@
#include "e-util/e-error.h"
#include "e-util/e-categories-config.h"
-#include "e-util/e-config-listener.h"
#include "e-util/e-util-private.h"
#include "shell/e-user-creatable-items-handler.h"
#include <libedataserver/e-url.h>
@@ -69,8 +68,6 @@ struct _ETasksPrivate {
ECalView *query;
- EConfigListener *config_listener;
-
/* The ECalendarTable showing the tasks. */
GtkWidget *tasks_view;
ECalendarTableConfig *tasks_view_config;
@@ -102,7 +99,7 @@ static void setup_widgets (ETasks *tasks);
static void e_tasks_destroy (GtkObject *object);
static void update_view (ETasks *tasks);
-static void config_categories_changed_cb (EConfigListener *config_listener, const char *key, gpointer user_data);
+static void categories_changed_cb (gpointer object, gpointer user_data);
static void backend_error_cb (ECal *client, const char *message, gpointer data);
/* Signal IDs */
@@ -620,7 +617,7 @@ setup_widgets (ETasks *tasks)
G_CALLBACK (search_bar_sexp_changed_cb), tasks);
g_signal_connect (priv->search_bar, "category_changed",
G_CALLBACK (search_bar_category_changed_cb), tasks);
- config_categories_changed_cb (priv->config_listener, "/apps/evolution/general/category_master_list", tasks);
+ categories_changed_cb (NULL, tasks);
gtk_table_attach (GTK_TABLE (tasks), priv->search_bar, 0, 1, 0, 1,
GTK_EXPAND | GTK_FILL | GTK_SHRINK, 0, 0, 0);
@@ -744,7 +741,7 @@ e_tasks_class_init (ETasksClass *class)
static void
-config_categories_changed_cb (EConfigListener *config_listener, const char *key, gpointer user_data)
+categories_changed_cb (gpointer object, gpointer user_data)
{
GList *cat_list;
GPtrArray *cat_array;
@@ -775,8 +772,7 @@ e_tasks_init (ETasks *tasks)
priv = g_new0 (ETasksPrivate, 1);
tasks->priv = priv;
- priv->config_listener = e_config_listener_new ();
- g_signal_connect (priv->config_listener, "key_changed", G_CALLBACK (config_categories_changed_cb), tasks);
+ e_categories_register_change_listener (G_CALLBACK (categories_changed_cb), tasks);
setup_config (tasks);
setup_widgets (tasks);
@@ -829,14 +825,7 @@ e_tasks_destroy (GtkObject *object)
if (priv) {
GList *l;
- /* unset the config listener */
- if (priv->config_listener) {
- g_signal_handlers_disconnect_matched (priv->config_listener,
- G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, tasks);
- g_object_unref (priv->config_listener);
- priv->config_listener = NULL;
- }
+ e_categories_unregister_change_listener (G_CALLBACK (categories_changed_cb), tasks);
/* disconnect from signals on all the clients */
for (l = priv->clients_list; l != NULL; l = l->next) {
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 5108164c98..dfa066d0ba 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -45,7 +45,6 @@
#include <libedataserver/e-url.h>
#include <libedataserverui/e-passwords.h>
-#include "e-util/e-config-listener.h"
#include "shell/e-user-creatable-items-handler.h"
#include <libecal/e-cal-time-util.h>
#include <widgets/menus/gal-view-factory-etable.h>
@@ -103,8 +102,6 @@ struct _GnomeCalendarPrivate {
GList *clients_list[E_CAL_SOURCE_TYPE_LAST];
ECal *default_client[E_CAL_SOURCE_TYPE_LAST];
- EConfigListener *config_listener;
-
/*
* Fields for the calendar view
*/
@@ -1440,7 +1437,7 @@ month_view_adjustment_changed_cb (GtkAdjustment *adjustment, GnomeCalendar *gcal
}
static void
-config_categories_changed_cb (EConfigListener *config_listener, const char *key, gpointer user_data)
+categories_changed_cb (gpointer object, gpointer user_data)
{
GList *cat_list;
GPtrArray *cat_array;
@@ -1515,7 +1512,7 @@ setup_widgets (GnomeCalendar *gcal)
G_CALLBACK (search_bar_sexp_changed_cb), gcal);
g_signal_connect (priv->search_bar, "category_changed",
G_CALLBACK (search_bar_category_changed_cb), gcal);
- config_categories_changed_cb (priv->config_listener, "/apps/evolution/general/category_master_list", gcal);
+ categories_changed_cb (NULL, gcal);
gtk_widget_show (priv->search_bar);
gtk_box_pack_start (GTK_BOX (gcal), priv->search_bar, FALSE, FALSE, 6);
@@ -1751,8 +1748,7 @@ gnome_calendar_init (GnomeCalendar *gcal)
for (i = 0; i < E_CAL_SOURCE_TYPE_LAST; i++)
priv->clients[i] = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
- priv->config_listener = e_config_listener_new ();
- g_signal_connect (priv->config_listener, "key_changed", G_CALLBACK (config_categories_changed_cb), gcal);
+ e_categories_register_change_listener (G_CALLBACK (categories_changed_cb), gcal);
priv->current_view_type = GNOME_CAL_DAY_VIEW;
priv->range_selected = FALSE;
@@ -1796,14 +1792,7 @@ gnome_calendar_destroy (GtkObject *object)
GList *l;
int i;
- /* unset the config listener */
- if (priv->config_listener) {
- g_signal_handlers_disconnect_matched (priv->config_listener,
- G_SIGNAL_MATCH_DATA,
- 0, 0, NULL, NULL, gcal);
- g_object_unref (priv->config_listener);
- priv->config_listener = NULL;
- }
+ e_categories_unregister_change_listener (G_CALLBACK (categories_changed_cb), gcal);
/* Clean up the clients */
for (i = 0; i < E_CAL_SOURCE_TYPE_LAST; i++) {