[evolution/wip/gsettings: 15/17] Port autocontacts plugin to GSettings
- From: Rodrigo Moya <rodrigo src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/gsettings: 15/17] Port autocontacts plugin to GSettings
- Date: Fri, 18 Nov 2011 09:04:55 +0000 (UTC)
commit 73656ae57ee8a42678e09b07c5d85fe45b9844a6
Author: Rodrigo Moya <rodrigo gnome-db org>
Date: Thu Nov 17 17:19:48 2011 +0100
Port autocontacts plugin to GSettings
data/Makefile.am | 1 +
data/evolution.convert | 9 ++
...e.evolution.eplugin.autocontacts.gschema.xml.in | 39 ++++++
plugins/bbdb/bbdb.c | 141 +++++++++-----------
plugins/bbdb/bbdb.h | 16 +-
plugins/bbdb/gaimbuddies.c | 29 ++---
6 files changed, 132 insertions(+), 103 deletions(-)
---
diff --git a/data/Makefile.am b/data/Makefile.am
index 4a4cc27..1aed9b3 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -18,6 +18,7 @@ gsettings_SCHEMAS = \
org.gnome.evolution.mail.gschema.xml \
org.gnome.evolution.shell.gschema.xml \
org.gnome.evolution.eplugin.attachment-reminder.gschema.xml \
+ org.gnome.evolution.eplugin.autocontacts.gschema.xml \
org.gnome.evolution.eplugin.bogo-junk.gschema.xml \
org.gnome.evolution.eplugin.email-custom-header.gschema.xml \
org.gnome.evolution.eplugin.external-editor.gschema.xml \
diff --git a/data/evolution.convert b/data/evolution.convert
index ecb5236..190b9ee 100644
--- a/data/evolution.convert
+++ b/data/evolution.convert
@@ -235,6 +235,15 @@ vfolder-editor-width = /apps/evolution/mail/vfolder_editor_width
[org.gnome.evolution.eplugin.attachment-reminder]
attachment-reminder-clues = /apps/evolution/mail/attachment_reminder_clues
+[org.gnome.evolution.eplugin.autocontacts]
+addressbook-source = /apps/evolution/autocontacts/addressbook_source
+auto-sync-gaim = /apps/evolution/autocontacts/auto_sync_gaim
+enable = /apps/evolution/autocontacts/enable_autocontacts
+gaim-addressbook-source = /apps/evolution/autocontacts/gaim_addressbook_source
+gaim-check-interval = /apps/evolution/autocontacts/gaim_check_interval
+gaim-last-sync-md5 = /apps/evolution/autocontacts/gaim_last_sync_md5
+gaim-last-sync-time = /apps/evolution/autocontacts/gaim_last_sync_time
+
[org.gnome.evolution.eplugin.bogo-junk]
utf8-for-spam-filter = /apps/evolution/mail/junk/bogofilter/unicode
diff --git a/data/org.gnome.evolution.eplugin.autocontacts.gschema.xml.in b/data/org.gnome.evolution.eplugin.autocontacts.gschema.xml.in
new file mode 100644
index 0000000..f1ff4a1
--- /dev/null
+++ b/data/org.gnome.evolution.eplugin.autocontacts.gschema.xml.in
@@ -0,0 +1,39 @@
+<schemalist>
+ <schema gettext-domain="evolution" id="org.gnome.evolution.eplugin.autocontacts" path="/org/gnome/evolution/eplugin/autocontacts/">
+ <key name="addressbook-source" type="s">
+ <default>''</default>
+ <_summary>Address book source</_summary>
+ <_description>Address book to use for storing automatically synced contacts</_description>
+ </key>
+ <key name="auto-sync-gaim" type="b">
+ <default>false</default>
+ <_summary>Auto sync GAIM contacts</_summary>
+ <_description>Whether GAIM contacts should be automaticall synced</_description>
+ </key>
+ <key name="enable" type="b">
+ <default>false</default>
+ <_summary>Enable autocontacts</_summary>
+ <_description>Whether contacts should be automatically added to the user's addressbook</_description>
+ </key>
+ <key name="gaim-addressbook-source" type="s">
+ <default>''</default>
+ <_summary>GAIM address book source</_summary>
+ <_description>Address book to use for storing automatically synced contacts from GAIM</_description>
+ </key>
+ <key name="gaim-check-interval" type="i">
+ <default>10</default>
+ <_summary>GAIM check interval</_summary>
+ <_description>Check interval for GAIM syncing of contacts</_description>
+ </key>
+ <key name="gaim-last-sync-md5" type="s">
+ <default>''</default>
+ <_summary>GAIM last sync MD5</_summary>
+ <_description>GAIM last sync MD5</_description>
+ </key>
+ <key name="gaim-last-sync-time" type="s">
+ <default>''</default>
+ <_summary>GAIM last sync time</_summary>
+ <_description>GAIM last sync time</_description>
+ </key>
+ </schema>
+</schemalist>
diff --git a/plugins/bbdb/bbdb.c b/plugins/bbdb/bbdb.c
index d24e754..f03c189 100644
--- a/plugins/bbdb/bbdb.c
+++ b/plugins/bbdb/bbdb.c
@@ -110,29 +110,15 @@ find_esource_by_uri (ESourceList *source_list,
static gint
get_check_interval (void)
{
- GConfClient *gconf;
- GConfValue *value;
+ GSettings *settings;
gint res = BBDB_BLIST_DEFAULT_CHECK_INTERVAL;
- gconf = gconf_client_get_default ();
- value = gconf_client_get (gconf, GCONF_KEY_GAIM_CHECK_INTERVAL, NULL);
-
- if (value) {
- if (value->type == GCONF_VALUE_INT) {
- gint interval = gconf_value_get_int (value);
-
- if (interval > 0)
- res = interval * 60;
- else
- res = interval;
- }
-
- gconf_value_free (value);
- }
+ settings = g_settings_new (CONF_SCHEMA);
+ res = g_settings_get_int (settings, CONF_KEY_GAIM_CHECK_INTERVAL);
- g_object_unref (gconf);
+ g_object_unref (settings);
- return res;
+ return res * 60;
}
gint
@@ -310,12 +296,12 @@ bbdb_handle_send (EPlugin *ep,
EMEventTargetComposer *target)
{
EComposerHeaderTable *table;
- GConfClient *gconf;
+ GSettings *settings;
gboolean enable;
- gconf = gconf_client_get_default ();
- enable = gconf_client_get_bool (gconf, GCONF_KEY_ENABLE, NULL);
- g_object_unref (gconf);
+ settings = g_settings_new (CONF_SCHEMA);
+ enable = g_settings_get_boolean (settings, CONF_KEY_ENABLE);
+ g_object_unref (settings);
if (!enable)
return;
@@ -423,28 +409,29 @@ bbdb_do_it (EBookClient *client,
EBookClient *
bbdb_create_book_client (gint type)
{
- GConfClient *gconf;
+ GSettings *settings;
gchar *uri;
EBookClient *client = NULL;
GError *error = NULL;
gboolean enable = TRUE;
- gconf = gconf_client_get_default ();
+
+ settings = g_settings_new (CONF_SCHEMA);
/* Check to see if we're supposed to be running */
if (type == AUTOMATIC_CONTACTS_ADDRESSBOOK)
- enable = gconf_client_get_bool (gconf, GCONF_KEY_ENABLE, NULL);
+ enable = g_settings_get_boolean (settings, CONF_KEY_ENABLE);
if (!enable) {
- g_object_unref (G_OBJECT (gconf));
+ g_object_unref (G_OBJECT (settings));
return NULL;
}
/* Open the appropriate addresbook. */
if (type == GAIM_ADDRESSBOOK)
- uri = gconf_client_get_string (gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL);
+ uri = g_settings_get_string (settings, CONF_KEY_WHICH_ADDRESSBOOK_GAIM);
else
- uri = gconf_client_get_string (gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL);
- g_object_unref (G_OBJECT (gconf));
+ uri = g_settings_get_string (settings, CONF_KEY_WHICH_ADDRESSBOOK);
+ g_object_unref (G_OBJECT (settings));
if (uri == NULL)
client = e_book_client_new_system (&error);
@@ -486,13 +473,13 @@ bbdb_open_book_client (EBookClient *client)
gboolean
bbdb_check_gaim_enabled (void)
{
- GConfClient *gconf;
- gboolean gaim_enabled;
+ GSettings *settings;
+ gboolean gaim_enabled;
- gconf = gconf_client_get_default ();
- gaim_enabled = gconf_client_get_bool (gconf, GCONF_KEY_ENABLE_GAIM, NULL);
+ settings = g_settings_new (CONF_SCHEMA);
+ gaim_enabled = g_settings_get_boolean (settings, CONF_KEY_ENABLE_GAIM);
- g_object_unref (G_OBJECT (gconf));
+ g_object_unref (G_OBJECT (settings));
return gaim_enabled;
}
@@ -518,36 +505,30 @@ enable_toggled_cb (GtkWidget *widget,
gboolean active;
ESource *selected_source;
gchar *addressbook;
+ GSettings *settings = g_settings_new (CONF_SCHEMA);
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- /* Save the new setting to gconf */
- gconf_client_set_bool (stuff->target->gconf, GCONF_KEY_ENABLE, active, NULL);
+ /* Save the new setting to GSettings */
+ g_settings_set_boolean (settings, CONF_KEY_ENABLE, active);
gtk_widget_set_sensitive (stuff->combo_box, active);
- addressbook = gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL);
+ addressbook = g_settings_get_string (settings, CONF_KEY_WHICH_ADDRESSBOOK);
if (active && !addressbook) {
const gchar *uri = NULL;
- GError *error = NULL;
selected_source = e_source_combo_box_get_active (
E_SOURCE_COMBO_BOX (stuff->combo_box));
if (selected_source != NULL)
uri = e_source_get_uri (selected_source);
- gconf_client_set_string (
- stuff->target->gconf,
- GCONF_KEY_WHICH_ADDRESSBOOK,
- uri ? uri : "", &error);
-
- if (error != NULL) {
- g_warning ("%s", error->message);
- g_error_free (error);
- }
+ g_settings_set_string (settings, CONF_KEY_WHICH_ADDRESSBOOK, uri ? uri : "");
}
+
g_free (addressbook);
+ g_object_unref (settings);
}
static void
@@ -558,21 +539,23 @@ enable_gaim_toggled_cb (GtkWidget *widget,
gboolean active;
ESource *selected_source;
gchar *addressbook_gaim;
+ GSettings *settings = g_settings_new (CONF_SCHEMA);
active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget));
- /* Save the new setting to gconf */
- gconf_client_set_bool (stuff->target->gconf, GCONF_KEY_ENABLE_GAIM, active, NULL);
+ /* Save the new setting to GSettings */
+ g_settings_set_boolean (settings, CONF_KEY_ENABLE_GAIM, active);
- addressbook_gaim = gconf_client_get_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL);
+ addressbook_gaim = g_settings_get_string (settings, CONF_KEY_WHICH_ADDRESSBOOK_GAIM);
gtk_widget_set_sensitive (stuff->gaim_combo_box, active);
if (active && !addressbook_gaim) {
selected_source = e_source_combo_box_get_active (
E_SOURCE_COMBO_BOX (stuff->gaim_combo_box));
- gconf_client_set_string (stuff->target->gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, e_source_get_uri (selected_source), NULL);
+ g_settings_set_string (settings, CONF_KEY_WHICH_ADDRESSBOOK_GAIM, e_source_get_uri (selected_source));
}
g_free (addressbook_gaim);
+ g_object_unref (settings);
}
static void
@@ -586,19 +569,16 @@ source_changed_cb (ESourceComboBox *source_combo_box,
struct bbdb_stuff *stuff)
{
ESource *source;
- GError *error = NULL;
+ GSettings *settings = g_settings_new (CONF_SCHEMA);
source = e_source_combo_box_get_active (source_combo_box);
- gconf_client_set_string (
- stuff->target->gconf,
- GCONF_KEY_WHICH_ADDRESSBOOK,
- source ? e_source_get_uri (source) : "", &error);
+ g_settings_set_string (
+ settings,
+ CONF_KEY_WHICH_ADDRESSBOOK,
+ source ? e_source_get_uri (source) : "");
- if (error != NULL) {
- g_warning ("%s", error->message);
- g_error_free (error);
- }
+ g_object_unref (settings);
}
static void
@@ -606,19 +586,16 @@ gaim_source_changed_cb (ESourceComboBox *source_combo_box,
struct bbdb_stuff *stuff)
{
ESource *source;
- GError *error = NULL;
+ GSettings *settings = g_settings_new (CONF_SCHEMA);
source = e_source_combo_box_get_active (source_combo_box);
- gconf_client_set_string (
- stuff->target->gconf,
- GCONF_KEY_WHICH_ADDRESSBOOK_GAIM,
- source ? e_source_get_uri (source) : "", &error);
+ g_settings_set_string (
+ settings,
+ CONF_KEY_WHICH_ADDRESSBOOK_GAIM,
+ source ? e_source_get_uri (source) : "");
- if (error != NULL) {
- g_warning ("%s", error->message);
- g_error_free (error);
- }
+ g_object_unref (settings);
}
static GtkWidget *
@@ -628,17 +605,18 @@ create_addressbook_combo_box (struct bbdb_stuff *stuff,
GtkWidget *combo_box;
ESourceList *source_list;
ESource *selected_source;
- gchar *selected_source_uri;
-
- GConfClient *gconf = stuff->target->gconf;
+ gchar *selected_source_uri;
+ GConfClient *gconf;
+ GSettings *settings = g_settings_new (CONF_SCHEMA);
+ gconf = gconf_client_get_default ();
source_list = e_source_list_new_for_gconf (gconf, "/apps/evolution/addressbook/sources");
combo_box = e_source_combo_box_new (source_list);
if (type == GAIM_ADDRESSBOOK)
- selected_source_uri = gconf_client_get_string (gconf, GCONF_KEY_WHICH_ADDRESSBOOK_GAIM, NULL);
+ selected_source_uri = g_settings_get_string (settings, CONF_KEY_WHICH_ADDRESSBOOK_GAIM);
else
- selected_source_uri = gconf_client_get_string (gconf, GCONF_KEY_WHICH_ADDRESSBOOK, NULL);
+ selected_source_uri = g_settings_get_string (settings, CONF_KEY_WHICH_ADDRESSBOOK);
selected_source = find_esource_by_uri (
source_list, selected_source_uri);
g_free (selected_source_uri);
@@ -651,6 +629,8 @@ create_addressbook_combo_box (struct bbdb_stuff *stuff,
stuff->source_list = source_list;
+ g_object_unref (settings);
+
return combo_box;
}
@@ -675,6 +655,7 @@ bbdb_page_factory (EPlugin *ep,
GtkWidget *gaim_label;
GtkWidget *button;
gchar *str;
+ GSettings *settings = g_settings_new (CONF_SCHEMA);
/* A structure to pass some stuff around */
stuff = g_new0 (struct bbdb_stuff, 1);
@@ -708,7 +689,7 @@ bbdb_page_factory (EPlugin *ep,
/* Enable BBDB checkbox */
check = gtk_check_button_new_with_mnemonic (_("Create _address book entries when sending mails"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE, NULL));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check), g_settings_get_boolean (settings, CONF_KEY_ENABLE));
g_signal_connect (GTK_TOGGLE_BUTTON (check), "toggled", G_CALLBACK (enable_toggled_cb), stuff);
gtk_box_pack_start (GTK_BOX (inner_vbox), check, FALSE, FALSE, 0);
stuff->check = check;
@@ -719,7 +700,7 @@ bbdb_page_factory (EPlugin *ep,
/* Source selection combo box */
combo_box = create_addressbook_combo_box (stuff, AUTOMATIC_CONTACTS_ADDRESSBOOK);
g_signal_connect (combo_box, "changed", G_CALLBACK (source_changed_cb), stuff);
- gtk_widget_set_sensitive (combo_box, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE, NULL));
+ gtk_widget_set_sensitive (combo_box, g_settings_get_boolean (settings, CONF_KEY_ENABLE));
gtk_box_pack_start (GTK_BOX (inner_vbox), combo_box, FALSE, FALSE, 0);
stuff->combo_box = combo_box;
@@ -744,7 +725,7 @@ bbdb_page_factory (EPlugin *ep,
/* Enable Gaim Checkbox */
check_gaim = gtk_check_button_new_with_mnemonic (_("_Synchronize contact info and images from Pidgin buddy list"));
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_gaim), gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE_GAIM, NULL));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_gaim), g_settings_get_boolean (settings, CONF_KEY_ENABLE_GAIM));
g_signal_connect (GTK_TOGGLE_BUTTON (check_gaim), "toggled", G_CALLBACK (enable_gaim_toggled_cb), stuff);
gtk_box_pack_start (GTK_BOX (inner_vbox), check_gaim, FALSE, FALSE, 0);
stuff->check_gaim = check_gaim;
@@ -755,7 +736,7 @@ bbdb_page_factory (EPlugin *ep,
/* Gaim Source Selection Combo Box */
gaim_combo_box = create_addressbook_combo_box (stuff, GAIM_ADDRESSBOOK);
g_signal_connect (gaim_combo_box, "changed", G_CALLBACK (gaim_source_changed_cb), stuff);
- gtk_widget_set_sensitive (gaim_combo_box, gconf_client_get_bool (target->gconf, GCONF_KEY_ENABLE_GAIM, NULL));
+ gtk_widget_set_sensitive (gaim_combo_box, g_settings_get_boolean (settings, CONF_KEY_ENABLE_GAIM));
gtk_box_pack_start (GTK_BOX (inner_vbox), gaim_combo_box, FALSE, FALSE, 0);
stuff->gaim_combo_box = gaim_combo_box;
@@ -769,6 +750,8 @@ bbdb_page_factory (EPlugin *ep,
gtk_widget_show_all (page);
+ g_object_unref (settings);
+
return page;
}
diff --git a/plugins/bbdb/bbdb.h b/plugins/bbdb/bbdb.h
index 82951a7..3bd8cce 100644
--- a/plugins/bbdb/bbdb.h
+++ b/plugins/bbdb/bbdb.h
@@ -22,14 +22,14 @@
#define __BBDB_H__
/* Where to store the config values */
-#define GCONF_ROOT_PATH "/apps/evolution/autocontacts"
-#define GCONF_KEY_ENABLE GCONF_ROOT_PATH "/enable_autocontacts"
-#define GCONF_KEY_ENABLE_GAIM GCONF_ROOT_PATH "/auto_sync_gaim"
-#define GCONF_KEY_WHICH_ADDRESSBOOK GCONF_ROOT_PATH "/addressbook_source"
-#define GCONF_KEY_WHICH_ADDRESSBOOK_GAIM GCONF_ROOT_PATH "/gaim_addressbook_source"
-#define GCONF_KEY_GAIM_LAST_SYNC_TIME GCONF_ROOT_PATH "/gaim_last_sync_time"
-#define GCONF_KEY_GAIM_LAST_SYNC_MD5 GCONF_ROOT_PATH "/gaim_last_sync_md5"
-#define GCONF_KEY_GAIM_CHECK_INTERVAL GCONF_ROOT_PATH "/gaim_check_interval"
+#define CONF_SCHEMA "org.gnome.evolution.eplugin.autocontacts"
+#define CONF_KEY_ENABLE "enable"
+#define CONF_KEY_ENABLE_GAIM "auto-sync-gaim"
+#define CONF_KEY_WHICH_ADDRESSBOOK "addressbook-source"
+#define CONF_KEY_WHICH_ADDRESSBOOK_GAIM "gaim-addressbook-source"
+#define CONF_KEY_GAIM_LAST_SYNC_TIME "gaim-last-sync-time"
+#define CONF_KEY_GAIM_LAST_SYNC_MD5 "gaim-last-sync-md5"
+#define CONF_KEY_GAIM_CHECK_INTERVAL "gaim-check-interval"
/* How often to poll the buddy list for changes (every two minutes is default) */
#define BBDB_BLIST_DEFAULT_CHECK_INTERVAL (2 * 60)
diff --git a/plugins/bbdb/gaimbuddies.c b/plugins/bbdb/gaimbuddies.c
index d2e3c00..68e71ee 100644
--- a/plugins/bbdb/gaimbuddies.c
+++ b/plugins/bbdb/gaimbuddies.c
@@ -112,12 +112,12 @@ get_md5_as_string (const gchar *filename)
void
bbdb_sync_buddy_list_check (void)
{
- GConfClient *gconf;
struct stat statbuf;
time_t last_sync_time;
gchar *md5;
gchar *blist_path;
gchar *last_sync_str;
+ GSettings *settings = g_settings_new (CONF_SCHEMA);
blist_path = get_buddy_filename ();
if (stat (blist_path, &statbuf) < 0) {
@@ -125,11 +125,8 @@ bbdb_sync_buddy_list_check (void)
return;
}
- gconf = gconf_client_get_default ();
-
/* Reprocess the buddy list if it's been updated. */
- last_sync_str = gconf_client_get_string (
- gconf, GCONF_KEY_GAIM_LAST_SYNC_TIME, NULL);
+ last_sync_str = g_settings_get_string (settings, CONF_KEY_GAIM_LAST_SYNC_TIME);
if (last_sync_str == NULL || !strcmp ((const gchar *)last_sync_str, ""))
last_sync_time = (time_t) 0;
else
@@ -138,15 +135,15 @@ bbdb_sync_buddy_list_check (void)
g_free (last_sync_str);
if (statbuf.st_mtime <= last_sync_time) {
- g_object_unref (G_OBJECT (gconf));
+ g_object_unref (G_OBJECT (settings));
g_free (blist_path);
return;
}
- last_sync_str = gconf_client_get_string (
- gconf, GCONF_KEY_GAIM_LAST_SYNC_MD5, NULL);
+ last_sync_str = g_settings_get_string (
+ settings, CONF_KEY_GAIM_LAST_SYNC_MD5);
- g_object_unref (gconf);
+ g_object_unref (settings);
md5 = get_md5_as_string (blist_path);
@@ -164,7 +161,7 @@ bbdb_sync_buddy_list_check (void)
static gboolean
store_last_sync_idle_cb (gpointer data)
{
- GConfClient *gconf;
+ GSettings *settings;
gchar *md5;
gchar *blist_path = get_buddy_filename ();
time_t last_sync;
@@ -175,13 +172,13 @@ store_last_sync_idle_cb (gpointer data)
md5 = get_md5_as_string (blist_path);
- gconf = gconf_client_get_default ();
- gconf_client_set_string (
- gconf, GCONF_KEY_GAIM_LAST_SYNC_TIME, last_sync_time, NULL);
- gconf_client_set_string (
- gconf, GCONF_KEY_GAIM_LAST_SYNC_MD5, md5, NULL);
+ settings = g_settings_new (CONF_SCHEMA);
+ g_settings_set_string (
+ settings, CONF_KEY_GAIM_LAST_SYNC_TIME, last_sync_time);
+ g_settings_set_string (
+ settings, CONF_KEY_GAIM_LAST_SYNC_MD5, md5);
- g_object_unref (G_OBJECT (gconf));
+ g_object_unref (G_OBJECT (settings));
g_free (last_sync_time);
g_free (blist_path);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]