[balsa/wip/gtk4: 173/351] address-book-extern: Declare it final



commit 467a81e7532b79f0938f1d3d10f54cc7e8ed9ed9
Author: Peter Bloomfield <PeterBloomfield bellsouth net>
Date:   Wed Feb 14 14:21:25 2018 -0500

    address-book-extern: Declare it final
    
    Use G_DECLARE_FINAL_TYPE for LibBalsaAddressBookExtern, take all members
    private, and provide getters and setters for the load and save strings.

 libbalsa/address-book-extern.c |  121 ++++++++++++++++++++++++---------------
 libbalsa/address-book-extern.h |   44 ++++++---------
 src/address-book-config.c      |   12 ++--
 3 files changed, 98 insertions(+), 79 deletions(-)
---
diff --git a/libbalsa/address-book-extern.c b/libbalsa/address-book-extern.c
index da6c8b7..36737b2 100644
--- a/libbalsa/address-book-extern.c
+++ b/libbalsa/address-book-extern.c
@@ -58,8 +58,8 @@
 
 static LibBalsaAddressBookClass *parent_class = NULL;
 
-static void libbalsa_address_book_externq_class_init(LibBalsaAddressBookExternClass *klass);
-static void libbalsa_address_book_externq_init(LibBalsaAddressBookExtern *ab);
+static void libbalsa_address_book_extern_class_init(LibBalsaAddressBookExternClass *klass);
+static void libbalsa_address_book_extern_init(LibBalsaAddressBookExtern *ab);
 static void libbalsa_address_book_externq_finalize(GObject * object);
 
 static LibBalsaABErr libbalsa_address_book_externq_load(LibBalsaAddressBook* ab, 
@@ -77,48 +77,39 @@ static LibBalsaABErr libbalsa_address_book_externq_modify_address(LibBalsaAddres
                                                                   LibBalsaAddress *address,
                                                                   LibBalsaAddress *newval);
 
-static void libbalsa_address_book_externq_save_config(LibBalsaAddressBook *ab,
+static void libbalsa_address_book_extern_save_config(LibBalsaAddressBook *ab,
                                                       const gchar * prefix);
 static void libbalsa_address_book_externq_load_config(LibBalsaAddressBook *ab,
                                                       const gchar * prefix);
 
-static gboolean parse_externq_file(LibBalsaAddressBookExtern *addr_externq,
+static gboolean parse_extern_file(LibBalsaAddressBookExtern *addr_extern,
                                    gchar *pattern,
                                    void (*cb)(const gchar*,const gchar*,void*),
                                    void *data);
 
-static GList *libbalsa_address_book_externq_alias_complete(LibBalsaAddressBook *ab, 
+static GList *libbalsa_address_book_extern_alias_complete(LibBalsaAddressBook *ab, 
                                                            const gchar * prefix);
 
-GType libbalsa_address_book_externq_get_type(void)
-{
-    static GType address_book_externq_type = 0;
-
-    if (!address_book_externq_type) {
-       static const GTypeInfo address_book_externq_info = {
-           sizeof(LibBalsaAddressBookExternClass),
-            NULL,               /* base_init */
-            NULL,               /* base_finalize */
-           (GClassInitFunc) libbalsa_address_book_externq_class_init,
-            NULL,               /* class_finalize */
-            NULL,               /* class_data */
-           sizeof(LibBalsaAddressBookExtern),
-            0,                  /* n_preallocs */
-           (GInstanceInitFunc) libbalsa_address_book_externq_init
-       };
-
-       address_book_externq_type =
-            g_type_register_static(LIBBALSA_TYPE_ADDRESS_BOOK,
-                                  "LibBalsaAddressBookExtern",
-                                  &address_book_externq_info, 0);
-    }
+struct _LibBalsaAddressBookExternClass {
+    LibBalsaAddressBookClass parent_class;
+};
 
-    return address_book_externq_type;
+struct _LibBalsaAddressBookExtern {
+    LibBalsaAddressBook parent;
 
-}
+    gchar *load;
+    gchar *save;
+
+    GList *address_list;
+
+    time_t mtime;
+};
+
+G_DEFINE_TYPE(LibBalsaAddressBookExtern, libbalsa_address_book_extern,
+        LIBBALSA_TYPE_ADDRESS_BOOK)
 
 static void
-libbalsa_address_book_externq_class_init(LibBalsaAddressBookExternClass *
+libbalsa_address_book_extern_class_init(LibBalsaAddressBookExternClass *
                                          klass)
 {
     LibBalsaAddressBookClass *address_book_class;
@@ -140,17 +131,17 @@ libbalsa_address_book_externq_class_init(LibBalsaAddressBookExternClass *
        libbalsa_address_book_externq_modify_address;
 
     address_book_class->save_config =
-       libbalsa_address_book_externq_save_config;
+       libbalsa_address_book_extern_save_config;
     address_book_class->load_config =
        libbalsa_address_book_externq_load_config;
 
     address_book_class->alias_complete =
-       libbalsa_address_book_externq_alias_complete;
+       libbalsa_address_book_extern_alias_complete;
 
 }
 
 static void
-libbalsa_address_book_externq_init(LibBalsaAddressBookExtern * ab)
+libbalsa_address_book_extern_init(LibBalsaAddressBookExtern * ab)
 {
     ab->load = NULL;
     ab->save = NULL;
@@ -161,13 +152,13 @@ libbalsa_address_book_externq_init(LibBalsaAddressBookExtern * ab)
 static void
 libbalsa_address_book_externq_finalize(GObject * object)
 {
-    LibBalsaAddressBookExtern *addr_externq;
+    LibBalsaAddressBookExtern *addr_extern;
 
-    addr_externq = LIBBALSA_ADDRESS_BOOK_EXTERN(object);
+    addr_extern = LIBBALSA_ADDRESS_BOOK_EXTERN(object);
 
-    g_free(addr_externq->load);
-    g_free(addr_externq->save);
-    g_list_free_full(addr_externq->address_list, g_object_unref);
+    g_free(addr_extern->load);
+    g_free(addr_extern->save);
+    g_list_free_full(addr_extern->address_list, g_object_unref);
 
     G_OBJECT_CLASS(parent_class)->finalize(object);
 }
@@ -203,7 +194,7 @@ lbe_load_cb(const gchar *email, const gchar *name, void *data)
     struct lbe_load_data *d = (struct lbe_load_data*)data;
     LibBalsaAddress *address = libbalsa_address_new();
 
-    /* The externq database doesn't support Id's, sorry! */
+    /* The extern database doesn't support Id's, sorry! */
     address->nick_name = g_strdup(_("No-Id"));
     address->address_list = g_list_append(address->address_list,
                                           g_strdup(email));
@@ -222,15 +213,15 @@ libbalsa_address_book_externq_load(LibBalsaAddressBook * ab,
 {
     gboolean rc = TRUE;
     struct lbe_load_data data;
-    LibBalsaAddressBookExtern *addr_externq = LIBBALSA_ADDRESS_BOOK_EXTERN(ab);
+    LibBalsaAddressBookExtern *addr_extern = LIBBALSA_ADDRESS_BOOK_EXTERN(ab);
 
     /* Erase the current address list */
-    libbalsa_clear_list(&addr_externq->address_list, g_object_unref);
+    libbalsa_clear_list(&addr_extern->address_list, g_object_unref);
     if(callback) {
         data.ab = ab;
         data.callback = callback;
         data.closure  = closure;
-        rc = parse_externq_file(addr_externq,
+        rc = parse_extern_file(addr_extern,
                                 " ", lbe_load_cb, &data);
         callback(ab, NULL, closure);
     }
@@ -238,7 +229,7 @@ libbalsa_address_book_externq_load(LibBalsaAddressBook * ab,
 }
 
 static gboolean
-parse_externq_file(LibBalsaAddressBookExtern *addr_externq,
+parse_extern_file(LibBalsaAddressBookExtern *addr_extern,
                    gchar *pattern,
                    void (*cb)(const gchar *, const gchar *, void*),
                    void *data)
@@ -250,7 +241,7 @@ parse_externq_file(LibBalsaAddressBookExtern *addr_externq,
 
     /* Start the program */
     g_snprintf(command, sizeof(command), "%s \"%s\"", 
-               addr_externq->load, pattern);
+               addr_extern->load, pattern);
     
     gc = popen(command,"r");
 
@@ -325,7 +316,7 @@ libbalsa_address_book_externq_modify_address(LibBalsaAddressBook *ab,
 }
 
 static void
-libbalsa_address_book_externq_save_config(LibBalsaAddressBook * ab,
+libbalsa_address_book_extern_save_config(LibBalsaAddressBook * ab,
                                           const gchar * prefix)
 {
     LibBalsaAddressBookExtern *vc;
@@ -372,7 +363,7 @@ lbe_expand_cb(const gchar *email, const gchar *name, void *d)
 }
 
 static GList*
-libbalsa_address_book_externq_alias_complete(LibBalsaAddressBook * ab,
+libbalsa_address_book_extern_alias_complete(LibBalsaAddressBook * ab,
                                              const gchar * prefix)
 {
     LibBalsaAddressBookExtern *ex;
@@ -385,10 +376,46 @@ libbalsa_address_book_externq_alias_complete(LibBalsaAddressBook * ab,
     if (!libbalsa_address_book_get_expand_aliases(ab))
        return NULL;
 
-    if(!parse_externq_file(ex, (gchar *)prefix, lbe_expand_cb, &res))
+    if(!parse_extern_file(ex, (gchar *)prefix, lbe_expand_cb, &res))
         return NULL;
        
     res = g_list_reverse(res);
 
     return res;
 }
+
+/*
+ * Getters
+ */
+
+const gchar *
+libbalsa_address_book_extern_get_load(LibBalsaAddressBookExtern * addr_extern)
+{
+    return addr_extern->load;
+}
+
+const gchar *
+libbalsa_address_book_extern_get_save(LibBalsaAddressBookExtern * addr_extern)
+{
+    return addr_extern->save;
+}
+
+/*
+ * Setters
+ */
+
+void
+libbalsa_address_book_extern_set_load(LibBalsaAddressBookExtern * addr_extern,
+                                      const gchar               * load)
+{
+    g_free(addr_extern->load);
+    addr_extern->load = g_strdup(load);
+}
+
+void
+libbalsa_address_book_extern_set_save(LibBalsaAddressBookExtern * addr_extern,
+                                      const gchar               * save)
+{
+    g_free(addr_extern->save);
+    addr_extern->save = g_strdup(save);
+}
diff --git a/libbalsa/address-book-extern.h b/libbalsa/address-book-extern.h
index 5d137aa..e4e5281 100644
--- a/libbalsa/address-book-extern.h
+++ b/libbalsa/address-book-extern.h
@@ -28,36 +28,28 @@
 #include "address-book.h"
 #include <time.h>
 
-#define LIBBALSA_TYPE_ADDRESS_BOOK_EXTERN              (libbalsa_address_book_externq_get_type())
-#define LIBBALSA_ADDRESS_BOOK_EXTERN(obj)              (G_TYPE_CHECK_INSTANCE_CAST (obj, 
LIBBALSA_TYPE_ADDRESS_BOOK_EXTERN, LibBalsaAddressBookExtern))
-#define LIBBALSA_ADDRESS_BOOK_EXTERN_CLASS(klass)      (G_TYPE_CHECK_CLASS_CAST (klass, 
LIBBALSA_TYPE_ADDRESS_BOOK_EXTERN, LibBalsaAddressBookExternClass))
-#define LIBBALSA_IS_ADDRESS_BOOK_EXTERN(obj)           (G_TYPE_CHECK_INSTANCE_TYPE (obj, 
LIBBALSA_TYPE_ADDRESS_BOOK_EXTERN))
-#define LIBBALSA_IS_ADDRESS_BOOK_EXTERN_CLASS(klass)   (G_TYPE_CHECK_CLASS_TYPE (klass, 
LIBBALSA_TYPE_ADDRESS_BOOK_EXTERN))
-
-typedef struct _LibBalsaAddressBookExtern LibBalsaAddressBookExtern;
-typedef struct _LibBalsaAddressBookExternClass
-    LibBalsaAddressBookExternClass;
-
-struct _LibBalsaAddressBookExtern {
-    LibBalsaAddressBook parent;
-
-    gchar *load;
-    gchar *save;
-
-    GList *address_list;
-
-    time_t mtime;
-};
-
-struct _LibBalsaAddressBookExternClass {
-    LibBalsaAddressBookClass parent_class;
-};
-
-GType libbalsa_address_book_externq_get_type(void);
+#define LIBBALSA_TYPE_ADDRESS_BOOK_EXTERN (libbalsa_address_book_extern_get_type())
+G_DECLARE_FINAL_TYPE(LibBalsaAddressBookExtern, libbalsa_address_book_extern,
+        LIBBALSA, ADDRESS_BOOK_EXTERN, LibBalsaAddressBook)
 
 LibBalsaAddressBook *libbalsa_address_book_externq_new(const gchar * name,
                                                        const gchar * load,
                                                        const char * save);
 
+/*
+ * Getters
+ */
+const gchar
+    *libbalsa_address_book_extern_get_load(LibBalsaAddressBookExtern * addr_extern);
+const gchar
+    *libbalsa_address_book_extern_get_save(LibBalsaAddressBookExtern * addr_extern);
+
+/*
+ * Setters
+ */
+void libbalsa_address_book_extern_set_load(LibBalsaAddressBookExtern * addr_extern,
+                                           const gchar               * load);
+void libbalsa_address_book_extern_set_save(LibBalsaAddressBookExtern * addr_extern,
+                                           const gchar               * save);
 
 #endif
diff --git a/src/address-book-config.c b/src/address-book-config.c
index fc91669..d113780 100644
--- a/src/address-book-config.c
+++ b/src/address-book-config.c
@@ -460,10 +460,10 @@ create_externq_dialog(AddressBookConfig * abc)
     if (ab) {
         gtk_file_chooser_set_filename(GTK_FILE_CHOOSER
                                       (abc->ab_specific.externq.load),
-                                      ab->load);
+                                      libbalsa_address_book_extern_get_load(ab));
         gtk_file_chooser_set_filename(GTK_FILE_CHOOSER
                                       (abc->ab_specific.externq.save),
-                                      ab->save);
+                                      libbalsa_address_book_extern_get_save(ab));
     }
 
     dialog = create_generic_dialog(abc, "Extern");
@@ -800,12 +800,12 @@ modify_book(AddressBookConfig * abc)
 
         externq = LIBBALSA_ADDRESS_BOOK_EXTERN(address_book);
         if (load) {
-            g_free(externq->load);
-            externq->load = load;;
+            libbalsa_address_book_extern_set_load(externq, load);
+            g_free(load);
         }
         if (save) {
-            g_free(externq->save);
-            externq->save = save;
+            libbalsa_address_book_extern_set_save(externq, save);
+            g_free(save);
         }
 #ifdef ENABLE_LDAP
     } else if (abc->type == LIBBALSA_TYPE_ADDRESS_BOOK_LDAP) {


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