[balsa/wip/gtk4: 171/351] address-book: Declare it derivable
- From: Peter Bloomfield <peterb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [balsa/wip/gtk4: 171/351] address-book: Declare it derivable
- Date: Wed, 23 May 2018 21:31:19 +0000 (UTC)
commit 7f82f32ffb77e4165a0c483b14e359d937424948
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date: Tue Feb 13 18:35:24 2018 -0500
address-book: Declare it derivable
Use G_DECLARE_DERIVABLE_TYPE for LibBalsaAddressBook, take all members
private, and provide getters and setters.
libbalsa/address-book-extern.c | 4 +-
libbalsa/address-book-ldif.c | 2 +-
libbalsa/address-book-text.c | 4 +-
libbalsa/address-book-vcard.c | 2 +-
libbalsa/address-book.c | 200 ++++++++++++++++++++++++++++------------
libbalsa/address-book.h | 48 +++++-----
libbalsa/address-view.c | 3 +-
src/ab-main.c | 46 ++++++----
src/ab-window.c | 15 ++-
src/address-book-config.c | 46 ++++++----
src/pref-manager.c | 14 ++-
src/save-restore.c | 24 +++--
src/store-address.c | 11 ++-
13 files changed, 267 insertions(+), 152 deletions(-)
---
diff --git a/libbalsa/address-book-extern.c b/libbalsa/address-book-extern.c
index 2b4d025..da6c8b7 100644
--- a/libbalsa/address-book-extern.c
+++ b/libbalsa/address-book-extern.c
@@ -185,7 +185,7 @@ libbalsa_address_book_externq_new(const gchar * name, const gchar * load,
NULL));
ab = LIBBALSA_ADDRESS_BOOK(abvc);
- ab->name = g_strdup(name);
+ libbalsa_address_book_set_name(ab, name);
abvc->load = g_strdup(load);
abvc->save = g_strdup(save);
@@ -382,7 +382,7 @@ libbalsa_address_book_externq_alias_complete(LibBalsaAddressBook * ab,
ex = LIBBALSA_ADDRESS_BOOK_EXTERN(ab);
- if ( !ab->expand_aliases )
+ if (!libbalsa_address_book_get_expand_aliases(ab))
return NULL;
if(!parse_externq_file(ex, (gchar *)prefix, lbe_expand_cb, &res))
diff --git a/libbalsa/address-book-ldif.c b/libbalsa/address-book-ldif.c
index 5cd451b..17a73c6 100644
--- a/libbalsa/address-book-ldif.c
+++ b/libbalsa/address-book-ldif.c
@@ -97,7 +97,7 @@ libbalsa_address_book_ldif_new(const gchar * name, const gchar * path)
NULL));
ab = LIBBALSA_ADDRESS_BOOK(ab_ldif);
- ab->name = g_strdup(name);
+ libbalsa_address_book_set_name(ab, name);
LIBBALSA_ADDRESS_BOOK_TEXT(ab)->path = g_strdup(path);
return ab;
diff --git a/libbalsa/address-book-text.c b/libbalsa/address-book-text.c
index 7f1948d..fac0206 100644
--- a/libbalsa/address-book-text.c
+++ b/libbalsa/address-book-text.c
@@ -337,7 +337,7 @@ lbab_text_load_file(LibBalsaAddressBookText * ab_text, FILE * stream)
continue;
if (address->address_list->next
- && LIBBALSA_ADDRESS_BOOK(ab_text)->dist_list_mode) {
+ && libbalsa_address_book_get_dist_list_mode(LIBBALSA_ADDRESS_BOOK(ab_text))) {
/* Create a group address. */
InternetAddress *ia =
internet_address_group_new(address->full_name);
@@ -695,7 +695,7 @@ libbalsa_address_book_text_alias_complete(LibBalsaAddressBook * ab,
GList *list;
GList *res = NULL;
- if (ab->expand_aliases == FALSE)
+ if (!libbalsa_address_book_get_expand_aliases(ab))
return NULL;
stream = fopen(ab_text->path, "r");
diff --git a/libbalsa/address-book-vcard.c b/libbalsa/address-book-vcard.c
index 2a20c1a..d20edf5 100644
--- a/libbalsa/address-book-vcard.c
+++ b/libbalsa/address-book-vcard.c
@@ -105,7 +105,7 @@ libbalsa_address_book_vcard_new(const gchar * name, const gchar * path)
NULL));
ab = LIBBALSA_ADDRESS_BOOK(abvc);
- ab->name = g_strdup(name);
+ libbalsa_address_book_set_name(ab, name);
LIBBALSA_ADDRESS_BOOK_TEXT(ab)->path = g_strdup(path);
return ab;
diff --git a/libbalsa/address-book.c b/libbalsa/address-book.c
index 7daf350..5408649 100644
--- a/libbalsa/address-book.c
+++ b/libbalsa/address-book.c
@@ -29,8 +29,6 @@
#include "libbalsa-marshal.h"
#include "libbalsa-conf.h"
-static GObjectClass *parent_class = NULL;
-
static void libbalsa_address_book_class_init(LibBalsaAddressBookClass *
klass);
static void libbalsa_address_book_init(LibBalsaAddressBook * ab);
@@ -43,39 +41,25 @@ static void libbalsa_address_book_real_load_config(LibBalsaAddressBook *
ab,
const gchar * group);
-GType libbalsa_address_book_get_type(void)
-{
- static GType address_book_type = 0;
-
- if (!address_book_type) {
- static const GTypeInfo address_book_info = {
- sizeof(LibBalsaAddressBookClass),
- NULL, /* base_init */
- NULL, /* base_finalize */
- (GClassInitFunc) libbalsa_address_book_class_init,
- NULL, /* class_finalize */
- NULL, /* class_data */
- sizeof(LibBalsaAddressBook),
- 0, /* n_preallocs */
- (GInstanceInitFunc) libbalsa_address_book_init
- };
-
- address_book_type =
- g_type_register_static(G_TYPE_OBJECT,
- "LibBalsaAddressBook",
- &address_book_info, 0);
- }
+typedef struct {
+ /* The gnome_config prefix where we save this address book */
+ gchar *config_prefix;
+ gchar *name;
+ gchar *ext_op_code; /* extra description for last operation */
+ gboolean is_expensive; /* is lookup to the address book expensive?
+ e.g. LDAP address book */
+ gboolean expand_aliases;
- return address_book_type;
-}
+ gboolean dist_list_mode;
+} LibBalsaAddressBookPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE(LibBalsaAddressBook, libbalsa_address_book, G_TYPE_OBJECT)
static void
libbalsa_address_book_class_init(LibBalsaAddressBookClass * klass)
{
GObjectClass *object_class;
- parent_class = g_type_class_peek_parent(klass);
-
object_class = G_OBJECT_CLASS(klass);
klass->load = NULL;
@@ -92,25 +76,26 @@ libbalsa_address_book_class_init(LibBalsaAddressBookClass * klass)
static void
libbalsa_address_book_init(LibBalsaAddressBook * ab)
{
- ab->config_prefix = NULL;
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ priv->config_prefix = NULL;
- ab->name = NULL;
- ab->expand_aliases = TRUE;
- ab->dist_list_mode = FALSE;
- ab->is_expensive = FALSE;
+ priv->name = NULL;
+ priv->expand_aliases = TRUE;
+ priv->dist_list_mode = FALSE;
+ priv->is_expensive = FALSE;
}
static void
libbalsa_address_book_finalize(GObject * object)
{
- LibBalsaAddressBook *ab;
+ LibBalsaAddressBook *ab = LIBBALSA_ADDRESS_BOOK(object);
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
- ab = LIBBALSA_ADDRESS_BOOK(object);
+ g_free(priv->config_prefix);
+ g_free(priv->name);
- g_free(ab->config_prefix);
- g_free(ab->name);
-
- G_OBJECT_CLASS(parent_class)->finalize(object);
+ G_OBJECT_CLASS(libbalsa_address_book_parent_class)->finalize(object);
}
LibBalsaAddressBook *
@@ -208,9 +193,11 @@ libbalsa_address_book_modify_address(LibBalsaAddressBook * ab,
void
libbalsa_address_book_set_status(LibBalsaAddressBook * ab, gchar *str)
{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
g_return_if_fail(ab);
- g_free(ab->ext_op_code);
- ab->ext_op_code = str;
+ g_free(priv->ext_op_code);
+ priv->ext_op_code = str;
}
void
@@ -232,6 +219,8 @@ void
libbalsa_address_book_load_config(LibBalsaAddressBook * ab,
const gchar * group)
{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
g_return_if_fail(LIBBALSA_IS_ADDRESS_BOOK(ab));
g_assert(LIBBALSA_ADDRESS_BOOK_GET_CLASS(ab) != NULL);
@@ -239,8 +228,8 @@ libbalsa_address_book_load_config(LibBalsaAddressBook * ab,
LIBBALSA_ADDRESS_BOOK_GET_CLASS(ab)->load_config(ab, group);
libbalsa_conf_pop_group();
- if (ab->is_expensive < 0)
- ab->is_expensive = FALSE;
+ if (priv->is_expensive < 0)
+ priv->is_expensive = FALSE;
}
GList *
@@ -257,7 +246,10 @@ libbalsa_address_book_alias_complete(LibBalsaAddressBook * ab,
gboolean libbalsa_address_is_dist_list(const LibBalsaAddressBook *ab,
const LibBalsaAddress *address)
{
- return (ab->dist_list_mode && g_list_length(address->address_list)>1);
+ LibBalsaAddressBookPrivate *priv =
+ libbalsa_address_book_get_instance_private((LibBalsaAddressBook *) ab);
+
+ return (priv->dist_list_mode && g_list_length(address->address_list)>1);
}
@@ -266,52 +258,57 @@ static void
libbalsa_address_book_real_save_config(LibBalsaAddressBook * ab,
const gchar * group)
{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
g_return_if_fail(LIBBALSA_IS_ADDRESS_BOOK(ab));
g_assert(LIBBALSA_ADDRESS_BOOK_GET_CLASS(ab) != NULL);
libbalsa_conf_set_string("Type", g_type_name(G_OBJECT_TYPE(ab)));
- libbalsa_conf_set_string("Name", ab->name);
- libbalsa_conf_set_bool("ExpandAliases", ab->expand_aliases);
- libbalsa_conf_set_bool("IsExpensive", ab->is_expensive);
- libbalsa_conf_set_bool("DistListMode", ab->dist_list_mode);
+ libbalsa_conf_set_string("Name", priv->name);
+ libbalsa_conf_set_bool("ExpandAliases", priv->expand_aliases);
+ libbalsa_conf_set_bool("IsExpensive", priv->is_expensive);
+ libbalsa_conf_set_bool("DistListMode", priv->dist_list_mode);
- g_free(ab->config_prefix);
- ab->config_prefix = g_strdup(group);
+ g_free(priv->config_prefix);
+ priv->config_prefix = g_strdup(group);
}
static void
libbalsa_address_book_real_load_config(LibBalsaAddressBook * ab,
const gchar * group)
{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
gboolean def;
g_return_if_fail(LIBBALSA_IS_ADDRESS_BOOK(ab));
- g_free(ab->config_prefix);
- ab->config_prefix = g_strdup(group);
+ g_free(priv->config_prefix);
+ priv->config_prefix = g_strdup(group);
- ab->expand_aliases = libbalsa_conf_get_bool("ExpandAliases=false");
+ priv->expand_aliases = libbalsa_conf_get_bool("ExpandAliases=false");
- ab->is_expensive =
+ priv->is_expensive =
libbalsa_conf_get_bool_with_default("IsExpensive", &def);
if (def)
/* Default will be supplied by the backend, or in
* libbalsa_address_book_load_config. */
- ab->is_expensive = -1;
+ priv->is_expensive = -1;
- ab->dist_list_mode = libbalsa_conf_get_bool("DistListMode=false");
+ priv->dist_list_mode = libbalsa_conf_get_bool("DistListMode=false");
- g_free(ab->name);
- ab->name = libbalsa_conf_get_string("Name=Address Book");
+ g_free(priv->name);
+ priv->name = libbalsa_conf_get_string("Name=Address Book");
}
const gchar*
libbalsa_address_book_strerror(LibBalsaAddressBook * ab, LibBalsaABErr err)
{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
const gchar *s;
+
g_return_val_if_fail(ab, NULL);
- if(ab->ext_op_code)
- return ab->ext_op_code;
+ if(priv->ext_op_code)
+ return priv->ext_op_code;
switch(err) {
case LBABERR_OK: s= _("No error"); break;
@@ -328,4 +325,87 @@ libbalsa_address_book_strerror(LibBalsaAddressBook * ab, LibBalsaABErr err)
return s;
}
+/*
+ * Getters
+ */
+
+gboolean
+libbalsa_address_book_get_dist_list_mode(LibBalsaAddressBook * ab)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ return priv->dist_list_mode;
+}
+
+gboolean
+libbalsa_address_book_get_expand_aliases(LibBalsaAddressBook * ab)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ return priv->expand_aliases;
+}
+
+gboolean
+libbalsa_address_book_get_is_expensive(LibBalsaAddressBook * ab)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ return priv->is_expensive;
+}
+
+const gchar *
+libbalsa_address_book_get_name(LibBalsaAddressBook * ab)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+ return priv->name;
+}
+
+const gchar *
+libbalsa_address_book_get_config_prefix(LibBalsaAddressBook * ab)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ return priv->config_prefix;
+}
+
+/*
+ * Setters
+ */
+
+void
+libbalsa_address_book_set_dist_list_mode(LibBalsaAddressBook * ab,
+ gboolean dist_list_mode)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ priv->dist_list_mode = dist_list_mode;
+}
+
+void
+libbalsa_address_book_set_expand_aliases(LibBalsaAddressBook * ab,
+ gboolean expand_aliases)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ priv->expand_aliases = expand_aliases;
+}
+
+void
+libbalsa_address_book_set_is_expensive(LibBalsaAddressBook * ab,
+ gboolean is_expensive)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ priv->is_expensive = is_expensive;
+}
+
+void
+libbalsa_address_book_set_name(LibBalsaAddressBook * ab,
+ const gchar * name)
+{
+ LibBalsaAddressBookPrivate *priv = libbalsa_address_book_get_instance_private(ab);
+
+ g_free(priv->name);
+ priv->name = g_strdup(name);
+}
diff --git a/libbalsa/address-book.h b/libbalsa/address-book.h
index b48e541..cf9c966 100644
--- a/libbalsa/address-book.h
+++ b/libbalsa/address-book.h
@@ -23,14 +23,9 @@
#include "address.h"
-#define LIBBALSA_TYPE_ADDRESS_BOOK (libbalsa_address_book_get_type())
-#define LIBBALSA_ADDRESS_BOOK(obj) (G_TYPE_CHECK_INSTANCE_CAST (obj,
LIBBALSA_TYPE_ADDRESS_BOOK, LibBalsaAddressBook))
-#define LIBBALSA_ADDRESS_BOOK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST (klass,
LIBBALSA_TYPE_ADDRESS_BOOK, LibBalsaAddressBookClass))
-#define LIBBALSA_IS_ADDRESS_BOOK(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj,
LIBBALSA_TYPE_ADDRESS_BOOK))
-#define LIBBALSA_IS_ADDRESS_BOOK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE (klass,
LIBBALSA_TYPE_ADDRESS_BOOK))
-#define LIBBALSA_ADDRESS_BOOK_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), LIBBALSA_TYPE_ADDRESS_BOOK, \
- LibBalsaAddressBookClass))
+#define LIBBALSA_TYPE_ADDRESS_BOOK (libbalsa_address_book_get_type())
+G_DECLARE_DERIVABLE_TYPE(LibBalsaAddressBook, libbalsa_address_book,
+ LIBBALSA, ADDRESS_BOOK, GObject)
typedef enum {
LBABERR_OK = 0,
@@ -49,20 +44,6 @@ typedef LibBalsaABErr (*LibBalsaAddressBookLoadFunc)(LibBalsaAddressBook *ab,
LibBalsaAddress *address,
gpointer closure);
-struct _LibBalsaAddressBook {
- GObject parent;
-
- /* The gnome_config prefix where we save this address book */
- gchar *config_prefix;
- gchar *name;
- gchar *ext_op_code; /* extra description for last operation */
- gboolean is_expensive; /* is lookup to the address book expensive?
- e.g. LDAP address book */
- gboolean expand_aliases;
-
- gboolean dist_list_mode;
-};
-
struct _LibBalsaAddressBookClass {
GObjectClass parent;
@@ -93,8 +74,6 @@ struct _LibBalsaAddressBookClass {
GList* (*alias_complete) (LibBalsaAddressBook * ab, const gchar *prefix);
};
-GType libbalsa_address_book_get_type(void);
-
LibBalsaAddressBook *libbalsa_address_book_new_from_config(const gchar *
prefix);
@@ -142,5 +121,26 @@ GList *libbalsa_address_book_alias_complete(LibBalsaAddressBook * ab,
gboolean libbalsa_address_is_dist_list(const LibBalsaAddressBook *ab,
const LibBalsaAddress *address);
+/*
+ * Getters
+ */
+gboolean libbalsa_address_book_get_dist_list_mode(LibBalsaAddressBook * ab);
+gboolean libbalsa_address_book_get_expand_aliases(LibBalsaAddressBook * ab);
+gboolean libbalsa_address_book_get_is_expensive (LibBalsaAddressBook * ab);
+const gchar * libbalsa_address_book_get_name (LibBalsaAddressBook * ab);
+const gchar * libbalsa_address_book_get_config_prefix (LibBalsaAddressBook * ab);
+
+/*
+ * Setters
+ */
+void libbalsa_address_book_set_dist_list_mode(LibBalsaAddressBook * ab,
+ gboolean dist_list_mode);
+void libbalsa_address_book_set_expand_aliases(LibBalsaAddressBook * ab,
+ gboolean expand_aliases);
+void libbalsa_address_book_set_is_expensive (LibBalsaAddressBook * ab,
+ gboolean is_expensive);
+void libbalsa_address_book_set_name (LibBalsaAddressBook * ab,
+ const gchar * name);
+
#endif
diff --git a/libbalsa/address-view.c b/libbalsa/address-view.c
index fb384f2..10d121d 100644
--- a/libbalsa/address-view.c
+++ b/libbalsa/address-view.c
@@ -308,7 +308,8 @@ lbav_get_matching_addresses(LibBalsaAddressView * address_view,
ab = LIBBALSA_ADDRESS_BOOK(list->data);
if (type == LIBBALSA_ADDRESS_VIEW_MATCH_FAST
- && (!ab->expand_aliases || ab->is_expensive))
+ && (!libbalsa_address_book_get_expand_aliases(ab) ||
+ libbalsa_address_book_get_is_expensive(ab)))
continue;
match =
diff --git a/src/ab-main.c b/src/ab-main.c
index ea4441c..43d0372 100644
--- a/src/ab-main.c
+++ b/src/ab-main.c
@@ -176,8 +176,10 @@ bab_set_address_book(LibBalsaAddressBook * ab,
libbalsa_address_book_load(ab, filter,
(LibBalsaAddressBookLoadFunc)
bab_load_cb, model)) != LBABERR_OK) {
- printf("error loading address book from %s: %d\n", ab->name,
- ab_err);
+ const gchar *name = libbalsa_address_book_get_name(ab);
+ const gchar *desc = libbalsa_address_book_strerror(ab, ab_err);
+
+ printf("error loading address book from %s: %s (%d)\n", name, desc, ab_err);
}
return TRUE;
@@ -187,6 +189,7 @@ static void
bab_window_set_title(LibBalsaAddressBook * address_book)
{
const gchar *type = "";
+ const gchar *name;
gchar *title;
if (LIBBALSA_IS_ADDRESS_BOOK_VCARD(address_book))
@@ -208,8 +211,8 @@ bab_window_set_title(LibBalsaAddressBook * address_book)
type = "Rubrica";
#endif /* HAVE_RUBRICA */
- title =
- g_strconcat(type, _(" address book: "), address_book->name, NULL);
+ name = libbalsa_address_book_get_name(address_book);
+ title = g_strconcat(type, _(" address book: "), name, NULL);
gtk_window_set_title(contacts_app.window, title);
g_free(title);
}
@@ -221,16 +224,18 @@ address_book_change_state(GSimpleAction * action,
{
const gchar *value;
GList *l;
- LibBalsaAddressBook *address_book;
+ LibBalsaAddressBook *address_book = NULL;
value = g_variant_get_string(state, NULL);
- for (l = contacts_app.address_book_list; l; l = l->next) {
+ for (l = contacts_app.address_book_list; l != NULL; l = l->next) {
address_book = l->data;
- if (address_book && strcmp(value, address_book->name) == 0)
+ if (address_book != NULL
+ && strcmp(value,
+ libbalsa_address_book_get_name(address_book)) == 0)
break;
}
- if (!l || !(address_book = l->data))
+ if (address_book == NULL)
return;
ab_clear_edit_widget();
@@ -269,15 +274,16 @@ set_address_book_menu_items(void)
g_string_append(string, "<section>");
for (l = contacts_app.address_book_list; l; l = l->next) {
LibBalsaAddressBook *address_book = l->data;
+ const gchar *name;
if (!address_book)
continue;
+ name = libbalsa_address_book_get_name(address_book);
g_string_append(string, "<item>");
g_string_append(string, "<attribute name='label'>");
- g_string_append_printf(string, "_%d:%s", ++pos,
- address_book->name);
+ g_string_append_printf(string, "_%d:%s", ++pos, name);
g_string_append(string, "</attribute>");
g_string_append(string, "<attribute name='action'>");
@@ -285,7 +291,7 @@ set_address_book_menu_items(void)
g_string_append(string, "</attribute>");
g_string_append(string, "<attribute name='target'>");
- g_string_append(string, address_book->name);
+ g_string_append(string, name);
g_string_append(string, "</attribute>");
g_string_append(string, "<attribute name='accel'>");
@@ -338,6 +344,7 @@ get_unused_group(const gchar * prefix)
static void
address_book_change(LibBalsaAddressBook * address_book, gboolean append)
{
+ const gchar *config_prefix;
gchar *group;
if (append)
@@ -347,8 +354,9 @@ address_book_change(LibBalsaAddressBook * address_book, gboolean append)
set_address_book_menu_items();
bab_window_set_title(address_book);
- group = address_book->config_prefix ?
- g_strdup(address_book->config_prefix) :
+ config_prefix = libbalsa_address_book_get_config_prefix(address_book);
+ group = config_prefix != NULL ?
+ g_strdup(config_prefix) :
get_unused_group(ADDRESS_BOOK_SECTION_PREFIX);
libbalsa_address_book_save_config(address_book, group);
g_free(group);
@@ -442,15 +450,17 @@ file_delete_activated(GSimpleAction * action,
gpointer user_data)
{
LibBalsaAddressBook *address_book;
+ const gchar *config_prefix;
GList *list;
if ((address_book = contacts_app.address_book) == NULL
|| contacts_app.address_book_list->next == NULL)
return;
- if (address_book->config_prefix) {
- libbalsa_conf_remove_group(address_book->config_prefix);
- libbalsa_conf_private_remove_group(address_book->config_prefix);
+ config_prefix = libbalsa_address_book_get_config_prefix(address_book);
+ if (config_prefix != NULL) {
+ libbalsa_conf_remove_group(config_prefix);
+ libbalsa_conf_private_remove_group(config_prefix);
libbalsa_conf_queue_sync();
}
@@ -1039,10 +1049,12 @@ bab_set_intial_address_book(LibBalsaAddressBook * ab,
GtkWidget * window)
{
GAction *action;
+ const gchar *name;
action =
g_action_map_lookup_action(G_ACTION_MAP(window), "address-book");
- g_action_change_state(action, g_variant_new_string(ab->name));
+ name = libbalsa_address_book_get_name(ab);
+ g_action_change_state(action, g_variant_new_string(name));
}
GtkDialogFlags
diff --git a/src/ab-window.c b/src/ab-window.c
index f2b81ea..a095c47 100644
--- a/src/ab-window.c
+++ b/src/ab-window.c
@@ -214,7 +214,7 @@ balsa_ab_window_load_books(BalsaAbWindow * ab)
LibBalsaAddressBook *address_book = ab_list->data;
gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(ab->combo_box),
- address_book->name);
+ libbalsa_address_book_get_name(address_book));
if (ab->current_address_book == NULL)
ab->current_address_book = address_book;
@@ -409,7 +409,7 @@ balsa_ab_window_init(BalsaAbWindow *ab)
if(ab->current_address_book)
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON(ab->dist_address_mode_radio),
- ab->current_address_book->dist_list_mode);
+ libbalsa_address_book_get_dist_list_mode(ab->current_address_book));
/* Pack them into a box */
box2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 2);
@@ -709,7 +709,8 @@ balsa_ab_window_set_title(BalsaAbWindow *ab)
#endif
title =
- g_strconcat(type, _(" address book: "), address_book->name, NULL);
+ g_strconcat(type, _(" address book: "),
+ libbalsa_address_book_get_name(address_book), NULL);
gtk_window_set_title(GTK_WINDOW(ab), title);
g_free(title);
}
@@ -733,12 +734,14 @@ balsa_ab_window_load(BalsaAbWindow *ab)
(LibBalsaAddressBookLoadFunc)
balsa_ab_window_load_cb, ab);
if (err != LBABERR_OK && err != LBABERR_CANNOT_READ) {
+ const gchar *name =
+ libbalsa_address_book_get_name(ab->current_address_book);
const gchar *desc =
libbalsa_address_book_strerror(ab->current_address_book, err);
balsa_information_parented(GTK_WINDOW(ab),
LIBBALSA_INFORMATION_ERROR,
_("Error opening address book ā%sā:\n%s"),
- ab->current_address_book->name, desc);
+ name, desc);
}
balsa_ab_window_set_title(ab);
}
@@ -866,7 +869,7 @@ balsa_ab_window_dist_mode_toggled(GtkWidget * w, BalsaAbWindow *ab)
active = gtk_toggle_button_get_active
(GTK_TOGGLE_BUTTON(ab->single_address_mode_radio));
- ab->current_address_book->dist_list_mode = !active;
+ libbalsa_address_book_set_dist_list_mode(ab->current_address_book, !active);
balsa_ab_window_load(ab);
}
@@ -887,7 +890,7 @@ balsa_ab_window_menu_changed(GtkWidget * widget, BalsaAbWindow *ab)
g_signal_handler_block(G_OBJECT(ab->single_address_mode_radio),
ab->toggle_handler_id);
- if ( ab->current_address_book->dist_list_mode )
+ if (libbalsa_address_book_get_dist_list_mode(ab->current_address_book))
gtk_toggle_button_set_active(
GTK_TOGGLE_BUTTON(ab->dist_address_mode_radio), TRUE);
else
diff --git a/src/address-book-config.c b/src/address-book-config.c
index 67aedb0..a132265 100644
--- a/src/address-book-config.c
+++ b/src/address-book-config.c
@@ -200,9 +200,9 @@ add_radio_buttons(GtkWidget * grid, gint row, AddressBookConfig * abc)
button = abc->as_i_type;
if (abc->address_book) {
- if (!abc->address_book->expand_aliases)
+ if (!libbalsa_address_book_get_expand_aliases(abc->address_book))
button = abc->never;
- else if (abc->address_book->is_expensive)
+ else if (libbalsa_address_book_get_is_expensive(abc->address_book))
button = abc->on_request;
}
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), TRUE);
@@ -224,7 +224,7 @@ create_local_dialog(AddressBookConfig * abc, const gchar * type)
if (ab) {
title = g_strdup_printf(_("Modify %s Address Book"), type);
action = _("_Apply");
- name = ab->name;
+ name = libbalsa_address_book_get_name(ab);
} else {
title = g_strdup_printf(_("Add %s Address Book"), type);
action = _("_Add");
@@ -422,8 +422,10 @@ create_externq_dialog(AddressBookConfig * abc)
/* mailbox name */
label = libbalsa_create_grid_label(_("A_ddress Book Name:"), grid, 0);
- abc->name_entry = libbalsa_create_grid_entry(grid, NULL, NULL, 0,
- ab ? abc->address_book->name : NULL,
+ abc->name_entry = libbalsa_create_grid_entry(grid, NULL, NULL, 0,
+ ab != NULL
+ ? libbalsa_address_book_get_name(abc->address_book)
+ : NULL,
label);
label = gtk_label_new(_("Load program location:"));
@@ -489,8 +491,10 @@ create_ldap_dialog(AddressBookConfig * abc)
/* mailbox name */
label = libbalsa_create_grid_label(_("A_ddress Book Name:"), grid, 0);
- abc->name_entry = libbalsa_create_grid_entry(grid, NULL, NULL, 0,
- ab ? abc->address_book->name : name,
+ abc->name_entry = libbalsa_create_grid_entry(grid, NULL, NULL, 0,
+ ab != NULL
+ ? libbalsa_address_book_get_name(abc->address_book)
+ : NULL,
label);
label = libbalsa_create_grid_label(_("_Host Name"), grid, 1);
@@ -747,11 +751,15 @@ create_book(AddressBookConfig * abc)
} else
g_assert_not_reached();
- if (address_book) {
- address_book->expand_aliases =
- !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(abc->never));
- address_book->is_expensive =
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(abc->on_request));
+ if (address_book != NULL) {
+ gboolean active;
+
+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(abc->never));
+ libbalsa_address_book_set_expand_aliases(address_book, !active);
+
+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(abc->on_request));
+ libbalsa_address_book_set_is_expensive(address_book, active);
+
abc->callback(address_book, TRUE);
}
@@ -762,10 +770,10 @@ static void
modify_book(AddressBookConfig * abc)
{
LibBalsaAddressBook *address_book = abc->address_book;
+ gboolean active;
- g_free(address_book->name);
- address_book->name =
- g_strdup(gtk_entry_get_text(GTK_ENTRY(abc->name_entry)));
+ libbalsa_address_book_set_name(address_book,
+ gtk_entry_get_text(GTK_ENTRY(abc->name_entry)));
if (abc->type == LIBBALSA_TYPE_ADDRESS_BOOK_VCARD
|| abc->type == LIBBALSA_TYPE_ADDRESS_BOOK_LDIF
@@ -838,10 +846,10 @@ modify_book(AddressBookConfig * abc)
} else
g_assert_not_reached();
- address_book->expand_aliases =
- !gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(abc->never));
- address_book->is_expensive =
- gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(abc->on_request));
+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(abc->never));
+ libbalsa_address_book_set_expand_aliases(address_book, !active);
+ active = gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(abc->on_request));
+ libbalsa_address_book_set_is_expensive(address_book, active);
abc->callback(address_book, FALSE);
}
diff --git a/src/pref-manager.c b/src/pref-manager.c
index 2b696fb..71aa2e6 100644
--- a/src/pref-manager.c
+++ b/src/pref-manager.c
@@ -893,6 +893,9 @@ update_address_books(void)
gtk_list_store_clear(GTK_LIST_STORE(model));
while (list) {
+ const gchar *address_book_name;
+ gboolean expand;
+
address_book = LIBBALSA_ADDRESS_BOOK(list->data);
g_assert(address_book != NULL);
@@ -922,17 +925,20 @@ update_address_books(void)
else
type = _("Unknown");
+ address_book_name = libbalsa_address_book_get_name(address_book);
if (address_book == balsa_app.default_address_book) {
- name = g_strdup_printf(_("%s (default)"), address_book->name);
+ name = g_strdup_printf(_("%s (default)"), address_book_name);
} else {
- name = g_strdup(address_book->name);
+ name = g_strdup(address_book_name);
}
+
+ expand = libbalsa_address_book_get_expand_aliases(address_book)
+ && !libbalsa_address_book_get_is_expensive(address_book);
gtk_list_store_append(GTK_LIST_STORE(model), &iter);
gtk_list_store_set(GTK_LIST_STORE(model), &iter,
AB_TYPE_COLUMN, type,
AB_NAME_COLUMN, name,
- AB_XPND_COLUMN, (address_book->expand_aliases
- && !address_book->is_expensive),
+ AB_XPND_COLUMN, expand,
AB_DATA_COLUMN, address_book, -1);
g_free(name);
diff --git a/src/save-restore.c b/src/save-restore.c
index 97e0a25..cd96ce0 100644
--- a/src/save-restore.c
+++ b/src/save-restore.c
@@ -75,11 +75,6 @@ static void config_filters_load(void);
g_strdup(LIBBALSA_MAILBOX(mbox)->config_prefix) : \
config_get_unused_group(MAILBOX_SECTION_PREFIX)
-#define address_book_section_path(ab) \
- LIBBALSA_ADDRESS_BOOK(ab)->config_prefix ? \
- g_strdup(LIBBALSA_ADDRESS_BOOK(ab)->config_prefix) : \
- config_get_unused_group(ADDRESS_BOOK_SECTION_PREFIX)
-
gint config_load(void)
{
return config_global_load();
@@ -238,9 +233,13 @@ config_mailbox_set_as_special(LibBalsaMailbox * mailbox, specialType which)
void
config_address_book_save(LibBalsaAddressBook * ab)
{
+ const gchar *config_prefix;
gchar *group;
- group = address_book_section_path(ab);
+ config_prefix = libbalsa_address_book_get_config_prefix(ab);
+ group = config_prefix != NULL ?
+ g_strdup(config_prefix) :
+ config_get_unused_group(ADDRESS_BOOK_SECTION_PREFIX);
libbalsa_address_book_save_config(ab, group);
@@ -252,9 +251,12 @@ config_address_book_save(LibBalsaAddressBook * ab)
void
config_address_book_delete(LibBalsaAddressBook * ab)
{
- if (ab->config_prefix) {
- libbalsa_conf_remove_group(ab->config_prefix);
- libbalsa_conf_private_remove_group(ab->config_prefix);
+ const gchar *config_prefix;
+
+ config_prefix = libbalsa_address_book_get_config_prefix(ab);
+ if (config_prefix != NULL) {
+ libbalsa_conf_remove_group(config_prefix);
+ libbalsa_conf_private_remove_group(config_prefix);
libbalsa_conf_queue_sync();
}
}
@@ -1436,8 +1438,8 @@ config_save(void)
if (balsa_app.default_address_book)
libbalsa_conf_set_string("DefaultAddressBook",
- balsa_app.default_address_book->
- config_prefix);
+ libbalsa_address_book_get_config_prefix
+ (balsa_app.default_address_book));
else
libbalsa_conf_clean_key("DefaultAddressBook");
diff --git a/src/store-address.c b/src/store-address.c
index 6616cea..8e0bf1f 100644
--- a/src/store-address.c
+++ b/src/store-address.c
@@ -300,13 +300,14 @@ store_address_book_frame(StoreAddressInfo * info)
ab_list != NULL;
off++, ab_list = ab_list->next) {
LibBalsaAddressBook *address_book;
+ const gchar *name;
address_book = LIBBALSA_ADDRESS_BOOK(ab_list->data);
if (info->current_address_book == NULL)
info->current_address_book = address_book;
- gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box),
- address_book->name);
+ name = libbalsa_address_book_get_name(address_book);
+ gtk_combo_box_text_append_text(GTK_COMBO_BOX_TEXT(combo_box), name);
if (address_book == balsa_app.default_address_book)
default_ab_offset = off;
}
@@ -450,11 +451,13 @@ store_address_add_list(StoreAddressInfo * info,
for (i = 0; i < internet_address_list_length(list); i++) {
InternetAddress *ia = internet_address_list_get_address(list, i);
+ gboolean dist_list_mode =
+ libbalsa_address_book_get_dist_list_mode(info->current_address_book);
if (INTERNET_ADDRESS_IS_MAILBOX(ia)) {
store_address_add_address(info, label, ia, NULL);
- } else if (info->current_address_book->dist_list_mode) {
- store_address_add_address(info, label, ia, ia);
+ } else if (dist_list_mode) {
+ store_address_add_address(info, label, ia, ia);
} else {
InternetAddressList *members =
INTERNET_ADDRESS_GROUP(ia)->members;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]