[bijiben] own-cloud-provider: Port to G_DECLARE_FINAL_TYPE



commit dce34a16d9ecdfd5711ca9c390ed526ea61020cb
Author: Isaque Galdino <igaldino gmail com>
Date:   Wed Jan 10 17:05:24 2018 -0200

    own-cloud-provider: Port to G_DECLARE_FINAL_TYPE
    
    * Use G_DECLARE_FINAL_TYPE to avoid boilerplate code
    * Don't use private members.
      This class isn't derivable. So there isn't any difference.
    
    This is a part of effort to clean up codebase and make the code more maintainable.
    
    https://bugzilla.gnome.org/show_bug.cgi?id=789696

 src/libbiji/provider/biji-own-cloud-provider.c |  160 +++++++++++-------------
 src/libbiji/provider/biji-own-cloud-provider.h |   29 +----
 2 files changed, 77 insertions(+), 112 deletions(-)
---
diff --git a/src/libbiji/provider/biji-own-cloud-provider.c b/src/libbiji/provider/biji-own-cloud-provider.c
index d528a51..6d6d5a7 100644
--- a/src/libbiji/provider/biji-own-cloud-provider.c
+++ b/src/libbiji/provider/biji-own-cloud-provider.c
@@ -55,8 +55,10 @@ static GParamSpec *properties[OCLOUD_PROV_PROP] = { NULL, };
  * todo: monitor, cancel monitor
  */
 
-struct BijiOwnCloudProviderPrivate_
+struct _BijiOwnCloudProvider
 {
+  BijiProvider     parent_instance;
+
   BijiProviderInfo info;
 
   GoaObject        *object;
@@ -128,20 +130,20 @@ biji_own_cloud_provider_finalize (GObject *object)
   g_return_if_fail (BIJI_IS_OWN_CLOUD_PROVIDER (object));
   self = BIJI_OWN_CLOUD_PROVIDER (object);
 
-  if (self->priv->path != NULL)
-    g_free (self->priv->path);
+  if (self->path != NULL)
+    g_free (self->path);
 
-  g_clear_object (&self->priv->account);
-  g_clear_object (&self->priv->object);
-  g_clear_object (&self->priv->info.icon);
-  g_clear_object (&self->priv->folder);
+  g_clear_object (&self->account);
+  g_clear_object (&self->object);
+  g_clear_object (&self->info.icon);
+  g_clear_object (&self->folder);
 
-  g_clear_pointer (&self->priv->info.name, g_free);
-  g_clear_pointer (&self->priv->info.datasource, g_free);
+  g_clear_pointer (&self->info.name, g_free);
+  g_clear_pointer (&self->info.datasource, g_free);
 
-  g_queue_free_full (self->priv->queue, g_object_unref);
-  g_hash_table_unref (self->priv->notes);
-  g_hash_table_unref (self->priv->tracker);
+  g_queue_free_full (self->queue, g_object_unref);
+  g_hash_table_unref (self->notes);
+  g_hash_table_unref (self->tracker);
 
   G_OBJECT_CLASS (biji_own_cloud_provider_parent_class)->finalize (object);
 }
@@ -169,7 +171,7 @@ create_note_from_item (BijiOCloudItem *item)
   BijiNoteObj *note;
   GdkRGBA color;
   BijiManager *manager;
-  gboolean online = (item->self->priv->mount != NULL);
+  gboolean online = (item->self->mount != NULL);
 
   manager = biji_provider_get_manager (BIJI_PROVIDER (item->self));
 
@@ -179,7 +181,7 @@ create_note_from_item (BijiOCloudItem *item)
                                             online);
   biji_manager_get_default_color (manager, &color);
   biji_note_obj_set_rgba (note, &color);
-  g_hash_table_replace (item->self->priv->notes,
+  g_hash_table_replace (item->self->notes,
                         item->set.url,
                         note);
 }
@@ -302,11 +304,11 @@ handle_next_item (BijiOwnCloudProvider *self)
   BijiOCloudItem *item;
   GList *list;
 
-  item = g_queue_pop_head (self->priv->queue);
+  item = g_queue_pop_head (self->queue);
 
   if (item != NULL)
   {
-    g_hash_table_remove (self->priv->tracker, item->set.url);
+    g_hash_table_remove (self->tracker, item->set.url);
 
     biji_tracker_check_for_info (biji_provider_get_manager (BIJI_PROVIDER (self)),
                                  item->set.url,
@@ -319,13 +321,13 @@ handle_next_item (BijiOwnCloudProvider *self)
   else
   {
     /* Post load tracker db clean-up */
-    list = g_hash_table_get_values (self->priv->tracker);
+    list = g_hash_table_get_values (self->tracker);
     g_list_foreach (list, trash, self);
     g_list_free (list);
 
 
     /* Now simply provide data to controller */
-    list = g_hash_table_get_values (self->priv->notes);
+    list = g_hash_table_get_values (self->notes);
     BIJI_PROVIDER_GET_CLASS (self)->notify_loaded (BIJI_PROVIDER (self), list, BIJI_LIVING_ITEMS);
     g_list_free (list);
   }
@@ -370,20 +372,20 @@ enumerate_next_files_ready_cb (GObject *source,
     item = o_cloud_item_new (self);
     item->set.title = g_strdup (g_file_info_get_name (info));
     item->set.url = g_build_filename
-      (g_file_get_parse_name (self->priv->folder),
+      (g_file_get_parse_name (self->folder),
        "/", item->set.title, NULL);
 
     g_file_info_get_modification_time (info, &time);
     item->set.mtime = time.tv_sec;
     item->set.created = g_file_info_get_attribute_uint64 (info, "time:created");
-    item->set.datasource_urn = g_strdup (self->priv->info.datasource);
+    item->set.datasource_urn = g_strdup (self->info.datasource);
 
-    if (self->priv->mount == NULL) /* offline (synced mode) */
+    if (self->mount == NULL) /* offline (synced mode) */
       item->file = g_file_new_for_path (item->set.url);
     else                          /* online (webdav) */
       item->file = g_file_new_for_uri (item->set.url);
 
-    g_queue_push_head (self->priv->queue, item);
+    g_queue_push_head (self->queue, item);
   }
 
   // TODO - create the dir monitor
@@ -457,14 +459,14 @@ on_notes_mined (GObject       *source_object,
   {
     while (tracker_sparql_cursor_next (cursor, NULL, NULL))
     {
-      g_hash_table_insert (self->priv->tracker,
+      g_hash_table_insert (self->tracker,
                            g_strdup (tracker_sparql_cursor_get_string (cursor, 0, NULL)),
                            g_strdup (tracker_sparql_cursor_get_string (cursor, 1, NULL)));
 
     }
   }
 
-  g_file_enumerate_children_async (self->priv->folder,
+  g_file_enumerate_children_async (self->folder,
                                    "standard::name,time::modified,time::created", 0,
                                    G_PRIORITY_DEFAULT,
                                    NULL,
@@ -519,11 +521,10 @@ static void
 handle_mount (BijiOwnCloudProvider *self)
 {
   GFile *root;
-       BijiOwnCloudProviderPrivate *priv = self->priv;
 
   root = NULL;
-  if (G_IS_MOUNT (priv->mount))
-    root = g_mount_get_root (priv->mount);
+  if (G_IS_MOUNT (self->mount))
+    root = g_mount_get_root (self->mount);
 
 
   if (G_IS_FILE (root))
@@ -531,16 +532,16 @@ handle_mount (BijiOwnCloudProvider *self)
     /* OwnCloud Notes folder is not localized.
      * https://github.com/owncloud/notes/issues/7 */
 
-    priv->folder = g_file_get_child (root, "Notes");
-    g_file_make_directory (priv->folder, NULL, NULL);
-    priv->monitor = g_file_monitor_directory
-      (self->priv->folder, G_FILE_MONITOR_NONE, NULL, NULL); // cancel, error
+    self->folder = g_file_get_child (root, "Notes");
+    g_file_make_directory (self->folder, NULL, NULL);
+    self->monitor = g_file_monitor_directory
+      (self->folder, G_FILE_MONITOR_NONE, NULL, NULL); // cancel, error
 
 
     g_object_unref (root);
     biji_tracker_ensure_datasource (
       biji_provider_get_manager (BIJI_PROVIDER (self)),
-      self->priv->info.datasource,
+      self->info.datasource,
       MINER_ID,
       mine_notes,
       self);
@@ -565,7 +566,7 @@ on_owncloud_volume_mounted (GObject *source_object,
   self = BIJI_OWN_CLOUD_PROVIDER (user_data);
 
   /* bug #701021 makes this fail */
-  g_volume_mount_finish (self->priv->volume, res, &error);
+  g_volume_mount_finish (self->volume, res, &error);
 
   if (error != NULL)
   {
@@ -575,9 +576,9 @@ on_owncloud_volume_mounted (GObject *source_object,
     return;
   }
 
-  self->priv->mount = g_volume_get_mount (self->priv->volume);
+  self->mount = g_volume_get_mount (self->volume);
 
-  if (!G_IS_MOUNT (self->priv->mount))
+  if (!G_IS_MOUNT (self->mount))
   {
     g_warning ("OwnCloud Provider : !G_IS_MOUNT");
     biji_provider_abort (BIJI_PROVIDER (self));
@@ -598,34 +599,34 @@ get_mount (BijiOwnCloudProvider *self)
 
   monitor = g_volume_monitor_get ();
 
-  if (!GOA_IS_OBJECT (self->priv->object))
+  if (!GOA_IS_OBJECT (self->object))
   {
     biji_provider_abort (BIJI_PROVIDER (self));
     return;
   }
 
-  files = goa_object_peek_files (self->priv->object);
+  files = goa_object_peek_files (self->object);
 
   if (GOA_IS_FILES (files))
   {
     uri = goa_files_get_uri  (files);
-    self->priv->path = g_strdup_printf ("%sNotes", uri);
-    self->priv->volume = g_volume_monitor_get_volume_for_uuid (monitor, uri);
-    self->priv->mount = g_volume_get_mount (self->priv->volume);
+    self->path = g_strdup_printf ("%sNotes", uri);
+    self->volume = g_volume_monitor_get_volume_for_uuid (monitor, uri);
+    self->mount = g_volume_get_mount (self->volume);
 
 
-    if (self->priv->mount != NULL &&
-        G_IS_MOUNT (self->priv->mount))
+    if (self->mount != NULL &&
+        G_IS_MOUNT (self->mount))
     {
       handle_mount (self);
     }
 
 
     /* not already mounted. no matter, we mount. in theory. */
-    //else if (self->priv->mount == NULL)
+    //else if (self->mount == NULL)
     else
     {
-      g_volume_mount (self->priv->volume,
+      g_volume_mount (self->volume,
                       G_MOUNT_MOUNT_NONE,
                       NULL,
                       NULL,
@@ -656,7 +657,6 @@ on_owncloudclient_read (GObject *source_object,
                         gpointer user_data)
 {
   BijiOwnCloudProvider *self = user_data;
-  BijiOwnCloudProviderPrivate *priv = self->priv;
   GFileInputStream *stream;
        GDataInputStream *reader;
   GError           *error = NULL;
@@ -707,20 +707,20 @@ on_owncloudclient_read (GObject *source_object,
   g_string_erase (string, 0, 10); // localPath=
 
   /* ok we have the path. Now create the notes */
-  priv->path = g_build_filename (string->str, "Notes", NULL);
-  priv->folder = g_file_new_for_path (priv->path);
-  g_file_make_directory (priv->folder, NULL, &error);
+  self->path = g_build_filename (string->str, "Notes", NULL);
+  self->folder = g_file_new_for_path (self->path);
+  g_file_make_directory (self->folder, NULL, &error);
 
 
   if (error)
   {
     /* This error is not a blocker - the file may already exist. */
-    g_message ("Cannot create %s - %s", priv->path, error->message);
+    g_message ("Cannot create %s - %s", self->path, error->message);
 
     /* if so, just print the message and go on */
     if (error->code == G_IO_ERROR_EXISTS)
     {
-      g_file_enumerate_children_async (priv->folder,
+      g_file_enumerate_children_async (self->folder,
           "standard::name,time::modified,time::created", 0,
           G_PRIORITY_DEFAULT,
           NULL,
@@ -731,7 +731,7 @@ on_owncloudclient_read (GObject *source_object,
     /* if the creation really failed, fall back to webdav */
     else
     {
-      g_warning ("Cannot create %s - trying webdav", priv->path);
+      g_warning ("Cannot create %s - trying webdav", self->path);
       get_mount (self);
     }
 
@@ -753,7 +753,6 @@ static void
 biji_own_cloud_provider_constructed (GObject *obj)
 {
   BijiOwnCloudProvider *self;
-  BijiOwnCloudProviderPrivate *priv;
   GError *error;
   GIcon *icon;
   gchar *owncloudclient;
@@ -762,40 +761,38 @@ biji_own_cloud_provider_constructed (GObject *obj)
   G_OBJECT_CLASS (biji_own_cloud_provider_parent_class)->constructed (obj);
 
   self = BIJI_OWN_CLOUD_PROVIDER (obj);
-  priv = self->priv;
-
 
-  if (!GOA_IS_OBJECT (priv->object))
+  if (!GOA_IS_OBJECT (self->object))
   {
    biji_provider_abort (BIJI_PROVIDER (self));
    return;
   }
 
-  priv->account = goa_object_get_account (priv->object);
+  self->account = goa_object_get_account (self->object);
 
-  if (priv->account != NULL)
+  if (self->account != NULL)
   {
 
-    priv->info.unique_id = goa_account_get_id (priv->account);
-    priv->info.datasource = g_strdup_printf ("gn:goa-account:%s",
-                                             priv->info.unique_id);
-    priv->info.name = g_strdup (goa_account_get_provider_name (priv->account));
+    self->info.unique_id = goa_account_get_id (self->account);
+    self->info.datasource = g_strdup_printf ("gn:goa-account:%s",
+                                             self->info.unique_id);
+    self->info.name = g_strdup (goa_account_get_provider_name (self->account));
 
     error = NULL;
-    icon = g_icon_new_for_string (goa_account_get_provider_icon (priv->account),
+    icon = g_icon_new_for_string (goa_account_get_provider_icon (self->account),
                                   &error);
     if (error)
     {
       g_warning ("%s", error->message);
       g_error_free (error);
-      priv->info.icon = NULL;
+      self->info.icon = NULL;
     }
 
     else
     {
-      priv->info.icon = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_INVALID);
-      gtk_image_set_pixel_size (GTK_IMAGE (priv->info.icon), 48);
-      g_object_ref_sink (priv->info.icon);
+      self->info.icon = gtk_image_new_from_gicon (icon, GTK_ICON_SIZE_INVALID);
+      gtk_image_set_pixel_size (GTK_IMAGE (self->info.icon), 48);
+      g_object_ref_sink (self->info.icon);
     }
 
     g_object_unref (icon);
@@ -834,14 +831,9 @@ ocloud_prov_load_archives (BijiProvider *provider)
 static void
 biji_own_cloud_provider_init (BijiOwnCloudProvider *self)
 {
-  self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, BIJI_TYPE_OWN_CLOUD_PROVIDER, BijiOwnCloudProviderPrivate);
-
-
-  self->priv->notes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
-  self->priv->tracker = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
-  self->priv->queue = g_queue_new ();
-  self->priv->path = NULL;
-  self->priv->folder = NULL;
+  self->notes = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
+  self->tracker = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
+  self->queue = g_queue_new ();
 }
 
 
@@ -857,7 +849,7 @@ biji_own_cloud_provider_set_property (GObject      *object,
   switch (property_id)
     {
     case PROP_GOA_OBJECT:
-      self->priv->object = g_value_dup_object (value);
+      self->object = g_value_dup_object (value);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -876,7 +868,7 @@ biji_own_cloud_provider_get_property (GObject    *object,
   switch (property_id)
     {
     case PROP_GOA_OBJECT:
-      g_value_set_object (value, self->priv->object);
+      g_value_set_object (value, self->object);
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -891,7 +883,7 @@ own_cloud_get_info       (BijiProvider *provider)
   BijiOwnCloudProvider *self;
 
   self = BIJI_OWN_CLOUD_PROVIDER (provider);
-  return &(self->priv->info);
+  return &(self->info);
 }
 
 
@@ -920,7 +912,7 @@ own_cloud_create_note (BijiProvider *provider,
                   self,
        biji_provider_get_manager (provider),
        &info,
-       (self->priv->mount != NULL));
+       (self->mount != NULL));
 }
 
 
@@ -943,7 +935,7 @@ own_cloud_create_full (BijiProvider  *provider,
   self = BIJI_OWN_CLOUD_PROVIDER (provider);
   manager = biji_provider_get_manager (provider);
 
-  retval = biji_own_cloud_note_new_from_info (self, manager, info, (self->priv->mount != NULL));
+  retval = biji_own_cloud_note_new_from_info (self, manager, info, (self->mount != NULL));
   biji_note_obj_set_html (retval, html);
 
   /* We do not use suggested color.
@@ -958,9 +950,9 @@ own_cloud_create_full (BijiProvider  *provider,
 
 
 GFile *
-biji_own_cloud_provider_get_folder     (BijiOwnCloudProvider *provider)
+biji_own_cloud_provider_get_folder     (BijiOwnCloudProvider *self)
 {
-  return provider->priv->folder;
+  return self->folder;
 }
 
 
@@ -991,8 +983,6 @@ biji_own_cloud_provider_class_init (BijiOwnCloudProviderClass *klass)
                         G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY);
 
   g_object_class_install_properties (g_object_class, OCLOUD_PROV_PROP, properties);
-
-  g_type_class_add_private ((gpointer)klass, sizeof (BijiOwnCloudProviderPrivate));
 }
 
 
@@ -1008,7 +998,7 @@ biji_own_cloud_provider_new (BijiManager *manager,
 
 
 gchar *
-biji_own_cloud_provider_get_readable_path (BijiOwnCloudProvider *p)
+biji_own_cloud_provider_get_readable_path (BijiOwnCloudProvider *self)
 {
-  return p->priv->path;
+  return self->path;
 }
diff --git a/src/libbiji/provider/biji-own-cloud-provider.h b/src/libbiji/provider/biji-own-cloud-provider.h
index 57f8c34..e301064 100644
--- a/src/libbiji/provider/biji-own-cloud-provider.h
+++ b/src/libbiji/provider/biji-own-cloud-provider.h
@@ -21,34 +21,9 @@
 
 G_BEGIN_DECLS
 
+#define BIJI_TYPE_OWN_CLOUD_PROVIDER (biji_own_cloud_provider_get_type ())
 
-#define BIJI_TYPE_OWN_CLOUD_PROVIDER             (biji_own_cloud_provider_get_type ())
-#define BIJI_OWN_CLOUD_PROVIDER(obj)             (G_TYPE_CHECK_INSTANCE_CAST ((obj), 
BIJI_TYPE_OWN_CLOUD_PROVIDER, BijiOwnCloudProvider))
-#define BIJI_OWN_CLOUD_PROVIDER_CLASS(klass)     (G_TYPE_CHECK_CLASS_CAST ((klass), 
BIJI_TYPE_OWN_CLOUD_PROVIDER, BijiOwnCloudProviderClass))
-#define BIJI_IS_OWN_CLOUD_PROVIDER(obj)          (G_TYPE_CHECK_INSTANCE_TYPE ((obj), 
BIJI_TYPE_OWN_CLOUD_PROVIDER))
-#define BIJI_IS_OWN_CLOUD_PROVIDER_CLASS(klass)  (G_TYPE_CHECK_CLASS_TYPE ((klass), 
BIJI_TYPE_OWN_CLOUD_PROVIDER))
-#define BIJI_OWN_CLOUD_PROVIDER_GET_CLASS(obj)   (G_TYPE_INSTANCE_GET_CLASS ((obj), 
BIJI_TYPE_OWN_CLOUD_PROVIDER, BijiOwnCloudProviderClass))
-
-typedef struct BijiOwnCloudProvider_         BijiOwnCloudProvider;
-typedef struct BijiOwnCloudProviderClass_    BijiOwnCloudProviderClass;
-typedef struct BijiOwnCloudProviderPrivate_  BijiOwnCloudProviderPrivate;
-
-struct BijiOwnCloudProvider_
-{
-  BijiProvider parent;
-  BijiOwnCloudProviderPrivate *priv;
-};
-
-
-struct BijiOwnCloudProviderClass_
-{
-  BijiProviderClass parent_class;
-};
-
-
-GType             biji_own_cloud_provider_get_type      (void);
-
-
+G_DECLARE_FINAL_TYPE (BijiOwnCloudProvider, biji_own_cloud_provider, BIJI, OWN_CLOUD_PROVIDER, BijiProvider)
 
 BijiProvider     *biji_own_cloud_provider_new           (BijiManager *manager,
                                                          GoaObject *object);


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