[gnome-software/1723-installed-updates-papercuts: 7/9] gs-app-row: Add an option to hide "installed" label on the row
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/1723-installed-updates-papercuts: 7/9] gs-app-row: Add an option to hide "installed" label on the row
- Date: Tue, 26 Apr 2022 08:58:06 +0000 (UTC)
commit d4d4deea10aff610aa2376cb8a6eb81a308615c2
Author: Milan Crha <mcrha redhat com>
Date: Tue Apr 19 14:18:43 2022 +0200
gs-app-row: Add an option to hide "installed" label on the row
The "installed" label can be unneeded in "Installed Updates" dialog,
thus this new option will help to hide it there.
src/gs-app-row.c | 48 +++++++++++++++++++++++++++++++++++++++++++++++-
src/gs-app-row.h | 2 ++
2 files changed, 49 insertions(+), 1 deletion(-)
---
diff --git a/src/gs-app-row.c b/src/gs-app-row.c
index 0417eba3d..ec007d7d1 100644
--- a/src/gs-app-row.c
+++ b/src/gs-app-row.c
@@ -47,6 +47,7 @@ typedef struct
gboolean show_source;
gboolean show_update;
gboolean show_installed_size;
+ gboolean show_installed;
guint pending_refresh_id;
gboolean is_narrow;
} GsAppRowPrivate;
@@ -70,6 +71,7 @@ typedef enum {
PROP_SHOW_RATING,
PROP_SHOW_UPDATE,
PROP_SHOW_INSTALLED_SIZE,
+ PROP_SHOW_INSTALLED,
PROP_IS_NARROW,
} GsAppRowProperty;
@@ -335,7 +337,7 @@ gs_app_row_actually_refresh (GsAppRow *app_row)
case GS_APP_STATE_UPDATABLE:
case GS_APP_STATE_UPDATABLE_LIVE:
case GS_APP_STATE_INSTALLED:
- gtk_widget_set_visible (priv->label_installed, TRUE);
+ gtk_widget_set_visible (priv->label_installed, priv->show_installed);
break;
default:
gtk_widget_set_visible (priv->label_installed, FALSE);
@@ -658,6 +660,9 @@ gs_app_row_get_property (GObject *object, guint prop_id, GValue *value, GParamSp
case PROP_SHOW_INSTALLED_SIZE:
g_value_set_boolean (value, priv->show_installed_size);
break;
+ case PROP_SHOW_INSTALLED:
+ g_value_set_boolean (value, priv->show_installed);
+ break;
case PROP_IS_NARROW:
g_value_set_boolean (value, gs_app_row_get_is_narrow (app_row));
break;
@@ -697,6 +702,9 @@ gs_app_row_set_property (GObject *object, guint prop_id, const GValue *value, GP
case PROP_SHOW_INSTALLED_SIZE:
gs_app_row_set_show_installed_size (app_row, g_value_get_boolean (value));
break;
+ case PROP_SHOW_INSTALLED:
+ gs_app_row_set_show_installed (app_row, g_value_get_boolean (value));
+ break;
case PROP_IS_NARROW:
gs_app_row_set_is_narrow (app_row, g_value_get_boolean (value));
break;
@@ -818,6 +826,18 @@ gs_app_row_class_init (GsAppRowClass *klass)
FALSE,
G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+ /**
+ * GsAppRow:show-installed:
+ *
+ * Show an "Installed" check in the app row, when the app is installed.
+ *
+ * Since: 42.1
+ */
+ obj_props[PROP_SHOW_INSTALLED] =
+ g_param_spec_boolean ("show-installed", NULL, NULL,
+ TRUE,
+ G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS | G_PARAM_EXPLICIT_NOTIFY);
+
/**
* GsAppRow:show-installed-size:
*
@@ -898,6 +918,7 @@ gs_app_row_init (GsAppRow *app_row)
GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
priv->show_description = TRUE;
+ priv->show_installed = TRUE;
gtk_widget_init_template (GTK_WIDGET (app_row));
@@ -1105,6 +1126,31 @@ gs_app_row_set_show_update (GsAppRow *app_row, gboolean show_update)
g_object_notify_by_pspec (G_OBJECT (app_row), obj_props[PROP_SHOW_UPDATE]);
}
+/**
+ * gs_app_row_set_show_installed:
+ * @app_row: a #GsAppRow
+ * @show_installed: value to set
+ *
+ * Set whether to show "installed" label. Default is %TRUE. This has effect only
+ * when not showing buttons (gs_app_row_set_show_buttons()).
+ *
+ * Since: 42.1
+ **/
+void
+gs_app_row_set_show_installed (GsAppRow *app_row,
+ gboolean show_installed)
+{
+ GsAppRowPrivate *priv = gs_app_row_get_instance_private (app_row);
+
+ g_return_if_fail (GS_IS_APP_ROW (app_row));
+
+ if ((!show_installed) != (!priv->show_installed)) {
+ priv->show_installed = show_installed;
+ gs_app_row_schedule_refresh (app_row);
+ g_object_notify_by_pspec (G_OBJECT (app_row), obj_props[PROP_SHOW_INSTALLED]);
+ }
+}
+
GtkWidget *
gs_app_row_new (GsApp *app)
{
diff --git a/src/gs-app-row.h b/src/gs-app-row.h
index 4364b2f5a..8d29a2f23 100644
--- a/src/gs-app-row.h
+++ b/src/gs-app-row.h
@@ -41,6 +41,8 @@ void gs_app_row_set_show_source (GsAppRow *app_row,
gboolean show_source);
void gs_app_row_set_show_update (GsAppRow *app_row,
gboolean show_update);
+void gs_app_row_set_show_installed (GsAppRow *app_row,
+ gboolean show_installed);
GsApp *gs_app_row_get_app (GsAppRow *app_row);
void gs_app_row_set_size_groups (GsAppRow *app_row,
GtkSizeGroup *name,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]