aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend
diff options
context:
space:
mode:
authorChris Toshok <toshok@ximian.com>2002-12-18 02:26:52 +0800
committerChris Toshok <toshok@src.gnome.org>2002-12-18 02:26:52 +0800
commit917e520bbe50ce58fb69d33438a580be487e96d8 (patch)
tree4fd3ed5fc40d91306aae7802a440353c72b1c3b9 /addressbook/backend
parent7adf0fe63f7f94b66b5d3f87df7b638be0338a96 (diff)
downloadgsoc2013-evolution-917e520bbe50ce58fb69d33438a580be487e96d8.tar.gz
gsoc2013-evolution-917e520bbe50ce58fb69d33438a580be487e96d8.tar.zst
gsoc2013-evolution-917e520bbe50ce58fb69d33438a580be487e96d8.zip
[ Fixes bug #35135 ] don't free the default_book_uri here, it's done in
2002-12-17 Chris Toshok <toshok@ximian.com> [ Fixes bug #35135 ] * backend/ebook/e-book-util.c (set_default_book_uri_local): don't free the default_book_uri here, it's done in set_default_book_uri. (set_default_book_uri): break some stuff out from set_default_book_uri_from_bonobo_conf to here so it can be used both from that function and the bonobo listener. (default_folder_listener): set the new default book uri. (set_default_book_uri_from_bonobo_conf): install the bonobo conf listener so we'll get updates. svn path=/trunk/; revision=19148
Diffstat (limited to 'addressbook/backend')
-rw-r--r--addressbook/backend/ebook/e-book-util.c45
1 files changed, 36 insertions, 9 deletions
diff --git a/addressbook/backend/ebook/e-book-util.c b/addressbook/backend/ebook/e-book-util.c
index e84d0a144d..7852a84675 100644
--- a/addressbook/backend/ebook/e-book-util.c
+++ b/addressbook/backend/ebook/e-book-util.c
@@ -29,6 +29,7 @@
#include <glib.h>
#include <glib-object.h>
+#include <e-util/e-config-listener.h>
#include "e-card-compare.h"
typedef struct _CommonBookInfo CommonBookInfo;
@@ -191,9 +192,6 @@ set_default_book_uri_local (void)
{
char *filename;
- if (default_book_uri)
- g_free (default_book_uri);
-
filename = g_build_filename (g_get_home_dir(),
"evolution/local/Contacts/addressbook.db",
NULL);
@@ -202,19 +200,48 @@ set_default_book_uri_local (void)
}
static void
+set_default_book_uri (char *val)
+{
+ if (default_book_uri)
+ g_free (default_book_uri);
+
+ if (val) {
+ default_book_uri = e_book_expand_uri (val);
+ g_free (val);
+ }
+ else {
+ set_default_book_uri_local ();
+ }
+}
+
+#define DEFAULT_CONTACTS_URI_PATH "/apps/evolution/shell/default_folders/contacts_uri"
+static void
+default_folder_listener (EConfigListener *cl, const char *key, gpointer data)
+{
+ char *val;
+
+ if (strcmp (key, DEFAULT_CONTACTS_URI_PATH))
+ return;
+
+ val = e_config_listener_get_string (cl, DEFAULT_CONTACTS_URI_PATH);
+
+ set_default_book_uri (val);
+}
+
+static void
set_default_book_uri_from_config_db (void)
{
char *val;
EConfigListener* config_db;
config_db = e_book_get_config_database ();
- val = e_config_listener_get_string_with_default (config_db, "/apps/Evolution/DefaultFolders/contacts_uri", NULL, NULL);
+ val = e_config_listener_get_string_with_default (config_db, DEFAULT_CONTACTS_URI_PATH, NULL, NULL);
- if (val) {
- default_book_uri = e_book_expand_uri (val);
- g_free (val);
- } else
- set_default_book_uri_local ();
+ g_signal_connect (config_db,
+ "key_changed",
+ G_CALLBACK (default_folder_listener), NULL);
+
+ set_default_book_uri (val);
}
typedef struct {