[gnome-bluetooth/wip/hadess/cleanups: 15/24] lib: Simplify BluetoothChooserCombo object declaration




commit 61b3a0b17f21390308edc936532b386216a262e0
Author: Bastien Nocera <hadess hadess net>
Date:   Wed Feb 10 17:25:38 2021 +0100

    lib: Simplify BluetoothChooserCombo object declaration

 lib/bluetooth-chooser-combo.c | 150 +++++++++++++++++++-----------------------
 lib/bluetooth-chooser-combo.h |  33 +---------
 2 files changed, 72 insertions(+), 111 deletions(-)
---
diff --git a/lib/bluetooth-chooser-combo.c b/lib/bluetooth-chooser-combo.c
index 6903e836..25800e0d 100644
--- a/lib/bluetooth-chooser-combo.c
+++ b/lib/bluetooth-chooser-combo.c
@@ -38,7 +38,9 @@
 #include "bluetooth-chooser-private.h"
 #include "bluetooth-utils.h"
 
-struct _BluetoothChooserComboPrivate {
+struct _BluetoothChooserCombo {
+       GtkWidget          parent;
+
        GtkWidget         *chooser;
        GtkWidget         *drop_box;
        GtkWidget         *drop;
@@ -62,55 +64,47 @@ enum {
 
 static int signals[LAST_SIGNAL] = { 0 };
 
-static void    bluetooth_chooser_combo_class_init      (BluetoothChooserComboClass * klass);
-static void    bluetooth_chooser_combo_init            (BluetoothChooserCombo      * combo);
-
-static GtkBoxClass *parent_class;
-
 G_DEFINE_TYPE(BluetoothChooserCombo, bluetooth_chooser_combo, GTK_TYPE_BOX);
 
-#define BLUETOOTH_CHOOSER_COMBO_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), \
-                                                                       BLUETOOTH_TYPE_CHOOSER_COMBO, 
BluetoothChooserComboPrivate))
-
 static void
 bluetooth_chooser_combo_set_device (BluetoothChooserCombo *combo,
                                    const char *bdaddr)
 {
-       if (bdaddr == NULL || combo->priv->model == NULL) {
-               g_free (combo->priv->bdaddr);
-               gtk_widget_set_sensitive (combo->priv->drop_box, FALSE);
+       if (bdaddr == NULL || combo->model == NULL) {
+               g_free (combo->bdaddr);
+               gtk_widget_set_sensitive (combo->drop_box, FALSE);
        } else {
                GtkTreeIter iter;
                gboolean cont = FALSE;
 
-               gtk_widget_set_sensitive (combo->priv->drop_box, TRUE);
+               gtk_widget_set_sensitive (combo->drop_box, TRUE);
 
-               g_free (combo->priv->bdaddr);
+               g_free (combo->bdaddr);
                if (g_strcmp0 (BLUETOOTH_CHOOSER_COMBO_FIRST_DEVICE, bdaddr) != 0)
-                       combo->priv->bdaddr = g_strdup (bdaddr);
+                       combo->bdaddr = g_strdup (bdaddr);
                else
-                       combo->priv->bdaddr = NULL;
+                       combo->bdaddr = NULL;
 
-               cont = gtk_tree_model_iter_children (combo->priv->model, &iter, NULL);
+               cont = gtk_tree_model_iter_children (combo->model, &iter, NULL);
                while (cont == TRUE) {
                        char *value;
 
-                       gtk_tree_model_get (GTK_TREE_MODEL (combo->priv->model), &iter,
+                       gtk_tree_model_get (GTK_TREE_MODEL (combo->model), &iter,
                                            BLUETOOTH_COLUMN_ADDRESS, &value, -1);
 
-                       if (combo->priv->bdaddr == NULL) {
-                               gtk_tree_selection_select_iter (combo->priv->selection, &iter);
-                               combo->priv->bdaddr = value;
+                       if (combo->bdaddr == NULL) {
+                               gtk_tree_selection_select_iter (combo->selection, &iter);
+                               combo->bdaddr = value;
                                break;
                        }
 
                        if (g_ascii_strcasecmp(bdaddr, value) == 0) {
-                               gtk_tree_selection_select_iter (combo->priv->selection, &iter);
+                               gtk_tree_selection_select_iter (combo->selection, &iter);
                                g_free (value);
                                break;
                        }
                        g_free (value);
-                       cont = gtk_tree_model_iter_next (GTK_TREE_MODEL (combo->priv->model), &iter);
+                       cont = gtk_tree_model_iter_next (GTK_TREE_MODEL (combo->model), &iter);
                }
        }
        g_object_notify (G_OBJECT (combo), "device");
@@ -121,23 +115,23 @@ bluetooth_chooser_combo_dispose (GObject *object)
 {
        BluetoothChooserCombo *combo = BLUETOOTH_CHOOSER_COMBO (object);
 
-       if (combo->priv->model_notify_id != 0) {
+       if (combo->model_notify_id != 0) {
                GtkWidget *treeview;
 
-               treeview = bluetooth_chooser_get_treeview (BLUETOOTH_CHOOSER (combo->priv->chooser));
-               g_signal_handler_disconnect (treeview, combo->priv->model_notify_id);
-               combo->priv->model_notify_id = 0;
+               treeview = bluetooth_chooser_get_treeview (BLUETOOTH_CHOOSER (combo->chooser));
+               g_signal_handler_disconnect (treeview, combo->model_notify_id);
+               combo->model_notify_id = 0;
        }
-       if (combo->priv->model != NULL) {
-               g_object_unref (combo->priv->model);
-               combo->priv->model = NULL;
+       if (combo->model != NULL) {
+               g_object_unref (combo->model);
+               combo->model = NULL;
        }
-       if (combo->priv->chooser != NULL) {
-               g_object_unref (combo->priv->chooser);
-               combo->priv->chooser = NULL;
+       if (combo->chooser != NULL) {
+               g_object_unref (combo->chooser);
+               combo->chooser = NULL;
        }
 
-       G_OBJECT_CLASS (parent_class)->dispose (object);
+       G_OBJECT_CLASS (bluetooth_chooser_combo_parent_class)->dispose (object);
 }
 
 static void
@@ -168,10 +162,10 @@ bluetooth_chooser_combo_get_property (GObject *object, guint property_id, GValue
 
        switch (property_id) {
        case PROP_CHOOSER:
-               g_value_set_object (value, combo->priv->chooser);
+               g_value_set_object (value, combo->chooser);
                break;
        case PROP_DEVICE:
-               g_value_set_string (value, combo->priv->bdaddr);
+               g_value_set_string (value, combo->bdaddr);
                break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
@@ -183,14 +177,10 @@ bluetooth_chooser_combo_class_init (BluetoothChooserComboClass *klass)
 {
        GObjectClass *object_class = G_OBJECT_CLASS (klass);
 
-       parent_class = g_type_class_peek_parent (klass);
-
        object_class->dispose = bluetooth_chooser_combo_dispose;
        object_class->set_property = bluetooth_chooser_combo_set_property;
        object_class->get_property = bluetooth_chooser_combo_get_property;
 
-       g_type_class_add_private(klass, sizeof(BluetoothChooserComboPrivate));
-
        /**
         * BluetoothChooserCombo::chooser-created:
         * @self: a #BluetoothChooserCombo widget
@@ -204,7 +194,7 @@ bluetooth_chooser_combo_class_init (BluetoothChooserComboClass *klass)
                g_signal_new ("chooser-created",
                              G_TYPE_FROM_CLASS (klass),
                              G_SIGNAL_RUN_LAST,
-                             G_STRUCT_OFFSET (BluetoothChooserComboClass, chooser_created),
+                             0,
                              NULL, NULL,
                              g_cclosure_marshal_VOID__OBJECT,
                              G_TYPE_NONE, 1, G_TYPE_OBJECT);
@@ -236,12 +226,12 @@ treeview_model_notify_cb (GObject    *gobject,
        GtkTreeModel *model;
 
        g_object_get (gobject, "model", &model, NULL);
-       gtk_combo_box_set_model (GTK_COMBO_BOX (combo->priv->drop), model);
-       if (combo->priv->model != NULL) {
-               g_object_unref (combo->priv->model);
-               combo->priv->model = NULL;
+       gtk_combo_box_set_model (GTK_COMBO_BOX (combo->drop), model);
+       if (combo->model != NULL) {
+               g_object_unref (combo->model);
+               combo->model = NULL;
        }
-       combo->priv->model = model;
+       combo->model = model;
 }
 
 static void
@@ -252,19 +242,19 @@ treeview_selection_changed_cb (GtkTreeSelection *treeselection,
        GtkTreeIter iter;
        char *value = NULL;
 
-       if (gtk_tree_selection_get_selected (combo->priv->selection, NULL, &iter)) {
-               gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo->priv->drop), &iter);
-               if (combo->priv->model != NULL)
-                       gtk_tree_model_get (GTK_TREE_MODEL (combo->priv->model), &iter,
+       if (gtk_tree_selection_get_selected (combo->selection, NULL, &iter)) {
+               gtk_combo_box_set_active_iter (GTK_COMBO_BOX (combo->drop), &iter);
+               if (combo->model != NULL)
+                       gtk_tree_model_get (GTK_TREE_MODEL (combo->model), &iter,
                                            BLUETOOTH_COLUMN_ADDRESS, &value, -1);
        } else {
-               if (combo->priv->model != NULL)
-                       gtk_combo_box_set_active (GTK_COMBO_BOX (combo->priv->drop), -1);
+               if (combo->model != NULL)
+                       gtk_combo_box_set_active (GTK_COMBO_BOX (combo->drop), -1);
        }
 
-       if (g_strcmp0 (combo->priv->bdaddr, value) != 0) {
-               g_free (combo->priv->bdaddr);
-               combo->priv->bdaddr = value;
+       if (g_strcmp0 (combo->bdaddr, value) != 0) {
+               g_free (combo->bdaddr);
+               combo->bdaddr = value;
                g_object_notify (G_OBJECT (combo), "device");
        } else {
                g_free (value);
@@ -280,18 +270,18 @@ drop_changed_cb (GtkComboBox *widget,
        char *value = NULL;
 
        if (gtk_combo_box_get_active_iter (widget, &iter)) {
-               gtk_tree_selection_select_iter (combo->priv->selection, &iter);
-               if (combo->priv->model != NULL)
-                       gtk_tree_model_get (GTK_TREE_MODEL (combo->priv->model), &iter,
+               gtk_tree_selection_select_iter (combo->selection, &iter);
+               if (combo->model != NULL)
+                       gtk_tree_model_get (GTK_TREE_MODEL (combo->model), &iter,
                                            BLUETOOTH_COLUMN_ADDRESS, &value, -1);
        } else {
-               if (combo->priv->model != NULL)
-                       gtk_tree_selection_unselect_all (combo->priv->selection);
+               if (combo->model != NULL)
+                       gtk_tree_selection_unselect_all (combo->selection);
        }
 
-       if (g_strcmp0 (combo->priv->bdaddr, value) != 0) {
-               g_free (combo->priv->bdaddr);
-               combo->priv->bdaddr = value;
+       if (g_strcmp0 (combo->bdaddr, value) != 0) {
+               g_free (combo->bdaddr);
+               combo->bdaddr = value;
                g_object_notify (G_OBJECT (combo), "device");
        } else {
                g_free (value);
@@ -304,45 +294,43 @@ bluetooth_chooser_combo_init (BluetoothChooserCombo *combo)
        GtkWidget *treeview;
        GtkCellRenderer *renderer;
 
-       combo->priv = BLUETOOTH_CHOOSER_COMBO_GET_PRIVATE (combo);
-
-       combo->priv->drop_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
-       gtk_box_set_homogeneous (GTK_BOX (combo->priv->drop_box), TRUE);
-       gtk_box_pack_start (GTK_BOX (combo), combo->priv->drop_box,
+       combo->drop_box = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 0);
+       gtk_box_set_homogeneous (GTK_BOX (combo->drop_box), TRUE);
+       gtk_box_pack_start (GTK_BOX (combo), combo->drop_box,
                            TRUE, FALSE, 0);
        /* Setup the combo itself */
-       combo->priv->drop = gtk_combo_box_new ();
-       gtk_box_pack_start (GTK_BOX (combo->priv->drop_box), combo->priv->drop,
+       combo->drop = gtk_combo_box_new ();
+       gtk_box_pack_start (GTK_BOX (combo->drop_box), combo->drop,
                            TRUE, TRUE, 0);
        renderer = gtk_cell_renderer_pixbuf_new ();
-       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo->priv->drop),
+       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo->drop),
                                    renderer,
                                    FALSE);
-       gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo->priv->drop),
+       gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo->drop),
                                        renderer,
                                        "icon-name", BLUETOOTH_COLUMN_ICON,
                                        NULL);
        renderer = gtk_cell_renderer_text_new ();
-       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo->priv->drop),
+       gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo->drop),
                                    renderer,
                                    TRUE);
-       gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo->priv->drop),
+       gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo->drop),
                                        renderer,
                                        "text", BLUETOOTH_COLUMN_ALIAS,
                                        NULL);
 
-       combo->priv->chooser = bluetooth_chooser_new ();
+       combo->chooser = bluetooth_chooser_new ();
 
-       treeview = bluetooth_chooser_get_treeview (BLUETOOTH_CHOOSER (combo->priv->chooser));
-       combo->priv->model_notify_id = g_signal_connect (G_OBJECT (treeview), "notify::model",
+       treeview = bluetooth_chooser_get_treeview (BLUETOOTH_CHOOSER (combo->chooser));
+       combo->model_notify_id = g_signal_connect (G_OBJECT (treeview), "notify::model",
                                                   G_CALLBACK (treeview_model_notify_cb), combo);
        treeview_model_notify_cb (G_OBJECT (treeview), NULL, combo);
-       gtk_combo_box_set_active (GTK_COMBO_BOX (combo->priv->drop), 0);
+       gtk_combo_box_set_active (GTK_COMBO_BOX (combo->drop), 0);
 
-       combo->priv->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
-       g_signal_connect (G_OBJECT (combo->priv->selection), "changed",
+       combo->selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (treeview));
+       g_signal_connect (G_OBJECT (combo->selection), "changed",
                          G_CALLBACK (treeview_selection_changed_cb), combo);
-       g_signal_connect (G_OBJECT (combo->priv->drop), "changed",
+       g_signal_connect (G_OBJECT (combo->drop), "changed",
                          G_CALLBACK (drop_changed_cb), combo);
 
        gtk_widget_show_all (GTK_WIDGET (combo));
diff --git a/lib/bluetooth-chooser-combo.h b/lib/bluetooth-chooser-combo.h
index f7f19b69..73d4f399 100644
--- a/lib/bluetooth-chooser-combo.h
+++ b/lib/bluetooth-chooser-combo.h
@@ -1,6 +1,6 @@
 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
 /*
- * (C) Copyright 2007 Bastien Nocera <hadess hadess net>
+ * (C) Copyright 2007, 2021 Bastien Nocera <hadess hadess net>
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public
@@ -20,13 +20,8 @@
 
 #include <gtk/gtk.h>
 
-#define BLUETOOTH_TYPE_CHOOSER_COMBO     (bluetooth_chooser_combo_get_type ())
-#define BLUETOOTH_CHOOSER_COMBO(obj)     (G_TYPE_CHECK_INSTANCE_CAST ((obj), BLUETOOTH_TYPE_CHOOSER_COMBO, 
BluetoothChooserCombo))
-#define BLUETOOTH_IS_CHOOSER_COMBO(obj)  (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BLUETOOTH_TYPE_CHOOSER_COMBO))
-#define BLUETOOTH_IS_CHOOSER_COMBO_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), \
-                                                                        BLUETOOTH_TYPE_CHOOSER_COMBO))
-#define BLUETOOTH_GET_CHOOSER_COMBO_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), \
-                               BLUETOOTH_TYPE_CHOOSER_COMBO, BluetoothChooserComboClass))
+G_DECLARE_FINAL_TYPE(BluetoothChooserCombo, bluetooth_chooser_combo, BLUETOOTH, CHOOSER_COMBO, GtkBox)
+#define BLUETOOTH_TYPE_CHOOSER_COMBO (bluetooth_chooser_combo_get_type ())
 
 /**
 * BLUETOOTH_CHOOSER_COMBO_FIRST_DEVICE:
@@ -35,26 +30,4 @@
 **/
 #define BLUETOOTH_CHOOSER_COMBO_FIRST_DEVICE "00:00:00:00:00:00"
 
-typedef struct _BluetoothChooserComboPrivate BluetoothChooserComboPrivate;
-typedef struct _BluetoothChooserComboClass BluetoothChooserComboClass;
-
-/**
- * BluetoothChooserCombo:
- *
- * The <structname>BluetoothChooserCombo</structname> struct contains
- * only private fields and should not be directly accessed.
- */
-typedef struct _BluetoothChooserCombo {
-       GtkBox            parent;
-       BluetoothChooserComboPrivate *priv;
-} BluetoothChooserCombo;
-
-struct _BluetoothChooserComboClass {
-  GtkBoxClass parent_class;
-
-  void (*chooser_created) (BluetoothChooserCombo *self, GtkWidget *chooser);
-};
-
-GType          bluetooth_chooser_combo_get_type        (void);
-
 GtkWidget *    bluetooth_chooser_combo_new             (void);


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