[gnome-software/1296-calculate-app-space-usage-for-download-context-tile] gs-app: Add properties for user and cache data sizes
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/1296-calculate-app-space-usage-for-download-context-tile] gs-app: Add properties for user and cache data sizes
- Date: Wed, 28 Jul 2021 20:35:12 +0000 (UTC)
commit 202e9627a99fa24069273268cb8c17aae052784c
Author: Milan Crha <mcrha redhat com>
Date: Wed Jul 28 18:47:42 2021 +0200
gs-app: Add properties for user and cache data sizes
Add members to store the information to.
lib/gs-app.c | 133 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
lib/gs-app.h | 6 +++
2 files changed, 139 insertions(+)
---
diff --git a/lib/gs-app.c b/lib/gs-app.c
index ce15509ef..1aebc59c7 100644
--- a/lib/gs-app.c
+++ b/lib/gs-app.c
@@ -103,6 +103,8 @@ typedef struct
GPtrArray *provided; /* of AsProvided */
guint64 size_installed;
guint64 size_download;
+ guint64 size_user_data;
+ guint64 size_cache_data;
AsComponentKind kind;
GsAppSpecialKind special_kind;
GsAppState state;
@@ -154,8 +156,10 @@ typedef enum {
PROP_URL_MISSING,
PROP_CONTENT_RATING,
PROP_LICENSE,
+ PROP_SIZE_CACHE_DATA,
PROP_SIZE_DOWNLOAD,
PROP_SIZE_INSTALLED,
+ PROP_SIZE_USER_DATA,
PROP_PERMISSIONS,
PROP_RELATIONS,
} GsAppProperty;
@@ -676,6 +680,11 @@ gs_app_to_string_append (GsApp *app, GString *str)
gs_app_kv_size (str, "size-installed", priv->size_installed);
if (priv->size_download != 0)
gs_app_kv_size (str, "size-download", gs_app_get_size_download (app));
+ if (priv->size_cache_data != GS_APP_SIZE_UNKNOWABLE)
+ gs_app_kv_size (str, "size-cache-data", gs_app_get_size_cache_data (app));
+ if (priv->size_user_data != GS_APP_SIZE_UNKNOWABLE)
+ gs_app_kv_size (str, "size-user-data", gs_app_get_size_user_data (app));
+
for (i = 0; i < gs_app_list_length (priv->related); i++) {
GsApp *app_tmp = gs_app_list_index (priv->related, i);
const gchar *id = gs_app_get_unique_id (app_tmp);
@@ -3564,6 +3573,88 @@ gs_app_set_size_installed (GsApp *app, guint64 size_installed)
gs_app_queue_notify (app, obj_props[PROP_SIZE_INSTALLED]);
}
+/**
+ * gs_app_get_size_user_data:
+ * @app: A #GsApp
+ *
+ * Get the value of #GsApp:size-user-data.
+ *
+ * Returns: number of bytes, or %GS_APP_SIZE_UNKNOWABLE for unknown
+ *
+ * Since: 41
+ **/
+guint64
+gs_app_get_size_user_data (GsApp *app)
+{
+ GsAppPrivate *priv = gs_app_get_instance_private (app);
+
+ g_return_val_if_fail (GS_IS_APP (app), GS_APP_SIZE_UNKNOWABLE);
+
+ return priv->size_user_data;
+}
+
+/**
+ * gs_app_set_size_user_data:
+ * @app: a #GsApp
+ * @size_user_data: size in bytes, or %GS_APP_SIZE_UNKNOWABLE for unknown
+ *
+ * Sets the user data size of the @app.
+ *
+ * Since: 41
+ **/
+void
+gs_app_set_size_user_data (GsApp *app,
+ guint64 size_user_data)
+{
+ GsAppPrivate *priv = gs_app_get_instance_private (app);
+ g_return_if_fail (GS_IS_APP (app));
+ if (size_user_data == priv->size_user_data)
+ return;
+ priv->size_user_data = size_user_data;
+ gs_app_queue_notify (app, obj_props[PROP_SIZE_USER_DATA]);
+}
+
+/**
+ * gs_app_get_size_cache_data:
+ * @app: A #GsApp
+ *
+ * Get the value of #GsApp:size-cache-data.
+ *
+ * Returns: number of bytes, or %GS_APP_SIZE_UNKNOWABLE for unknown
+ *
+ * Since: 41
+ **/
+guint64
+gs_app_get_size_cache_data (GsApp *app)
+{
+ GsAppPrivate *priv = gs_app_get_instance_private (app);
+
+ g_return_val_if_fail (GS_IS_APP (app), GS_APP_SIZE_UNKNOWABLE);
+
+ return priv->size_cache_data;
+}
+
+/**
+ * gs_app_set_size_cache_data:
+ * @app: a #GsApp
+ * @size_cache_data: size in bytes, or %GS_APP_SIZE_UNKNOWABLE for unknown
+ *
+ * Sets the cache data size of the @app.
+ *
+ * Since: 41
+ **/
+void
+gs_app_set_size_cache_data (GsApp *app,
+ guint64 size_cache_data)
+{
+ GsAppPrivate *priv = gs_app_get_instance_private (app);
+ g_return_if_fail (GS_IS_APP (app));
+ if (size_cache_data == priv->size_cache_data)
+ return;
+ priv->size_cache_data = size_cache_data;
+ gs_app_queue_notify (app, obj_props[PROP_SIZE_CACHE_DATA]);
+}
+
/**
* gs_app_get_metadata_item:
* @app: a #GsApp
@@ -4734,12 +4825,18 @@ gs_app_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *
case PROP_LICENSE:
g_value_set_string (value, priv->license);
break;
+ case PROP_SIZE_CACHE_DATA:
+ g_value_set_uint64 (value, gs_app_get_size_cache_data (app));
+ break;
case PROP_SIZE_DOWNLOAD:
g_value_set_uint64 (value, gs_app_get_size_download (app));
break;
case PROP_SIZE_INSTALLED:
g_value_set_uint64 (value, gs_app_get_size_installed (app));
break;
+ case PROP_SIZE_USER_DATA:
+ g_value_set_uint64 (value, gs_app_get_size_user_data (app));
+ break;
case PROP_PERMISSIONS:
g_value_set_flags (value, priv->permissions);
break;
@@ -4826,12 +4923,18 @@ gs_app_set_property (GObject *object, guint prop_id, const GValue *value, GParam
case PROP_LICENSE:
/* Read-only */
g_assert_not_reached ();
+ case PROP_SIZE_CACHE_DATA:
+ gs_app_set_size_cache_data (app, g_value_get_uint64 (value));
+ break;
case PROP_SIZE_DOWNLOAD:
gs_app_set_size_download (app, g_value_get_uint64 (value));
break;
case PROP_SIZE_INSTALLED:
gs_app_set_size_installed (app, g_value_get_uint64 (value));
break;
+ case PROP_SIZE_USER_DATA:
+ gs_app_set_size_user_data (app, g_value_get_uint64 (value));
+ break;
case PROP_PERMISSIONS:
gs_app_set_permissions (app, g_value_get_flags (value));
break;
@@ -5104,6 +5207,20 @@ gs_app_class_init (GsAppClass *klass)
NULL,
G_PARAM_READABLE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+ /**
+ * GsApp:size-cache-data
+ *
+ * The size on the disk for the cache data of the application.
+ *
+ * This is %GS_APP_SIZE_UNKNOWABLE if not known.
+ *
+ * Since: 41
+ */
+ obj_props[PROP_SIZE_CACHE_DATA] =
+ g_param_spec_uint64 ("size-cache-data", NULL, NULL,
+ 0, G_MAXUINT64, 0,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+
/**
* GsApp:size-download
*
@@ -5142,6 +5259,20 @@ gs_app_class_init (GsAppClass *klass)
0, G_MAXUINT64, 0,
G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+ /**
+ * GsApp:size-user-data
+ *
+ * The size on the disk for the user data of the application.
+ *
+ * This is %GS_APP_SIZE_UNKNOWABLE if not known.
+ *
+ * Since: 41
+ */
+ obj_props[PROP_SIZE_USER_DATA] =
+ g_param_spec_uint64 ("size-user-data", NULL, NULL,
+ 0, G_MAXUINT64, 0,
+ G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS);
+
/**
* GsApp:permissions
*
@@ -5206,6 +5337,8 @@ gs_app_init (GsApp *app)
NULL,
g_free);
priv->allow_cancel = TRUE;
+ priv->size_cache_data = GS_APP_SIZE_UNKNOWABLE;
+ priv->size_user_data = GS_APP_SIZE_UNKNOWABLE;
g_mutex_init (&priv->mutex);
}
diff --git a/lib/gs-app.h b/lib/gs-app.h
index 87c07df98..70a2d61dc 100644
--- a/lib/gs-app.h
+++ b/lib/gs-app.h
@@ -408,6 +408,12 @@ void gs_app_add_provided_item (GsApp *app,
guint64 gs_app_get_size_installed (GsApp *app);
void gs_app_set_size_installed (GsApp *app,
guint64 size_installed);
+guint64 gs_app_get_size_user_data (GsApp *app);
+void gs_app_set_size_user_data (GsApp *app,
+ guint64 size_user_data);
+guint64 gs_app_get_size_cache_data (GsApp *app);
+void gs_app_set_size_cache_data (GsApp *app,
+ guint64 size_cache_data);
guint64 gs_app_get_size_download (GsApp *app);
void gs_app_set_size_download (GsApp *app,
guint64 size_download);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]