[gnome-software] trivial: Add a quirk property onto the GsApp object
- From: Richard Hughes <rhughes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software] trivial: Add a quirk property onto the GsApp object
- Date: Tue, 19 Apr 2016 14:36:21 +0000 (UTC)
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]