From 7436d31147114c0264c466bb0653ee2c646a4a31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Danielle=20For=C3=A9?= Date: Wed, 25 Feb 2026 11:04:10 -0800 Subject: [PATCH] Banner: simplify construction --- src/Views/Homepage.vala | 4 ++-- src/Widgets/Banner.vala | 33 +++++++++++++-------------------- 2 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/Views/Homepage.vala b/src/Views/Homepage.vala index c56c8f534..0ee1eae0b 100644 --- a/src/Views/Homepage.vala +++ b/src/Views/Homepage.vala @@ -181,7 +181,7 @@ public class AppCenter.Homepage : Adw.NavigationPage { var local_package = App.local_package; if (local_package != null) { - banner_carousel.prepend (new Widgets.Banner.from_package (local_package)); + banner_carousel.prepend (new Widgets.Banner (local_package)); } load_banners_and_carousels (); @@ -222,7 +222,7 @@ public class AppCenter.Homepage : Adw.NavigationPage { if (!installed) { packages_in_banner.add (package); - banner_carousel.append (new Widgets.Banner.from_package (package)); + banner_carousel.append (new Widgets.Banner (package)); } } diff --git a/src/Widgets/Banner.vala b/src/Widgets/Banner.vala index 31e3025f5..5be513faf 100644 --- a/src/Widgets/Banner.vala +++ b/src/Widgets/Banner.vala @@ -20,30 +20,18 @@ const int MILLISECONDS_BETWEEN_BANNER_ITEMS = 5000; public class AppCenter.Widgets.Banner : Gtk.Button { - public AppIcon app_icon { get; construct; } - public string brand_color { get; construct; } - public string description { get; construct; } - public string app_name { get; construct; } - public string summary { get; construct; } + public AppCenterCore.Package package { get; construct; } - public Banner.from_package (AppCenterCore.Package package) { + public Banner (AppCenterCore.Package package) { + Object (package: package); + } + + construct { var app_icon = new AppIcon (128) { package = package }; - Object ( - app_name: package.name, - summary: package.get_summary (), - description: package.get_description (), - app_icon: app_icon, - brand_color: package.get_color_primary (), - action_name: MainWindow.ACTION_PREFIX + MainWindow.ACTION_SHOW_PACKAGE, - action_target: new Variant.string (package.uid) - ); - } - - construct { - var name_label = new Gtk.Label (app_name) { + var name_label = new Gtk.Label (package.name) { max_width_chars = 50, use_markup = true, wrap = true, @@ -51,7 +39,7 @@ public class AppCenter.Widgets.Banner : Gtk.Button { }; name_label.add_css_class ("name"); - var summary_label = new Gtk.Label (summary) { + var summary_label = new Gtk.Label (package.get_summary ()) { max_width_chars = 50, use_markup = true, wrap = true, @@ -59,6 +47,7 @@ public class AppCenter.Widgets.Banner : Gtk.Button { }; summary_label.add_css_class ("summary"); + var description = package.get_description (); if (description != null && description != "") { // We only want the first line/paragraph description = description.split ("\n")[0]; @@ -93,9 +82,13 @@ public class AppCenter.Widgets.Banner : Gtk.Button { hexpand = true; child = outer_box; + var brand_color = package.get_color_primary (); if (brand_color != null) { set_accent_color (brand_color, this); } + + action_name = MainWindow.ACTION_PREFIX + MainWindow.ACTION_SHOW_PACKAGE; + action_target = new Variant.string (package.uid); } private static Gee.HashMap? providers;