[gnome-software/1630-new-updated-apps-are-not-actually-new: 8/9] gs-overview-page: Sort recent applications by their release date
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-software/1630-new-updated-apps-are-not-actually-new: 8/9] gs-overview-page: Sort recent applications by their release date
- Date: Fri, 25 Feb 2022 11:26:47 +0000 (UTC)
commit 2c5403e02584889c2b9b179e97a41fe902ba98b3
Author: Milan Crha <mcrha redhat com>
Date: Thu Feb 24 13:06:07 2022 +0100
gs-overview-page: Sort recent applications by their release date
Thus the list shows the most recently updated applications first.
Closes https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1630
src/gs-overview-page.c | 18 ++++++++++++++++--
1 file changed, 16 insertions(+), 2 deletions(-)
---
diff --git a/src/gs-overview-page.c b/src/gs-overview-page.c
index 50e2e2cfb..36463030a 100644
--- a/src/gs-overview-page.c
+++ b/src/gs-overview-page.c
@@ -169,6 +169,18 @@ out:
gs_overview_page_decrement_action_cnt (self);
}
+static gint
+gs_overview_page_sort_recent_cb (GsApp *app1,
+ GsApp *app2,
+ gpointer user_data)
+{
+ if (gs_app_get_release_date (app1) < gs_app_get_release_date (app2))
+ return 1;
+ if (gs_app_get_release_date (app1) == gs_app_get_release_date (app2))
+ return g_strcmp0 (gs_app_get_name (app1), gs_app_get_name (app2));
+ return -1;
+}
+
static void
gs_overview_page_get_recent_cb (GObject *source_object, GAsyncResult *res, gpointer user_data)
{
@@ -198,7 +210,7 @@ gs_overview_page_get_recent_cb (GObject *source_object, GAsyncResult *res, gpoin
goto out;
}
- gs_app_list_randomize (list);
+ gs_app_list_sort (list, gs_overview_page_sort_recent_cb, NULL);
gs_widget_remove_all (self->box_recent, (GsRemoveFunc) gtk_flow_box_remove);
@@ -515,12 +527,14 @@ gs_overview_page_load (GsOverviewPage *self)
self->loading_recent = TRUE;
plugin_job = gs_plugin_job_newv (GS_PLUGIN_ACTION_GET_RECENT,
"age", (guint64) (60 * 60 * 24 * 60),
- "max-results", 20,
+ /* To have large-enough set, in case filtering removes some
non-applicable apps */
+ "max-results", 3 * N_TILES,
"refine-flags", GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING |
GS_PLUGIN_REFINE_FLAGS_REQUIRE_ICON,
"dedupe-flags", GS_APP_LIST_FILTER_FLAG_PREFER_INSTALLED |
GS_APP_LIST_FILTER_FLAG_KEY_ID_PROVIDES,
NULL);
+ gs_plugin_job_set_sort_func (plugin_job, gs_overview_page_sort_recent_cb, NULL);
gs_plugin_loader_job_process_async (self->plugin_loader,
plugin_job,
self->cancellable,
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]