[gnome-software/1335-highlight-when-a-runtime-is-out-of-date] gs-safety-context-dialog: Highlight when a runtime is End-Of-Life
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/1335-highlight-when-a-runtime-is-out-of-date] gs-safety-context-dialog: Highlight when a runtime is End-Of-Life
- Date: Wed, 15 Sep 2021 14:15:49 +0000 (UTC)
commit fb044089158866e877e572bc0dc379ebb0e0053e
Author: Milan Crha <mcrha redhat com>
Date: Tue Sep 7 18:50:54 2021 +0200
gs-safety-context-dialog: Highlight when a runtime is End-Of-Life
Read the data on the Flatpak side and use it in the safety context
dialog and the safety tile.
Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1335
plugins/flatpak/gs-flatpak.c | 5 +++++
src/gs-app-context-bar.c | 9 +++++++++
src/gs-safety-context-dialog.c | 28 ++++++++++++++++++++++++++++
src/gs-safety-context-dialog.ui | 17 +++++++++++++++++
src/gtk-style.css | 5 +++++
5 files changed, 64 insertions(+)
---
diff --git a/plugins/flatpak/gs-flatpak.c b/plugins/flatpak/gs-flatpak.c
index f3e77f041..f677ef797 100644
--- a/plugins/flatpak/gs-flatpak.c
+++ b/plugins/flatpak/gs-flatpak.c
@@ -324,6 +324,11 @@ gs_flatpak_set_metadata (GsFlatpak *self, GsApp *app, FlatpakRef *xref)
gs_app_get_kind (app) == AS_COMPONENT_KIND_GENERIC) {
gs_flatpak_set_kind_from_flatpak (app, xref);
}
+
+ if (FLATPAK_IS_REMOTE_REF (xref) && flatpak_remote_ref_get_eol (FLATPAK_REMOTE_REF (xref)) != NULL)
+ gs_app_set_metadata (app, "GnomeSoftware::EolReason", flatpak_remote_ref_get_eol
(FLATPAK_REMOTE_REF (xref)));
+ else if (FLATPAK_IS_INSTALLED_REF (xref) && flatpak_installed_ref_get_eol (FLATPAK_INSTALLED_REF
(xref)) != NULL)
+ gs_app_set_metadata (app, "GnomeSoftware::EolReason", flatpak_installed_ref_get_eol
(FLATPAK_INSTALLED_REF (xref)));
}
static GsApp *
diff --git a/src/gs-app-context-bar.c b/src/gs-app-context-bar.c
index 6799a26b4..aed100c3f 100644
--- a/src/gs-app-context-bar.c
+++ b/src/gs-app-context-bar.c
@@ -393,6 +393,15 @@ update_safety_tile (GsAppContextBar *self)
* It’s used in a context tile, so should be short. */
_("Software developer is verified"));
+ if (gs_app_get_metadata_item (self->app, "GnomeSoftware::EolReason") != NULL || (
+ gs_app_get_runtime (self->app) != NULL &&
+ gs_app_get_metadata_item (gs_app_get_runtime (self->app), "GnomeSoftware::EolReason") != NULL))
+ add_to_safety_rating (&chosen_rating, descriptions,
+ SAFETY_UNSAFE,
+ /* Translators: This indicates an app or its runtime reached its end of
life.
+ * It’s used in a context tile, so should be short. */
+ _("Software no longer supported"));
+
g_assert (descriptions->len > 0);
g_ptr_array_add (descriptions, NULL);
diff --git a/src/gs-safety-context-dialog.c b/src/gs-safety-context-dialog.c
index 02cc49789..57926879a 100644
--- a/src/gs-safety-context-dialog.c
+++ b/src/gs-safety-context-dialog.c
@@ -61,6 +61,7 @@ struct _GsSafetyContextDialog
GtkLabel *source_label;
GBinding *source_label_binding; /* (owned) (nullable) */
GtkLabel *sdk_label;
+ GtkImage *sdk_eol_image;
GtkWidget *sdk_row;
};
@@ -326,6 +327,18 @@ update_permissions_list (GsSafetyContextDialog *self)
_("The developer of this app has been verified to be who they say they are"),
NULL, NULL, NULL);
+ add_permission_row (self->permissions_list, &chosen_rating,
+ gs_app_get_metadata_item (self->app, "GnomeSoftware::EolReason") != NULL || (
+ gs_app_get_runtime (self->app) != NULL &&
+ gs_app_get_metadata_item (gs_app_get_runtime (self->app),
"GnomeSoftware::EolReason") != NULL),
+ GS_CONTEXT_DIALOG_ROW_IMPORTANCE_IMPORTANT,
+ "dialog-warning-symbolic",
+ /* Translators: This indicates an app uses an outdated SDK.
+ * It’s used in a context tile, so should be short. */
+ _("Insecure Dependencies"),
+ _("Software or its dependencies are no longer supported and may be insecure"),
+ NULL, NULL, NULL);
+
/* Update the UI. */
switch (chosen_rating) {
case GS_CONTEXT_DIALOG_ROW_IMPORTANCE_UNIMPORTANT:
@@ -387,8 +400,10 @@ update_sdk (GsSafetyContextDialog *self)
runtime = gs_app_get_runtime (self->app);
if (runtime != NULL) {
+ GtkStyleContext *context;
g_autofree gchar *label = NULL;
const gchar *version = gs_app_get_version_ui (runtime);
+ gboolean is_eol = gs_app_get_metadata_item (runtime, "GnomeSoftware::EolReason") != NULL;
if (version != NULL) {
/* Translators: The first placeholder is an app runtime
@@ -401,6 +416,18 @@ update_sdk (GsSafetyContextDialog *self)
}
gtk_label_set_label (self->sdk_label, label);
+
+ context = gtk_widget_get_style_context (GTK_WIDGET (self->sdk_label));
+
+ if (is_eol) {
+ gtk_style_context_add_class (context, "eol-red");
+ gtk_style_context_remove_class (context, "dim-label");
+ } else {
+ gtk_style_context_add_class (context, "dim-label");
+ gtk_style_context_remove_class (context, "eol-red");
+ }
+
+ gtk_widget_set_visible (GTK_WIDGET (self->sdk_eol_image), is_eol);
}
/* Only show the row if a runtime was found. */
@@ -534,6 +561,7 @@ gs_safety_context_dialog_class_init (GsSafetyContextDialogClass *klass)
gtk_widget_class_bind_template_child (widget_class, GsSafetyContextDialog, license_label);
gtk_widget_class_bind_template_child (widget_class, GsSafetyContextDialog, source_label);
gtk_widget_class_bind_template_child (widget_class, GsSafetyContextDialog, sdk_label);
+ gtk_widget_class_bind_template_child (widget_class, GsSafetyContextDialog, sdk_eol_image);
gtk_widget_class_bind_template_child (widget_class, GsSafetyContextDialog, sdk_row);
gtk_widget_class_bind_template_callback (widget_class, key_press_event_cb);
diff --git a/src/gs-safety-context-dialog.ui b/src/gs-safety-context-dialog.ui
index 3356afb68..c20c84d23 100644
--- a/src/gs-safety-context-dialog.ui
+++ b/src/gs-safety-context-dialog.ui
@@ -250,6 +250,23 @@
</accessibility>
</object>
</child>
+ <child>
+ <object class="GtkImage" id="sdk_eol_image">
+ <property name="icon-name">dialog-warning-symbolic</property>
+ <property name="visible">True</property>
+ <style>
+ <class name="eol-red"/>
+ </style>
+ <accessibility>
+ <relation target="sdk_title" type="labelled-by"/>
+ </accessibility>
+ <child internal-child="accessible">
+ <object class="AtkObject">
+ <property name="accessible-name" translatable="yes">Outdated SDK
version</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
</child>
</object>
diff --git a/src/gtk-style.css b/src/gtk-style.css
index 3e5a0d474..65b3522b9 100644
--- a/src/gtk-style.css
+++ b/src/gtk-style.css
@@ -809,6 +809,11 @@ app-context-bar .context-tile-description { font-size: smaller }
.context-tile-lozenge.yellow, .context-tile-lozenge.details-rating-12 { background-color: #f7eb9f; color:
#9c7107 }
.context-tile-lozenge.blue, .context-tile-lozenge.details-rating-5 { background-color: #d1e4fb; color:
#294d7a }
+.eol-red {
+ font-weight: bold;
+ color: #ab3342;
+}
+
window.toolbox button.titlebutton:not(:hover) {
background: @theme_bg_color;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]