From d118d0ac648604af6ef3126d079ffa5ae6f698d4 Mon Sep 17 00:00:00 2001 From: italo-capasso Date: Sun, 8 Dec 2024 08:26:49 -0500 Subject: [PATCH 1/3] Filter screenshot by environment (elementary#2210) Will read the environment property of the screenshot and will only show them if prefer dark mode is enabled in the system and the screenshot has a dark mode environment (i.e. has ':dark' in the environment id). Won't consider null environments in the screenshots. --- src/Views/AppInfoView.vala | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/Views/AppInfoView.vala b/src/Views/AppInfoView.vala index 8b676ea76..8d53208fa 100644 --- a/src/Views/AppInfoView.vala +++ b/src/Views/AppInfoView.vala @@ -942,7 +942,21 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage { var scale = get_scale_factor (); var min_screenshot_width = MAX_WIDTH * scale; + var prefer_dark_theme = Gtk.Settings.get_default ().gtk_application_prefer_dark_theme; screenshots.foreach ((screenshot) => { + var environment_id = screenshot.get_environment (); + if (prefer_dark_theme && environment_id != null) { + var environment_split = environment_id.split (":", 2); + if (environment_split.length != 2) { + return; + } + + var color_scheme = AppStream.ColorSchemeKind.from_string (environment_split[1]); + if (color_scheme != AppStream.ColorSchemeKind.DARK) { + return; + } + } + AppStream.Image? best_image = null; screenshot.get_images ().foreach ((image) => { // Image is better than no image From aecdacc15d2736aba17ef1b093fb51d365095b58 Mon Sep 17 00:00:00 2001 From: italo-capasso Date: Sun, 8 Dec 2024 09:03:21 -0500 Subject: [PATCH 2/3] Explicitly forbid dark screenshots if not prefering dark mode --- src/Views/AppInfoView.vala | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/Views/AppInfoView.vala b/src/Views/AppInfoView.vala index 8d53208fa..b6693c397 100644 --- a/src/Views/AppInfoView.vala +++ b/src/Views/AppInfoView.vala @@ -945,14 +945,15 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage { var prefer_dark_theme = Gtk.Settings.get_default ().gtk_application_prefer_dark_theme; screenshots.foreach ((screenshot) => { var environment_id = screenshot.get_environment (); - if (prefer_dark_theme && environment_id != null) { + if (environment_id != null) { var environment_split = environment_id.split (":", 2); - if (environment_split.length != 2) { + if (prefer_dark_theme && environment_split.length != 2) { return; } var color_scheme = AppStream.ColorSchemeKind.from_string (environment_split[1]); - if (color_scheme != AppStream.ColorSchemeKind.DARK) { + if ((prefer_dark_theme && color_scheme != AppStream.ColorSchemeKind.DARK) || + (!prefer_dark_theme && color_scheme == AppStream.ColorSchemeKind.DARK)) { return; } } From fdeb7cc8d85a71684fcabb39e5b9fcaba82048f6 Mon Sep 17 00:00:00 2001 From: italo-capasso Date: Sun, 8 Dec 2024 22:02:38 -0500 Subject: [PATCH 3/3] Removing trailing whtespace that breaks the linter --- src/Views/AppInfoView.vala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Views/AppInfoView.vala b/src/Views/AppInfoView.vala index b6693c397..5373dbebd 100644 --- a/src/Views/AppInfoView.vala +++ b/src/Views/AppInfoView.vala @@ -945,7 +945,7 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage { var prefer_dark_theme = Gtk.Settings.get_default ().gtk_application_prefer_dark_theme; screenshots.foreach ((screenshot) => { var environment_id = screenshot.get_environment (); - if (environment_id != null) { + if (environment_id != null) { var environment_split = environment_id.split (":", 2); if (prefer_dark_theme && environment_split.length != 2) { return; @@ -957,7 +957,7 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage { return; } } - + AppStream.Image? best_image = null; screenshot.get_images ().foreach ((image) => { // Image is better than no image