[gnome-software/1723-installed-updates-papercuts] gs-app-row: Add an option to hide "installed" label on the row



commit 5fecc9c0d64c70b29005c5b40fd5136c22d91d83
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 | 28 +++++++++++++++++++++++++++-
 src/gs-app-row.h |  2 ++
 2 files changed, 29 insertions(+), 1 deletion(-)
---
diff --git a/src/gs-app-row.c b/src/gs-app-row.c
index 4efd5660a..df12bfee9 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;
@@ -332,7 +333,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);
@@ -842,6 +843,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));
 
@@ -1015,6 +1017,30 @@ gs_app_row_set_show_update (GsAppRow *app_row, gboolean show_update)
        gs_app_row_schedule_refresh (app_row);
 }
 
+/**
+ * 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);
+       }
+}
+
 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]