[gnome-software] app row: Port to G_DECLARE_DERIVABLE_TYPE macro



commit ef4b1027304b0be754d1c2b74e0b262f9b767b4a
Author: Kalev Lember <klember redhat com>
Date:   Mon Sep 7 16:15:39 2015 +0200

    app row: Port to G_DECLARE_DERIVABLE_TYPE macro

 src/gs-app-row.c |   77 +++++++++++++++++++++++++++++++----------------------
 src/gs-app-row.h |   20 +------------
 2 files changed, 47 insertions(+), 50 deletions(-)
---
diff --git a/src/gs-app-row.c b/src/gs-app-row.c
index bdca6f1..f17a5d7 100644
--- a/src/gs-app-row.c
+++ b/src/gs-app-row.c
@@ -33,7 +33,7 @@
 #include "gs-utils.h"
 #include "gs-folders.h"
 
-struct _GsAppRowPrivate
+typedef struct
 {
        GsApp           *app;
        GtkWidget       *image;
@@ -53,7 +53,7 @@ struct _GsAppRowPrivate
        gboolean         show_update;
        gboolean         selectable;
        guint            pending_refresh_id;
-};
+} GsAppRowPrivate;
 
 G_DEFINE_TYPE_WITH_PRIVATE (GsAppRow, gs_app_row, GTK_TYPE_LIST_BOX_ROW)
 
@@ -78,7 +78,7 @@ static guint signals [SIGNAL_LAST] = { 0 };
 static GString *
 gs_app_row_get_description (GsAppRow *app_row)
 {
-       GsAppRowPrivate *priv = app_row->priv;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
        const gchar *tmp = NULL;
        _cleanup_free_ gchar *escaped = NULL;
 
@@ -117,11 +117,11 @@ gs_app_row_get_description (GsAppRow *app_row)
 void
 gs_app_row_refresh (GsAppRow *app_row)
 {
-       GsAppRowPrivate *priv = app_row->priv;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
        GtkStyleContext *context;
        GString *str = NULL;
 
-       if (app_row->priv->app == NULL)
+       if (priv->app == NULL)
                return;
 
        /* do a fill bar for the current progress */
@@ -202,10 +202,10 @@ gs_app_row_refresh (GsAppRow *app_row)
        context = gtk_widget_get_style_context (priv->button);
        gtk_style_context_remove_class (context, "destructive-action");
 
-       switch (gs_app_get_state (app_row->priv->app)) {
+       switch (gs_app_get_state (priv->app)) {
        case AS_APP_STATE_UNAVAILABLE:
                gtk_widget_set_visible (priv->button, TRUE);
-               if (gs_app_get_url (app_row->priv->app, AS_URL_KIND_MISSING) != NULL) {
+               if (gs_app_get_url (priv->app, AS_URL_KIND_MISSING) != NULL) {
                        /* TRANSLATORS: this is a button next to the search results that
                         * allows the application to be easily installed */
                        gtk_button_set_label (GTK_BUTTON (priv->button), _("Visit website"));
@@ -235,7 +235,7 @@ gs_app_row_refresh (GsAppRow *app_row)
                break;
        case AS_APP_STATE_UPDATABLE:
        case AS_APP_STATE_INSTALLED:
-               if (gs_app_get_kind (app_row->priv->app) != GS_APP_KIND_SYSTEM)
+               if (gs_app_get_kind (priv->app) != GS_APP_KIND_SYSTEM)
                        gtk_widget_set_visible (priv->button, TRUE);
                /* TRANSLATORS: this is a button next to the search results that
                 * allows the application to be easily removed */
@@ -315,8 +315,9 @@ gs_app_row_unreveal (GsAppRow *app_row)
 GsApp *
 gs_app_row_get_app (GsAppRow *app_row)
 {
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
        g_return_val_if_fail (GS_IS_APP_ROW (app_row), NULL);
-       return app_row->priv->app;
+       return priv->app;
 }
 
 /**
@@ -326,7 +327,7 @@ static gboolean
 gs_app_row_refresh_idle_cb (gpointer user_data)
 {
        GsAppRow *app_row = GS_APP_ROW (user_data);
-       GsAppRowPrivate *priv = app_row->priv;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
        priv->pending_refresh_id = 0;
        gs_app_row_refresh (app_row);
        return FALSE;
@@ -340,7 +341,7 @@ gs_app_row_notify_props_changed_cb (GsApp *app,
                                    GParamSpec *pspec,
                                    GsAppRow *app_row)
 {
-       GsAppRowPrivate *priv = app_row->priv;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
        if (priv->pending_refresh_id > 0)
                return;
        priv->pending_refresh_id = g_idle_add (gs_app_row_refresh_idle_cb, app_row);
@@ -352,16 +353,17 @@ gs_app_row_notify_props_changed_cb (GsApp *app,
 void
 gs_app_row_set_app (GsAppRow *app_row, GsApp *app)
 {
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
        g_return_if_fail (GS_IS_APP_ROW (app_row));
        g_return_if_fail (GS_IS_APP (app));
-       app_row->priv->app = g_object_ref (app);
-       g_signal_connect_object (app_row->priv->app, "notify::state",
+       priv->app = g_object_ref (app);
+       g_signal_connect_object (priv->app, "notify::state",
                                 G_CALLBACK (gs_app_row_notify_props_changed_cb),
                                 app_row, 0);
-       g_signal_connect_object (app_row->priv->app, "notify::rating",
+       g_signal_connect_object (priv->app, "notify::rating",
                                 G_CALLBACK (gs_app_row_notify_props_changed_cb),
                                 app_row, 0);
-       g_signal_connect_object (app_row->priv->app, "notify::progress",
+       g_signal_connect_object (priv->app, "notify::progress",
                                 G_CALLBACK (gs_app_row_notify_props_changed_cb),
                                 app_row, 0);
        gs_app_row_refresh (app_row);
@@ -374,7 +376,7 @@ static void
 gs_app_row_destroy (GtkWidget *object)
 {
        GsAppRow *app_row = GS_APP_ROW (object);
-       GsAppRowPrivate *priv = app_row->priv;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
 
        if (priv->app)
                g_signal_handlers_disconnect_by_func (priv->app, gs_app_row_notify_props_changed_cb, app_row);
@@ -479,10 +481,7 @@ checkbox_toggled (GtkWidget *widget, GsAppRow *app_row)
 static void
 gs_app_row_init (GsAppRow *app_row)
 {
-       GsAppRowPrivate *priv;
-
-       priv = gs_app_row_get_instance_private (app_row);
-       app_row->priv = priv;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
 
        gtk_widget_set_has_window (GTK_WIDGET (app_row), FALSE);
        gtk_widget_init_template (GTK_WIDGET (app_row));
@@ -500,21 +499,27 @@ gs_app_row_set_size_groups (GsAppRow *app_row,
                            GtkSizeGroup *image,
                            GtkSizeGroup *name)
 {
-       gtk_size_group_add_widget (image, app_row->priv->image);
-       gtk_size_group_add_widget (name, app_row->priv->name_box);
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
+
+       gtk_size_group_add_widget (image, priv->image);
+       gtk_size_group_add_widget (name, priv->name_box);
 }
 
 void
 gs_app_row_set_colorful (GsAppRow *app_row,
                            gboolean     colorful)
 {
-       app_row->priv->colorful = colorful;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
+
+       priv->colorful = colorful;
 }
 
 void
 gs_app_row_set_show_codec (GsAppRow *app_row, gboolean show_codec)
 {
-       app_row->priv->show_codec = show_codec;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
+
+       priv->show_codec = show_codec;
 }
 
 /**
@@ -525,25 +530,31 @@ gs_app_row_set_show_codec (GsAppRow *app_row, gboolean show_codec)
 void
 gs_app_row_set_show_update (GsAppRow *app_row, gboolean show_update)
 {
-       app_row->priv->show_update = show_update;
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
+
+       priv->show_update = show_update;
 }
 
 void
 gs_app_row_set_selectable (GsAppRow *app_row, gboolean selectable)
 {
-       app_row->priv->selectable = selectable;
-       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (app_row->priv->checkbox), FALSE);
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
+
+       priv->selectable = selectable;
+       gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->checkbox), FALSE);
        gs_app_row_refresh (app_row);
 }
 
 void
 gs_app_row_set_selected (GsAppRow *app_row, gboolean selected)
 {
-       if (!app_row->priv->selectable)
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
+
+       if (!priv->selectable)
                return;
 
-       if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (app_row->priv->checkbox)) != selected) {
-               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (app_row->priv->checkbox), selected);
+       if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->checkbox)) != selected) {
+               gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (priv->checkbox), selected);
                g_object_notify (G_OBJECT (app_row), "selected");
        }
 }
@@ -551,10 +562,12 @@ gs_app_row_set_selected (GsAppRow *app_row, gboolean selected)
 gboolean
 gs_app_row_get_selected (GsAppRow *app_row)
 {
-       if (!app_row->priv->selectable)
+       GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
+
+       if (!priv->selectable)
                return FALSE;
 
-       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (app_row->priv->checkbox));
+       return gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (priv->checkbox));
 }
 
 GtkWidget *
diff --git a/src/gs-app-row.h b/src/gs-app-row.h
index 274f9ad..885f28b 100644
--- a/src/gs-app-row.h
+++ b/src/gs-app-row.h
@@ -26,26 +26,11 @@
 
 #include "gs-app.h"
 
-#define GS_TYPE_APP_ROW                        (gs_app_row_get_type())
-#define GS_APP_ROW(obj)                        (G_TYPE_CHECK_INSTANCE_CAST((obj), GS_TYPE_APP_ROW, GsAppRow))
-#define GS_APP_ROW_CLASS(cls)          (G_TYPE_CHECK_CLASS_CAST((cls), GS_TYPE_APP_ROW, GsAppRowClass))
-#define GS_IS_APP_ROW(obj)             (G_TYPE_CHECK_INSTANCE_TYPE((obj), GS_TYPE_APP_ROW))
-#define GS_IS_APP_ROW_CLASS(cls)       (G_TYPE_CHECK_CLASS_TYPE((cls), GS_TYPE_APP_ROW))
-#define GS_APP_ROW_GET_CLASS(obj)      (G_TYPE_INSTANCE_GET_CLASS((obj), GS_TYPE_APP_ROW, GsAppRowClass))
-
 G_BEGIN_DECLS
 
-typedef struct _GsAppRow               GsAppRow;
-typedef struct _GsAppRowClass          GsAppRowClass;
-typedef struct _GsAppRowPrivate                GsAppRowPrivate;
-
-struct _GsAppRow
-{
-       GtkListBoxRow            parent;
+#define GS_TYPE_APP_ROW (gs_app_row_get_type ())
 
-       /*< private >*/
-       GsAppRowPrivate         *priv;
-};
+G_DECLARE_DERIVABLE_TYPE (GsAppRow, gs_app_row, GS, APP_ROW, GtkListBoxRow)
 
 struct _GsAppRowClass
 {
@@ -54,7 +39,6 @@ struct _GsAppRowClass
        void                    (*unrevealed)           (GsAppRow       *app_row);
 };
 
-GType           gs_app_row_get_type                    (void);
 GtkWidget      *gs_app_row_new                         (void);
 void            gs_app_row_refresh                     (GsAppRow       *app_row);
 void            gs_app_row_unreveal                    (GsAppRow       *app_row);


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