[balsa/gtk3] Revert from GSettings to GConf for default client



commit e3b8a1d761d8c49539e453115d24dfe007a187a5
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Sun Jan 30 21:01:31 2011 -0500

    Revert from GSettings to GConf for default client
    
    	* configure.in:
    	* libinit_balsa/assistant_page_defclient.c
    	(balsa_druid_page_defclient):
    	* src/save-restore.c (config_defclient_save):

 ChangeLog                                |    9 ++++
 configure.in                             |   33 +++++++++-------
 libinit_balsa/assistant_page_defclient.c |   29 ++++++++------
 src/save-restore.c                       |   60 +++++++++++++++++++++---------
 4 files changed, 86 insertions(+), 45 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index d45f89c..d33c8fd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
 2011-01-30  Peter Bloomfield
 
+	Revert from GSettings to GConf for default client stuff
+
+	* configure.in:
+	* libinit_balsa/assistant_page_defclient.c
+	(balsa_druid_page_defclient):
+	* src/save-restore.c (config_defclient_save):
+
+2011-01-30  Peter Bloomfield
+
 	Silence whining from gcc-4.6
 
 	* libbalsa/files.c (libbalsa_icon_finder):
diff --git a/configure.in b/configure.in
index 730c663..f01567a 100644
--- a/configure.in
+++ b/configure.in
@@ -281,24 +281,27 @@ dnl #####################################################################
 dnl GNOME libs
 dnl #####################################################################
 
-AC_MSG_CHECKING([whether we have gnome-keyring])
-if $PKG_CONFIG --atleast-version=1.0 gnome-keyring-1; then
-   gnome_extras="$gnome_extras gnome-keyring-1"
-   AC_DEFINE(HAVE_GNOME_KEYRING,1,[Defined when gnome-keyring is there.])
-   # Work around http://bugzilla.gnome.org/show_bug.cgi?id=556530
-   if $PKG_CONFIG --atleast-version=2.24.1 gnome-keyring-1; then
-      AC_DEFINE(HAVE_GNOME_KEYRING_24,1,
-                [Defined with gnome-keyring-2.24 or newer.])
+if test x$with_gnome != xno; then
+   gnome_extras="gconf-2.0"
+   AC_MSG_CHECKING([whether we have gnome-keyring])
+   if $PKG_CONFIG --atleast-version=1.0 gnome-keyring-1; then
+      gnome_extras="$gnome_extras gnome-keyring-1"
+      AC_DEFINE(HAVE_GNOME_KEYRING,1,[Defined when gnome-keyring is there.])
+      # Work around http://bugzilla.gnome.org/show_bug.cgi?id=556530
+      if $PKG_CONFIG --atleast-version=2.24.1 gnome-keyring-1; then
+         AC_DEFINE(HAVE_GNOME_KEYRING_24,1,
+                   [Defined with gnome-keyring-2.24 or newer.])
+      fi
+      with_gnome_keyring=yes
+   else
+      with_gnome_keyring=no
    fi
-   with_gnome_keyring=yes
+   AC_MSG_RESULT($with_gnome_keyring)
+   AC_DEFINE(HAVE_GNOME,1,[Defined when gnome libs are available.])
 else
-   with_gnome_keyring=no
-fi
-AC_MSG_RESULT($with_gnome_keyring)
-
-if test x$with_gnome != xno; then
-  AC_DEFINE(HAVE_GNOME,1,[Defined when configured for Gnome.])
+   gnome_extras=""
 fi
+AM_CONDITIONAL([BUILD_WITH_GNOME], [test $with_gnome = "yes"])
 
 # GMime configuration
 #
diff --git a/libinit_balsa/assistant_page_defclient.c b/libinit_balsa/assistant_page_defclient.c
index d491900..522ddf7 100644
--- a/libinit_balsa/assistant_page_defclient.c
+++ b/libinit_balsa/assistant_page_defclient.c
@@ -31,6 +31,7 @@
 #include <string.h>
 #include <sys/types.h>
 #include <sys/stat.h>
+#include <gconf/gconf-client.h>
 
 #include <glib/gi18n.h>
 #include "balsa-app.h"
@@ -79,18 +80,22 @@ balsa_druid_page_defclient(GtkAssistant *druid, GdkPixbuf *default_logo)
 {
     BalsaDruidPageDefclient *defclient;
     GtkWidget *page;
-    GSettings *settings;
-
-    gchar *cmd;
-    gboolean set_to_balsa_already;
-
-    settings = g_settings_new("org.gnome.url-handlers.mailto");
-    cmd = g_settings_get_string(settings, "command");
-    set_to_balsa_already = cmd && !strncmp(cmd, "balsa", 5);
-    g_free(cmd);
-    if (set_to_balsa_already)
-        return;
-
+    GConfClient *gc;
+
+    gc = gconf_client_get_default(); /* FIXME: error handling */
+    if(gc) {
+        GError *err = NULL;
+        gchar *cmd;
+        gboolean set_to_balsa_already;
+        cmd = 
+            gconf_client_get_string
+            (gc, "/desktop/gnome/url-handlers/mailto/command", &err);
+        set_to_balsa_already = !err && cmd && strncmp(cmd,"balsa",5)==0;
+        if(err) g_error_free(err);
+        g_free(cmd);
+        if(set_to_balsa_already)
+            return;
+    }
     defclient = g_new0(BalsaDruidPageDefclient, 1);
     page = gtk_vbox_new(FALSE, FALSE);
     gtk_assistant_append_page(druid, page);
diff --git a/src/save-restore.c b/src/save-restore.c
index ca0ed8c..5444e24 100644
--- a/src/save-restore.c
+++ b/src/save-restore.c
@@ -26,6 +26,9 @@
 
 #include <stdlib.h>
 #include <string.h>
+#if HAVE_GNOME
+#include <gconf/gconf-client.h>
+#endif
 #include <glib/gi18n.h>
 #include "balsa-app.h"
 #include "server.h"
@@ -2122,27 +2125,48 @@ config_defclient_save(void)
 {
     static struct {
         const char *key, *val;
-    } settings_string[] = { {
-    "command", "balsa -m \"%s\""}, {
-    "description", "Email"}};
+    } gconf_string[] = {
+        {"/desktop/gnome/url-handlers/mailto/command",     "balsa -m \"%s\""},
+        {"/desktop/gnome/url-handlers/mailto/description", "Email" }};
+    static struct {
+        const char *key; gboolean val;
+    } gconf_bool[] = {
+        {"/desktop/gnome/url-handlers/mailto/need-terminal", FALSE},
+        {"/desktop/gnome/url-handlers/mailto/enabled",       TRUE}};
 
     if (balsa_app.default_client) {
-        GSettings *settings;
+        GError *err = NULL;
+        GConfClient *gc;
         unsigned i;
-
-        settings = g_settings_new("org.gnome.desktop.url-handlers.mailto");
-        for (i = 0; i < G_N_ELEMENTS(settings_string); i++) {
-            g_settings_set_string(settings, settings_string[i].key,
-                                  settings_string[i].val);
+        gc = gconf_client_get_default(); /* FIXME: error handling */
+        if (gc == NULL) {
+            balsa_information(LIBBALSA_INFORMATION_WARNING,
+                              _("Error opening GConf database\n"));
+            return;
+        }
+        for(i=0; i<ELEMENTS(gconf_string); i++) {
+            gconf_client_set_string(gc, gconf_string[i].key, 
+                                    gconf_string[i].val, &err);
+            if (err) {
+                balsa_information(LIBBALSA_INFORMATION_WARNING,
+                                  _("Error setting GConf field: %s\n"),
+                                  err->message);
+                g_error_free(err);
+                return;
+            }
+        }
+        for(i=0; i<ELEMENTS(gconf_bool); i++) {
+            gconf_client_set_bool(gc, gconf_bool[i].key,
+                                  gconf_bool[i].val, &err);
+            if (err) {
+                balsa_information(LIBBALSA_INFORMATION_WARNING,
+                                  _("Error setting GConf field: %s\n"),
+                                  err->message);
+                g_error_free(err);
+                return;
+            }
+            g_object_unref(gc);
         }
-        g_settings_set_boolean(settings, "need-terminal", FALSE);
-        g_object_unref(settings);
-
-        settings =
-            g_settings_new
-            ("org.gnome.desktop.url-handlers.mailto-handlers.mailto");
-        g_settings_set_boolean(settings, "enabled", TRUE);
-        g_object_unref(settings);
     }
 }
-#endif                          /* HAVE_GNOME */
+#endif /* HAVE_GNOME */



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