[gnome-software] trivial: Add a quirk property onto the GsApp object



commit a092b41d1f8fa23ab362e498c99b234cf3fc42b7
Author: Richard Hughes <richard hughsie com>
Date:   Tue Apr 19 15:26:21 2016 +0100

    trivial: Add a quirk property onto the GsApp object
    
    This allows us to idle-add changed notifications for the UI.

 src/gs-app.c           |   28 ++++++++++++++++++++++++++++
 src/gs-app.h           |    2 ++
 src/gs-shell-details.c |    8 ++++++++
 3 files changed, 38 insertions(+), 0 deletions(-)
---
diff --git a/src/gs-app.c b/src/gs-app.c
index 5d4fe49..3a36b51 100644
--- a/src/gs-app.c
+++ b/src/gs-app.c
@@ -119,6 +119,7 @@ enum {
        PROP_STATE,
        PROP_PROGRESS,
        PROP_INSTALL_DATE,
+       PROP_QUIRK,
        PROP_LAST
 };
 
@@ -2127,6 +2128,19 @@ gs_app_add_quirk (GsApp *app, AsAppQuirk quirk)
        g_return_if_fail (GS_IS_APP (app));
 
        app->quirk |= quirk;
+       gs_app_queue_notify (app, "quirk");
+}
+
+/**
+ * gs_app_clear_quirk:
+ **/
+void
+gs_app_clear_quirk (GsApp *app, AsAppQuirk quirk)
+{
+       g_return_if_fail (GS_IS_APP (app));
+
+       app->quirk &= ~quirk;
+       gs_app_queue_notify (app, "quirk");
 }
 
 /**
@@ -2207,6 +2221,9 @@ gs_app_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *
        case PROP_INSTALL_DATE:
                g_value_set_uint64 (value, app->install_date);
                break;
+       case PROP_QUIRK:
+               g_value_set_uint64 (value, app->quirk);
+               break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                break;
@@ -2258,6 +2275,9 @@ gs_app_set_property (GObject *object, guint prop_id, const GValue *value, GParam
        case PROP_INSTALL_DATE:
                gs_app_set_install_date (app, g_value_get_uint64 (value));
                break;
+       case PROP_QUIRK:
+               app->quirk = g_value_get_uint64 (value);
+               break;
        default:
                G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
                break;
@@ -2419,6 +2439,14 @@ gs_app_class_init (GsAppClass *klass)
                                     0, G_MAXUINT64, 0,
                                     G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
        g_object_class_install_property (object_class, PROP_INSTALL_DATE, pspec);
+
+       /**
+        * GsApp:quirk:
+        */
+       pspec = g_param_spec_uint64 ("quirk", NULL, NULL,
+                                    0, G_MAXUINT64, 0,
+                                    G_PARAM_READWRITE | G_PARAM_CONSTRUCT);
+       g_object_class_install_property (object_class, PROP_QUIRK, pspec);
 }
 
 /**
diff --git a/src/gs-app.h b/src/gs-app.h
index d546673..0adaa79 100644
--- a/src/gs-app.h
+++ b/src/gs-app.h
@@ -239,6 +239,8 @@ gboolean     gs_app_has_quirk               (GsApp          *app,
                                                 AsAppQuirk      quirk);
 void            gs_app_add_quirk               (GsApp          *app,
                                                 AsAppQuirk      quirk);
+void            gs_app_clear_quirk             (GsApp          *app,
+                                                AsAppQuirk      quirk);
 GError         *gs_app_get_last_error          (GsApp          *app);
 void            gs_app_set_last_error          (GsApp          *app,
                                                 GError         *error);
diff --git a/src/gs-shell-details.c b/src/gs-shell-details.c
index 908cccf..f0b3d07 100644
--- a/src/gs-shell-details.c
+++ b/src/gs-shell-details.c
@@ -38,6 +38,8 @@
 #include "gs-review-dialog.h"
 #include "gs-review-row.h"
 
+static void gs_shell_details_refresh_all (GsShellDetails *self);
+
 typedef enum {
        GS_SHELL_DETAILS_STATE_LOADING,
        GS_SHELL_DETAILS_STATE_READY,
@@ -391,6 +393,9 @@ gs_shell_details_switch_to_idle (gpointer user_data)
        if (gs_shell_get_mode (self->shell) == GS_SHELL_MODE_DETAILS)
                gs_page_switch_to (GS_PAGE (self), TRUE);
 
+       /* update widgets */
+       gs_shell_details_refresh_all (self);
+
        g_object_unref (self);
        return G_SOURCE_REMOVE;
 }
@@ -1334,6 +1339,9 @@ gs_shell_details_set_app (GsShellDetails *self, GsApp *app)
        g_signal_connect_object (self->app, "notify::license",
                                 G_CALLBACK (gs_shell_details_notify_state_changed_cb),
                                 self, 0);
+       g_signal_connect_object (self->app, "notify::quirk",
+                                G_CALLBACK (gs_shell_details_notify_state_changed_cb),
+                                self, 0);
        g_signal_connect_object (self->app, "notify::progress",
                                 G_CALLBACK (gs_shell_details_progress_changed_cb),
                                 self, 0);


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