[evolution/wip/gsettings] Port alarm-notify configuration to GSettings



commit 035eda3f14857100bbf53b70173442ed5b929b19
Author: Rodrigo Moya <rodrigo gnome-db org>
Date:   Thu Sep 15 11:24:25 2011 +0200

    Port alarm-notify configuration to GSettings

 calendar/gui/alarm-notify/config-data.c          |  111 +++++++++-------------
 data/evolution.convert                           |    6 +
 data/org.gnome.evolution.calendar.gschema.xml.in |   30 ++++++
 3 files changed, 80 insertions(+), 67 deletions(-)
---
diff --git a/calendar/gui/alarm-notify/config-data.c b/calendar/gui/alarm-notify/config-data.c
index d056131..aa87559 100644
--- a/calendar/gui/alarm-notify/config-data.c
+++ b/calendar/gui/alarm-notify/config-data.c
@@ -30,14 +30,11 @@
 #include <libedataserver/e-source-list.h>
 #include "config-data.h"
 
-#define KEY_LAST_NOTIFICATION_TIME \
-	"/apps/evolution/calendar/notify/last_notification_time"
-#define KEY_PROGRAMS "/apps/evolution/calendar/notify/programs"
-
 /* Whether we have initied ourselves by reading
  * the data from the configuration engine. */
 static gboolean inited = FALSE;
 static GConfClient *conf_client = NULL;
+static GSetting *calendar_settings = NULL;
 static ESourceList *calendar_source_list = NULL, *tasks_source_list = NULL;
 
 
@@ -71,6 +68,9 @@ do_cleanup (void)
 	g_object_unref (conf_client);
 	conf_client = NULL;
 
+	g_object_unref (calendar_settings);
+	calendar_settings = FALSE;
+
 	inited = FALSE;
 }
 
@@ -89,6 +89,8 @@ ensure_inited (void)
 		return;
 	}
 
+	calendar_settings = g_settings_new ("org.gnome.evolution.calendar");
+
 	g_atexit ((GVoidFunc) do_cleanup);
 
 	/* load the sources for calendars and tasks */
@@ -106,8 +108,10 @@ config_data_get_calendars (const gchar *key)
 	gboolean state;
 	GSList *gconf_list;
 
-	if (!inited)
+	if (!inited) {
 		conf_client = gconf_client_get_default ();
+		calendar_settings = g_settings_new ("org.gnome.evolution.calendar");
+	}
 
 	gconf_list = gconf_client_get_list (conf_client,
 					    key,
@@ -121,15 +125,11 @@ config_data_get_calendars (const gchar *key)
 		return cal_sources;
 	}
 
-	state = gconf_client_get_bool (conf_client,
-				      "/apps/evolution/calendar/notify/notify_with_tray",
-				      NULL);
+	state = g_settings_get_boolean (calendar_settings, "notify-with-tray", NULL);
 	if (!state) /* Should be old client */ {
 		GSList *source;
-		gconf_client_set_bool (conf_client,
-				      "/apps/evolution/calendar/notify/notify_with_tray",
-				      TRUE,
-				      NULL);
+
+		g_settings_set_boolean (calendar_settings, "notify-with-tray", TRUE, NULL);
 		source = gconf_client_get_list (conf_client,
 						"/apps/evolution/calendar/sources",
 						GCONF_VALUE_STRING,
@@ -202,17 +202,14 @@ icaltimezone *
 config_data_get_timezone (void)
 {
 	gchar *location;
-	const gchar *key;
 	icaltimezone *local_timezone;
 
 	ensure_inited ();
 
-	key = "/apps/evolution/calendar/display/use_system_timezone";
-	if (gconf_client_get_bool (conf_client, key, NULL))
+	if (g_settings_get_boolean (calendar_settings, "use-system-timezone"))
 		location = e_cal_util_get_system_timezone_location ();
 	else {
-		key = "/apps/evolution/calendar/display/timezone";
-		location = gconf_client_get_string (conf_client, key, NULL);
+		location = g_settings_get_string (calendar_settings, "timezone");
 	}
 
 	if (location && location[0])
@@ -231,10 +228,7 @@ config_data_get_24_hour_format (void)
 	ensure_inited ();
 
 	if (locale_supports_12_hour_format ()) {
-		const gchar *key;
-
-		key = "/apps/evolution/calendar/display/use_24hour_format";
-		return gconf_client_get_bool (conf_client, key, NULL);
+		return g_settings_get_boolean (calendar_client, "use-24hour-format");
 	}
 
 	return TRUE;
@@ -245,9 +239,7 @@ config_data_get_notify_with_tray (void)
 {
 	ensure_inited ();
 
-	return gconf_client_get_bool (conf_client,
-				      "/apps/evolution/calendar/notify/notify_with_tray",
-				      NULL);
+	return g_settings_get_boolean (calendar_client, "notify-with-tray");
 }
 
 /**
@@ -262,7 +254,6 @@ void
 config_data_set_last_notification_time (ECalClient *cal,
                                         time_t t)
 {
-	GConfClient *client;
 	time_t current_t, now = time (NULL);
 
 	g_return_if_fail (t != -1);
@@ -284,14 +275,11 @@ config_data_set_last_notification_time (ECalClient *cal,
 		}
 	}
 
-	if (!(client = config_data_get_conf_client ()))
-		return;
-
 	/* we only store the new notification time if it is bigger
 	 * than the already stored one */
-	current_t = gconf_client_get_int (client, KEY_LAST_NOTIFICATION_TIME, NULL);
+	current_t = g_settings_get_int (calendar_settings, "last-notification-time");
 	if (t > current_t || current_t > now)
-		gconf_client_set_int (client, KEY_LAST_NOTIFICATION_TIME, t, NULL);
+		g_settings_set_int (calendar_settings "last-notification-time", t);
 }
 
 /**
@@ -304,8 +292,7 @@ config_data_set_last_notification_time (ECalClient *cal,
 time_t
 config_data_get_last_notification_time (ECalClient *cal)
 {
-	GConfValue *value;
-	GConfClient *client;
+	time_t value, now;
 
 	if (cal) {
 		ESource *source = e_client_get_source (E_CLIENT (cal));
@@ -328,24 +315,13 @@ config_data_get_last_notification_time (ECalClient *cal)
 		}
 	}
 
-	if (!(client = config_data_get_conf_client ()))
-		return -1;
-
-	value = gconf_client_get_without_default (
-		client, KEY_LAST_NOTIFICATION_TIME, NULL);
-	if (value) {
-		time_t val, now;
-
-		val = (time_t) gconf_value_get_int (value);
-		now = time (NULL);
-
-		if (val > now)
-			val = now;
+	value = g_settings_get_int (calendar_settings, "last-notification-time");
+	now = time (NULL);
 
-		return val;
-	}
+	if (val > now)
+		val = now;
 
-	return -1;
+	return val;
 }
 
 /**
@@ -357,17 +333,19 @@ config_data_get_last_notification_time (ECalClient *cal)
 void
 config_data_save_blessed_program (const gchar *program)
 {
-	GConfClient *client;
-	GSList *l;
+	gchar **list;
+	gint i;
+	GArray *array = g_array_new (TRUE, FALSE, sizeof (gchar *));
 
-	if (!(client = config_data_get_conf_client ()))
-		return;
+	list = g_settings_get_strv (calendar_settings, "notify-programs");
+	for (i = 0; i < g_strv_length (list); i++)
+		g_array_append_val (array, list[i]);
 
-	l = gconf_client_get_list (client, KEY_PROGRAMS, GCONF_VALUE_STRING, NULL);
-	l = g_slist_append (l, g_strdup (program));
-	gconf_client_set_list (client, KEY_PROGRAMS, GCONF_VALUE_STRING, l, NULL);
-	g_slist_foreach (l, (GFunc) g_free, NULL);
-	g_slist_free (l);
+	g_array_append_val (array, program);
+	g_settings_set_strv (calendar_settings, "notify-programs", (const gchar *const *) array->data);
+
+	g_strfreev (list);
+	g_array_free (array, TRUE);
 }
 
 /**
@@ -381,23 +359,22 @@ config_data_save_blessed_program (const gchar *program)
 gboolean
 config_data_is_blessed_program (const gchar *program)
 {
-	GConfClient *client;
-	GSList *l, *n;
+	gchar **list;
+	gint i = 0;
 	gboolean found = FALSE;
 
-	if (!(client = config_data_get_conf_client ()))
+	list = g_settings_get_strv (calendar_settings, "notify-programs");
+	if (!list)
 		return FALSE;
 
-	l = gconf_client_get_list (client, KEY_PROGRAMS, GCONF_VALUE_STRING, NULL);
-	while (l) {
-		n = l->next;
+	while (list[i] != NULL) {
 		if (!found)
-			found = strcmp ((gchar *) l->data, program) == 0;
-		g_free (l->data);
-		g_slist_free_1 (l);
-		l = n;
+			found = strcmp ((gchar *) list[i], program) == 0;
+		i++;
 	}
 
+	g_strfreev (list);
+
 	return found;
 }
 
diff --git a/data/evolution.convert b/data/evolution.convert
index ad6c946..45954be 100644
--- a/data/evolution.convert
+++ b/data/evolution.convert
@@ -38,6 +38,12 @@ editor-show-rsvp = /apps/evolution/calendar/display/show_rsvp
 editor-show-status = /apps/evolution/calendar/display/show_status
 editor-show-timezone = /apps/evolution/calendar/display/show_timezone
 editor-show-type = /apps/evolution/calendar/display/show_type
+last-notification-time = /apps/evolution/calendar/notify/last_notification_time
+notify-programs = /apps/evolution/calendar/notify/programs
+notify-with-tray = /apps/evolution/calendar/notify/notify_with_tray
+timezone = /apps/evolution/calendar/display/timezone
+use-24hour-format = /apps/evolution/calendar/display/use_24hour_format
+use-system-timezone = /apps/evolution/calendar/display/use_system_timezone
 
 [org.gnome.evolution.mail]
 check-if-default-mailer = /apps/evolution/mail/prompts/checkdefault
diff --git a/data/org.gnome.evolution.calendar.gschema.xml.in b/data/org.gnome.evolution.calendar.gschema.xml.in
index c10a100..9c0050f 100644
--- a/data/org.gnome.evolution.calendar.gschema.xml.in
+++ b/data/org.gnome.evolution.calendar.gschema.xml.in
@@ -31,4 +31,34 @@
     <_summary>Show type field in the event/task/meeting editor</_summary>
     <_description>Whether to show type field in the event/task/meeting editor</_description>
   </key>
+  <key name="last-notification-time" type="i">
+    <default>1</default>
+    <_summary>Last reminder time</_summary>
+    <_description>Time the last reminder ran, in time_t</_description>
+  </key>
+  <key name="notify-programs" type="as">
+    <default>[]</default>
+    <_summary>Reminder programs</_summary>
+    <_description>Programs that are allowed to be run by reminders</_description>
+  </key>
+  <key name="notify-with-tray" type="b">
+    <default>false</default>
+    <_summary>Show display reminders in notification tray</_summary>
+    <_description>Whether or not to use the notification tray for display reminders</_description>
+  </key>
+  <key name="timezone" type="s">
+    <default>'UTC'</default>
+    <_summary>Timezone</_summary>
+    <_description>The default timezone to use for dates and times in the calendar, as an untranslated Olsen timezone database location like "America/New York"</_description>
+  </key>
+  <key name="use-24hour-format" type="b">
+    <default>false</default>
+    <_summary>Twenty four hour time format</_summary>
+    <_description>Whether to show times in twenty four hour format instead of using am/pm</_description>
+  </key>
+  <key name="use-system-timezone" type="b">
+    <default>true</default>
+    <_summary>Use system timezone</_summary>
+    <_description>Use the system timezone instead of the timezone selected in Evolution</_description>
+  </key>
 </schemalist>



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