[evolution/wip/gsettings: 24/25] Last bits of calendar-config migrated to GSettings



commit 90ffcfd8ce2aeb5159d5c6f8a44601b89ea0ba05
Author: Rodrigo Moya <rodrigo gnome-db org>
Date:   Mon Oct 10 17:40:06 2011 +0200

    Last bits of calendar-config migrated to GSettings

 calendar/gui/calendar-config.c      |   29 +++++++++-------------
 calendar/gui/calendar-config.h      |   13 +++++++---
 calendar/gui/e-calendar-view.c      |    2 +-
 calendar/gui/e-day-view-time-item.c |   21 ++++++----------
 calendar/gui/e-week-view.c          |   43 +++++++++++++++-------------------
 calendar/gui/gnome-cal.c            |    6 -----
 6 files changed, 49 insertions(+), 65 deletions(-)
---
diff --git a/calendar/gui/calendar-config.c b/calendar/gui/calendar-config.c
index 9623dcf..85c2e3e 100644
--- a/calendar/gui/calendar-config.c
+++ b/calendar/gui/calendar-config.c
@@ -61,11 +61,12 @@ calendar_config_init (void)
 }
 
 void
-calendar_config_remove_notification (guint id)
+calendar_config_remove_notification (CalendarConfigChangedFunc func,
+				     gpointer data)
 {
 	calendar_config_init ();
 
-	gconf_client_notify_remove (config, id);
+	g_signal_handlers_disconnect_by_func (G_OBJECT (config), G_CALLBACK (func), data);
 }
 
 /* Returns TRUE if the locale has 'am' and 'pm' strings defined, in which
@@ -155,17 +156,14 @@ calendar_config_get_month_scroll_by_week (void)
 	return g_settings_get_boolean (config, "month-scroll-by-week");
 }
 
-guint
-calendar_config_add_notification_month_scroll_by_week (GConfClientNotifyFunc func,
+void
+calendar_config_add_notification_month_scroll_by_week (CalendarConfigChangedFunc func,
                                                        gpointer data)
 {
-	guint id;
-
 	calendar_config_init ();
 
-	id = gconf_client_notify_add (config, CALENDAR_CONFIG_MONTH_SCROLL_BY_WEEK, func, data, NULL, NULL);
-
-	return id;
+	g_signal_connect (G_OBJECT (config), "changed::month-scroll-by-week",
+			  G_CALLBACK (func), data);
 }
 
 /***************************************/
@@ -371,7 +369,7 @@ calendar_config_set_day_second_zone (const gchar *location)
 		for (i = 0, l = lst; i < max_zones && l != NULL; i++, l = l->next)
 			g_ptr_array_add (array, l->data);
 
-		g_settings_set_strv (config, "day-second-zones", array->pdata);
+		g_settings_set_strv (config, "day-second-zones", (const gchar * const *) array->pdata);
 
 		calendar_config_free_day_second_zones (lst);
 		g_ptr_array_free (array, FALSE);
@@ -426,15 +424,12 @@ calendar_config_select_day_second_zone (void)
 	g_object_unref (tzdlg);
 }
 
-guint
-calendar_config_add_notification_day_second_zone (GConfClientNotifyFunc func,
+void
+calendar_config_add_notification_day_second_zone (CalendarConfigChangedFunc func,
                                                   gpointer data)
 {
-	guint id;
-
 	calendar_config_init ();
 
-	id = gconf_client_notify_add (config, CALENDAR_CONFIG_DAY_SECOND_ZONE, func, data, NULL, NULL);
-
-	return id;
+	g_signal_connect (G_OBJECT (config), "changed::day-second-zone",
+			  G_CALLBACK (func), data);
 }
diff --git a/calendar/gui/calendar-config.h b/calendar/gui/calendar-config.h
index 0be1e20..483fbbd 100644
--- a/calendar/gui/calendar-config.h
+++ b/calendar/gui/calendar-config.h
@@ -28,9 +28,9 @@
 #ifndef _CALENDAR_CONFIG_H_
 #define _CALENDAR_CONFIG_H_
 
+#include <gio/gio.h>
 #include <gdk/gdk.h>
 #include <libecal/e-cal-client.h>
-#include <gconf/gconf-client.h>
 #include <e-util/e-util-enums.h>
 
 /* These are used to get/set the working days in the week. The bit-flags are
@@ -47,7 +47,11 @@ typedef enum
 	CAL_SATURDAY	= 1 << 6
 } CalWeekdays;
 
-void calendar_config_remove_notification (guint id);
+typedef void (* CalendarConfigChangedFunc) (GSettings *settings,
+					    const gchar *key,
+					    gpointer user_data);
+
+void calendar_config_remove_notification (CalendarConfigChangedFunc func, gpointer data);
 
 /*
  * Calendar Settings.
@@ -79,10 +83,11 @@ void    calendar_config_free_day_second_zones (GSList *zones);
 void    calendar_config_set_day_second_zone (const gchar *location);
 gchar *  calendar_config_get_day_second_zone (void);
 void    calendar_config_select_day_second_zone (void);
-guint   calendar_config_add_notification_day_second_zone (GConfClientNotifyFunc func, gpointer data);
+
+void   calendar_config_add_notification_day_second_zone (CalendarConfigChangedFunc func, gpointer data);
 
 /* Scroll in a month view by a week, not by a month */
 gboolean calendar_config_get_month_scroll_by_week (void);
-guint calendar_config_add_notification_month_scroll_by_week (GConfClientNotifyFunc func, gpointer data);
+void     calendar_config_add_notification_month_scroll_by_week (CalendarConfigChangedFunc func, gpointer data);
 
 #endif /* _CALENDAR_CONFIG_H_ */
diff --git a/calendar/gui/e-calendar-view.c b/calendar/gui/e-calendar-view.c
index 84046e7..109ce45 100644
--- a/calendar/gui/e-calendar-view.c
+++ b/calendar/gui/e-calendar-view.c
@@ -1571,7 +1571,7 @@ e_calendar_view_new_appointment_full (ECalendarView *cal_view,
 		gint time_div = e_calendar_view_get_time_divisions (cal_view);
 		gint hours, mins;
 
-		if (!time_div) /* Possible if your gconf values aren't so nice */
+		if (!time_div) /* Possible if your settings values aren't so nice */
 			time_div = 30;
 
 		if (time_day_begin (now) == time_day_begin (dtstart)) {
diff --git a/calendar/gui/e-day-view-time-item.c b/calendar/gui/e-day-view-time-item.c
index 928a91b..c901b82 100644
--- a/calendar/gui/e-day-view-time-item.c
+++ b/calendar/gui/e-day-view-time-item.c
@@ -65,7 +65,6 @@ struct _EDayViewTimeItemPrivate {
 	gboolean dragging_selection;
 
 	/* The second timezone if shown, or else NULL. */
-	guint second_zone_changed_id;
 	icaltimezone *second_zone;
 };
 
@@ -109,9 +108,8 @@ static gint	e_day_view_time_item_convert_position_to_row
 						(EDayViewTimeItem *time_item,
 						 gint y);
 
-static void	edvti_second_zone_changed_cb	(GConfClient *client,
-						 guint cnxn_id,
-						 GConfEntry *entry,
+static void	edvti_second_zone_changed_cb	(GSettings *settings,
+						 const gchar *key,
 						 gpointer user_data);
 
 enum {
@@ -178,9 +176,7 @@ day_view_time_item_finalize (GObject *object)
 
 	time_item = E_DAY_VIEW_TIME_ITEM (object);
 
-	if (time_item->priv->second_zone_changed_id)
-		calendar_config_remove_notification (time_item->priv->second_zone_changed_id);
-	time_item->priv->second_zone_changed_id = 0;
+	calendar_config_remove_notification ((CalendarConfigChangedFunc) edvti_second_zone_changed_cb, time_item);
 
 	/* Chain up to parent's dispose() method. */
 	G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -238,9 +234,9 @@ day_view_time_item_init (EDayViewTimeItem *time_item)
 		g_free (last);
 	}
 
-	time_item->priv->second_zone_changed_id =
-		calendar_config_add_notification_day_second_zone (
-		edvti_second_zone_changed_cb, time_item);
+	calendar_config_add_notification_day_second_zone (
+		(CalendarConfigChangedFunc) edvti_second_zone_changed_cb,
+		time_item);
 }
 
 GType
@@ -732,9 +728,8 @@ e_day_view_time_item_event (GnomeCanvasItem *item,
 }
 
 static void
-edvti_second_zone_changed_cb (GConfClient *client,
-                              guint cnxn_id,
-                              GConfEntry *entry,
+edvti_second_zone_changed_cb (GSettings *settings,
+			      const gchar *key,
                               gpointer user_data)
 {
 	EDayViewTimeItem *time_item = user_data;
diff --git a/calendar/gui/e-week-view.c b/calendar/gui/e-week-view.c
index 036b619..4b2eeb0 100644
--- a/calendar/gui/e-week-view.c
+++ b/calendar/gui/e-week-view.c
@@ -638,6 +638,22 @@ week_view_cursor_key_right (EWeekView *week_view)
 }
 
 static void
+month_scrol_by_week_changed_cb (GSettings *settings,
+                                const gchar *key,
+                                gpointer user_data)
+{
+	EWeekView *week_view = user_data;
+
+	g_return_if_fail (week_view != NULL);
+	g_return_if_fail (E_IS_WEEK_VIEW (week_view));
+
+	if (week_view->multi_week_view && week_view->month_scroll_by_week != calendar_config_get_month_scroll_by_week ()) {
+		week_view->multi_week_view = FALSE;
+		e_week_view_set_multi_week_view	(week_view, TRUE);
+	}
+}
+
+static void
 e_week_view_class_init (EWeekViewClass *class)
 {
 	GObjectClass *object_class;
@@ -895,10 +911,7 @@ e_week_view_dispose (GObject *object)
 		week_view->resize_width_cursor = NULL;
 	}
 
-	if (week_view->scroll_by_week_notif_id) {
-		calendar_config_remove_notification (week_view->scroll_by_week_notif_id);
-		week_view->scroll_by_week_notif_id = 0;
-	}
+	calendar_config_remove_notification (month_scrol_by_week_changed_cb, week_view);
 
 	/* Chain up to parent's dispose() method. */
 	G_OBJECT_CLASS (e_week_view_parent_class)->dispose (object);
@@ -1875,23 +1888,6 @@ e_week_view_recalc_day_starts (EWeekView *week_view,
 	}
 }
 
-static void
-month_scrol_by_week_changed_cb (GConfClient *client,
-                                guint cnxn_id,
-                                GConfEntry *entry,
-                                gpointer user_data)
-{
-	EWeekView *week_view = user_data;
-
-	g_return_if_fail (week_view != NULL);
-	g_return_if_fail (E_IS_WEEK_VIEW (week_view));
-
-	if (week_view->multi_week_view && week_view->month_scroll_by_week != calendar_config_get_month_scroll_by_week ()) {
-		week_view->multi_week_view = FALSE;
-		e_week_view_set_multi_week_view	(week_view, TRUE);
-	}
-}
-
 gboolean
 e_week_view_get_multi_week_view (EWeekView *week_view)
 {
@@ -1919,8 +1915,7 @@ e_week_view_set_multi_week_view (EWeekView *week_view,
 		gtk_widget_show (week_view->titles_canvas);
 		week_view->month_scroll_by_week = calendar_config_get_month_scroll_by_week ();
 
-		if (!week_view->scroll_by_week_notif_id)
-			week_view->scroll_by_week_notif_id = calendar_config_add_notification_month_scroll_by_week (month_scrol_by_week_changed_cb, week_view);
+		calendar_config_add_notification_month_scroll_by_week (month_scrol_by_week_changed_cb, week_view);
 
 		if (week_view->month_scroll_by_week) {
 			page_increment = 1;
@@ -1934,7 +1929,7 @@ e_week_view_set_multi_week_view (EWeekView *week_view,
 		page_increment = page_size = 1;
 
 		if (week_view->scroll_by_week_notif_id) {
-			calendar_config_remove_notification (week_view->scroll_by_week_notif_id);
+			calendar_config_remove_notification (month_scrol_by_week_changed_cb, week_view);
 			week_view->scroll_by_week_notif_id = 0;
 		}
 	}
diff --git a/calendar/gui/gnome-cal.c b/calendar/gui/gnome-cal.c
index 66c90fb..6fd5153 100644
--- a/calendar/gui/gnome-cal.c
+++ b/calendar/gui/gnome-cal.c
@@ -103,7 +103,6 @@ struct _GnomeCalendarPrivate {
 	 * was selected in the date navigator to show the view. */
 	ECalendarView    *views[GNOME_CAL_LAST_VIEW];
 	GnomeCalendarViewType current_view_type;
-	GList *notifications;
 
 	gboolean range_selected;
 
@@ -1508,11 +1507,6 @@ gnome_calendar_do_dispose (GObject *object)
 		}
 	}
 
-	for (l = priv->notifications; l; l = l->next)
-		calendar_config_remove_notification (GPOINTER_TO_UINT (l->data));
-	g_list_free (priv->notifications);
-	priv->notifications = NULL;
-
 	free_dn_queries (gcal);
 
 	if (priv->sexp) {



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]