Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 14 additions & 5 deletions src/Core/FlatpakBackend.vala
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,9 @@
public class AppCenterCore.FlatpakPackage : Package {
public weak Flatpak.Installation installation { public get; construct; }

public FlatpakPackage (Flatpak.Installation installation, AppStream.Component component) {
public FlatpakPackage (string uid, Flatpak.Installation installation, AppStream.Component component) {
Object (
uid: uid,
installation: installation,
component: component
);
Expand Down Expand Up @@ -233,7 +234,7 @@ public class AppCenterCore.FlatpakBackend : Object {
runtime_updates_component.summary = _("Updates to app runtimes");
runtime_updates_component.add_icon (runtime_icon);

runtime_updates = new AppCenterCore.Package (runtime_updates_component);
runtime_updates = new AppCenterCore.Package ("runtime-updates", runtime_updates_component);

additional_updates = new GLib.ListStore (typeof (Package));
additional_updates.append (runtime_updates);
Expand Down Expand Up @@ -400,6 +401,14 @@ public class AppCenterCore.FlatpakBackend : Object {
get_updates.begin (null);
}

public Package? get_package_by_uid (string uid) {
if (uid == runtime_updates.uid) {
return runtime_updates;
}

return package_list[uid];
}

public void notify_package_changed (Package package) {
GLib.ListStore store;
if (package.is_runtime_updates) {
Expand Down Expand Up @@ -1332,7 +1341,7 @@ public class AppCenterCore.FlatpakBackend : Object {
if (package != null) {
package.replace_component (comp);
} else {
package = new FlatpakPackage (user_installation, comp);
package = new FlatpakPackage (key, user_installation, comp);
}

new_package_list[key] = package;
Expand Down Expand Up @@ -1361,7 +1370,7 @@ public class AppCenterCore.FlatpakBackend : Object {
if (package != null) {
package.replace_component (comp);
} else {
package = new FlatpakPackage (system_installation, comp);
package = new FlatpakPackage (key, system_installation, comp);
}

new_package_list[key] = package;
Expand Down Expand Up @@ -2248,7 +2257,7 @@ public class AppCenterCore.FlatpakBackend : Object {

user_appstream_pool.add_components (component_box);

var package = new AppCenterCore.FlatpakPackage (user_installation, component);
var package = new AppCenterCore.FlatpakPackage (id, user_installation, component);
package_list[id] = package;

return package;
Expand Down
6 changes: 4 additions & 2 deletions src/Core/Package.vala
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,8 @@ public class AppCenterCore.Package : Object {
public const string LOCAL_ID_SUFFIX = ".appcenter-local";
public const string DEFAULT_PRICE_DOLLARS = "1";

public string uid { get; construct; }

public AppStream.Component component { get; protected set; }
public ChangeInformation change_information { public get; private set; }
public GLib.Cancellable action_cancellable { public get; private set; }
Expand Down Expand Up @@ -427,8 +429,8 @@ public class AppCenterCore.Package : Object {
action_cancellable = new GLib.Cancellable ();
}

public Package (AppStream.Component component) {
Object (component: component);
public Package (string uid, AppStream.Component component) {
Object (uid: uid, component: component);
}

public void replace_component (AppStream.Component component) {
Expand Down
41 changes: 18 additions & 23 deletions src/MainWindow.vala
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
*/

public class AppCenter.MainWindow : Gtk.ApplicationWindow {
public const string ACTION_PREFIX = "win.";
public const string ACTION_SHOW_PACKAGE = "show-package";

private Granite.Toast toast;
private Adw.NavigationView navigation_view;
private Granite.OverlayBar overlaybar;
Expand Down Expand Up @@ -117,6 +120,10 @@ public class AppCenter.MainWindow : Gtk.ApplicationWindow {
child = box;
titlebar = new Gtk.Grid () { visible = false };

var show_package_action = new SimpleAction (ACTION_SHOW_PACKAGE, VariantType.STRING);
show_package_action.activate.connect (on_show_package);
add_action (show_package_action);

var network_monitor = NetworkMonitor.get_default ();
network_monitor.bind_property ("network-available", network_info_bar, "revealed", BindingFlags.INVERT_BOOLEAN | BindingFlags.SYNC_CREATE);

Expand All @@ -128,10 +135,6 @@ public class AppCenter.MainWindow : Gtk.ApplicationWindow {
show_category (category);
});

homepage.show_package.connect ((package) => {
show_package (package);
});

navigation_view.popped.connect (update_navigation);
navigation_view.pushed.connect (update_navigation);

Expand All @@ -144,10 +147,6 @@ public class AppCenter.MainWindow : Gtk.ApplicationWindow {

if (installed_view == null) {
installed_view = new Views.AppListUpdateView ();

installed_view.show_app.connect ((package) => {
show_package (package);
});
}
}

Expand All @@ -164,6 +163,15 @@ public class AppCenter.MainWindow : Gtk.ApplicationWindow {
return true;
}

private void on_show_package (SimpleAction action, Variant? param) {
var uid = param.get_string ();
var package = AppCenterCore.FlatpakBackend.get_default ().get_package_by_uid (uid);

if (package != null) {
show_package (package);
}
}

public void show_package (AppCenterCore.Package package) {
var pk_child = navigation_view.find_page (package.hash);
if (pk_child != null) {
Expand All @@ -180,11 +188,8 @@ public class AppCenter.MainWindow : Gtk.ApplicationWindow {
}
}

var app_info_view = new Views.AppInfoView (package);
navigation_view.push (app_info_view);
navigation_view.push (new Views.AppInfoView (package));
navigation_view.animate_transitions = true;

app_info_view.show_other_package.connect (show_package);
}

private void update_navigation () {
Expand All @@ -204,10 +209,6 @@ public class AppCenter.MainWindow : Gtk.ApplicationWindow {
mimetype = mimetype
};

search_view.show_app.connect ((package) => {
show_package (package);
});

navigation_view.push (search_view);
}

Expand Down Expand Up @@ -235,12 +236,6 @@ public class AppCenter.MainWindow : Gtk.ApplicationWindow {
}

private void show_category (AppStream.Category category) {
var category_view = new CategoryView (category);

navigation_view.push (category_view);

category_view.show_app.connect ((package) => {
show_package (package);
});
navigation_view.push (new CategoryView (category));
}
}
49 changes: 15 additions & 34 deletions src/Views/AppInfoView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
@define-color banner_fg_color %s;
""";

public signal void show_other_package (AppCenterCore.Package package);

public AppCenterCore.Package package { get; construct set; }

GenericArray<AppStream.Screenshot> screenshots;
Expand All @@ -37,7 +35,6 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
private Gtk.DropDown origin_dropdown;
private Gtk.Label app_subtitle;
private Gtk.Overlay screenshot_overlay;
private Gtk.Revealer origin_combo_revealer;
private Adw.Carousel screenshot_carousel;
private Adw.Clamp screenshot_not_found_clamp;
private Gtk.Stack screenshot_stack;
Expand Down Expand Up @@ -180,19 +177,22 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
factory = list_factory
};

origin_combo_revealer = new Gtk.Revealer () {
child = origin_dropdown,
overflow = VISIBLE,
transition_type = SLIDE_DOWN
};
foreach (var origin_package in package.origin_packages) {
origin_liststore.append (origin_package);
if (origin_package == package) {
origin_dropdown.selected = origin_liststore.n_items - 1;
}
}

origin_dropdown.visible = origin_liststore.n_items > 1;

var header_grid = new Gtk.Grid () {
column_spacing = 12,
valign = Gtk.Align.CENTER
};
header_grid.attach (app_title, 0, 0);
header_grid.attach (app_subtitle, 0, 1, 2);
header_grid.attach (origin_combo_revealer, 0, 2, 2);
header_grid.attach (origin_dropdown, 0, 2, 2);

if (!package.is_local) {
size_label = new Widgets.SizeLabel () {
Expand Down Expand Up @@ -673,25 +673,16 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
});
}

var addon_list = new AddonList (package);
addon_list.show_addon.connect ((package) => show_other_package (package));

var link_listbox = new LinkListBox (package_component);

content_box.append (addon_list);
content_box.append (new AddonList (package));
content_box.append (link_listbox);

var body_clamp = new Adw.Clamp () {
child = content_box,
maximum_size = MAX_WIDTH
};

var author_view = new AuthorView (package, MAX_WIDTH);

author_view.show_other_package.connect ((package) => {
show_other_package (package);
});

var box = new Gtk.Box (Gtk.Orientation.VERTICAL, 12);
box.append (header);
box.append (content_warning_clamp);
Expand All @@ -702,7 +693,7 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {

box.append (supports_clamp);
box.append (body_clamp);
box.append (author_view);
box.append (new AuthorView (package, MAX_WIDTH));

var scrolled = new Gtk.ScrolledWindow () {
child = box,
Expand Down Expand Up @@ -739,7 +730,10 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
origin_dropdown.notify["selected-item"].connect (() => {
var selected_origin_package = (AppCenterCore.Package) origin_dropdown.selected_item;
if (selected_origin_package != null && selected_origin_package != package) {
show_other_package (selected_origin_package);
activate_action_variant (
MainWindow.ACTION_PREFIX + MainWindow.ACTION_SHOW_PACKAGE,
selected_origin_package.uid
);
}
});

Expand Down Expand Up @@ -889,19 +883,6 @@ public class AppCenter.Views.AppInfoView : Adw.NavigationPage {
}

private void load_more_content () {
uint count = 0;
foreach (var origin_package in package.origin_packages) {
origin_liststore.append (origin_package);
if (origin_package == package) {
origin_dropdown.selected = count;
}

count++;
if (count > 1) {
origin_combo_revealer.reveal_child = true;
}
}

new Thread<void*> ("content-loading", () => {
var description = package.get_description ();
Idle.add (() => {
Expand Down
14 changes: 0 additions & 14 deletions src/Views/AppListUpdateView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,6 @@
/** AppList for the Updates View. Sorts update_available first and shows headers.
* Does not show Uninstall Button **/
public class AppCenter.Views.AppListUpdateView : Adw.NavigationPage {
public signal void show_app (AppCenterCore.Package package);

private Granite.HeaderLabel header_label;
private Gtk.FlowBox installed_flowbox;
private Gtk.ListBox list_box;
Expand Down Expand Up @@ -186,18 +184,6 @@ public class AppCenter.Views.AppListUpdateView : Adw.NavigationPage {
/// TRANSLATORS: the name of the Installed Apps view
title = C_("view", "Installed");

list_box.row_activated.connect ((row) => {
if (row.get_child () is Widgets.InstalledPackageRowGrid) {
show_app (((Widgets.InstalledPackageRowGrid) row.get_child ()).package);
}
});

installed_flowbox.child_activated.connect ((child) => {
if (child.get_child () is Widgets.InstalledPackageRowGrid) {
show_app (((Widgets.InstalledPackageRowGrid) child.get_child ()).package);
}
});

App.settings.bind (
"automatic-updates",
automatic_updates_button,
Expand Down
8 changes: 0 additions & 8 deletions src/Views/AuthorView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,6 @@
*/

private class AppCenter.AuthorView : Gtk.Box {
public signal void show_other_package (AppCenterCore.Package package);

public AppCenterCore.Package package { get; construct; }
public int max_width { get; construct; }

Expand Down Expand Up @@ -65,11 +63,5 @@ private class AppCenter.AuthorView : Gtk.Box {
append (clamp);
add_css_class ("bottom-toolbar");
add_css_class (Granite.STYLE_CLASS_FLAT);

flowbox.child_activated.connect ((child) => {
var package_row_grid = (AppCenter.Widgets.ListPackageRowGrid) child.get_child ();

show_other_package (package_row_grid.package);
});
}
}
21 changes: 0 additions & 21 deletions src/Views/CategoryView.vala
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@
*/

public class AppCenter.CategoryView : Adw.NavigationPage {
public signal void show_app (AppCenterCore.Package package);

public AppStream.Category category { get; construct; }

private Gtk.Stack stack;
Expand Down Expand Up @@ -86,18 +84,6 @@ public class AppCenter.CategoryView : Adw.NavigationPage {

populate ();

recently_updated_flowbox.show_package.connect ((package) => {
show_app (package);
});

paid_flowbox.show_package.connect ((package) => {
show_app (package);
});

free_flowbox.show_package.connect ((package) => {
show_app (package);
});

AppCenterCore.FlatpakBackend.get_default ().package_list_changed.connect (() => {
populate ();
});
Expand Down Expand Up @@ -200,8 +186,6 @@ public class AppCenter.CategoryView : Adw.NavigationPage {
}

private class SubcategoryFlowbox : Gtk.Box {
public signal void show_package (AppCenterCore.Package package);

public string? label { get; construct; }

private static Gtk.SizeGroup size_group;
Expand Down Expand Up @@ -234,11 +218,6 @@ public class AppCenter.CategoryView : Adw.NavigationPage {
append (header);
}
append (flowbox);

flowbox.child_activated.connect ((child) => {
var row = (Widgets.ListPackageRowGrid) child.get_child ();
show_package (row.package);
});
}

public void bind_model (GLib.ListModel model) {
Expand Down
Loading
Loading