[gnome-software/1021-please-add-a-way-to-show-only-open-source-apps: 4/6] misc: Filter apps according to "show-only-free-apps" setting




commit dce91ea84fcee03b711c6bcd9267b26fcb5c6b57
Author: Milan Crha <mcrha redhat com>
Date:   Fri Oct 14 08:35:18 2022 +0200

    misc: Filter apps according to "show-only-free-apps" setting
    
    Let the list-apps jobs filter the result for freely licensed apps
    when the user set it to do so.

 src/gs-application.c           |  4 ++--
 src/gs-category-page.c         |  8 ++++++--
 src/gs-details-page.c          |  8 ++++++--
 src/gs-extras-page.c           |  8 ++++++--
 src/gs-overview-page.c         | 12 ++++++++----
 src/gs-search-page.c           |  2 +-
 src/gs-shell-search-provider.c | 10 +++++++++-
 7 files changed, 38 insertions(+), 14 deletions(-)
---
diff --git a/src/gs-application.c b/src/gs-application.c
index 6777c5fea..211ef6335 100644
--- a/src/gs-application.c
+++ b/src/gs-application.c
@@ -531,7 +531,7 @@ details_activated (GSimpleAction *action,
                                                          GS_APP_LIST_FILTER_FLAG_KEY_ID_PROVIDES,
                                          "sort-func", gs_utils_app_sort_match_value,
                                          NULL);
-               plugin_job = gs_plugin_job_list_apps_new (query, GS_PLUGIN_LIST_APPS_FLAGS_NONE);
+               plugin_job = gs_plugin_job_list_apps_new (query, gs_shell_get_list_apps_flags (app->shell));
                gs_plugin_loader_job_process_async (app->plugin_loader, plugin_job,
                                                    app->cancellable,
                                                    _search_launchable_details_cb,
@@ -812,7 +812,7 @@ launch_activated (GSimpleAction *action,
                                  "dedupe-flags", GS_PLUGIN_JOB_DEDUPE_FLAGS_DEFAULT,
                                  "sort-func", gs_utils_app_sort_match_value,
                                  NULL);
-       search_job = gs_plugin_job_list_apps_new (query, GS_PLUGIN_LIST_APPS_FLAGS_NONE);
+       search_job = gs_plugin_job_list_apps_new (query, gs_shell_get_list_apps_flags (self->shell));
        list = gs_plugin_loader_job_process (self->plugin_loader, search_job, self->cancellable, &error);
        if (!list) {
                g_warning ("Failed to search for application '%s' (from '%s'): %s", id, 
management_plugin_name, error ? error->message : "Unknown error");
diff --git a/src/gs-category-page.c b/src/gs-category-page.c
index ba57ed2c8..cf5ee02ea 100644
--- a/src/gs-category-page.c
+++ b/src/gs-category-page.c
@@ -437,7 +437,9 @@ gs_category_page_load_category (GsCategoryPage *self)
                                                   "refine-flags", GS_PLUGIN_REFINE_FLAGS_REQUIRE_KUDOS,
                                                   "sort-func", gs_utils_app_sort_name,
                                                   NULL);
-               featured_plugin_job = gs_plugin_job_list_apps_new (featured_query, 
GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE);
+               featured_plugin_job = gs_plugin_job_list_apps_new (featured_query,
+                                                                  GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                                                  gs_page_get_list_apps_flags (GS_PAGE 
(self)));
                gs_plugin_loader_job_process_async (self->plugin_loader,
                                                    featured_plugin_job,
                                                    self->cancellable,
@@ -456,7 +458,9 @@ gs_category_page_load_category (GsCategoryPage *self)
                                                       GS_APP_LIST_FILTER_FLAG_KEY_ID_PROVIDES,
                                       "sort-func", _max_results_sort_cb,
                                       NULL);
-       main_plugin_job = gs_plugin_job_list_apps_new (main_query, GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE);
+       main_plugin_job = gs_plugin_job_list_apps_new (main_query,
+                                                      GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                                      gs_page_get_list_apps_flags (GS_PAGE (self)));
        gs_plugin_loader_job_process_async (self->plugin_loader,
                                            main_plugin_job,
                                            self->cancellable,
diff --git a/src/gs-details-page.c b/src/gs-details-page.c
index b1839ae03..8efea4d13 100644
--- a/src/gs-details-page.c
+++ b/src/gs-details-page.c
@@ -1195,7 +1195,9 @@ gs_details_page_refresh_all (GsDetailsPage *self)
                                                  "dedupe-flags", GS_APP_LIST_FILTER_FLAG_KEY_ID_PROVIDES,
                                                  NULL);
 
-                       plugin_job = gs_plugin_job_list_apps_new (query, 
GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE);
+                       plugin_job = gs_plugin_job_list_apps_new (query,
+                                                                 GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                                                 gs_page_get_list_apps_flags (GS_PAGE 
(self)));
 
                        g_debug ("searching other apps for: '%s'", names[0]);
                        gs_plugin_loader_job_process_async (self->plugin_loader, plugin_job,
@@ -1701,7 +1703,9 @@ gs_details_page_load_stage2 (GsDetailsPage *self,
                                  "filter-func", gs_details_page_filter_origin,
                                  "sort-func", gs_utils_app_sort_priority,
                                  NULL);
-       plugin_job2 = gs_plugin_job_list_apps_new (query, GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE);
+       plugin_job2 = gs_plugin_job_list_apps_new (query,
+                                                  GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                                  gs_page_get_list_apps_flags (GS_PAGE (self)));
 
        gs_plugin_loader_job_process_async (self->plugin_loader, plugin_job1,
                                            self->cancellable,
diff --git a/src/gs-extras-page.c b/src/gs-extras-page.c
index 89f1a69cc..c612650a3 100644
--- a/src/gs-extras-page.c
+++ b/src/gs-extras-page.c
@@ -746,7 +746,9 @@ gs_extras_page_load (GsExtrasPage *self, GPtrArray *array_search_data)
                                                  "refine-flags", refine_flags,
                                                  NULL);
 
-                       plugin_job = gs_plugin_job_list_apps_new (query, 
GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE);
+                       plugin_job = gs_plugin_job_list_apps_new (query,
+                                                                 GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                                                 gs_page_get_list_apps_flags (GS_PAGE 
(self)));
 
                        g_debug ("searching filename: '%s'", search_data->search_filename);
                        gs_plugin_loader_job_process_async (self->plugin_loader,
@@ -776,7 +778,9 @@ gs_extras_page_load (GsExtrasPage *self, GPtrArray *array_search_data)
                                                  "refine-flags", refine_flags,
                                                  NULL);
 
-                       plugin_job = gs_plugin_job_list_apps_new (query, 
GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE);
+                       plugin_job = gs_plugin_job_list_apps_new (query,
+                                                                 GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                                                 gs_page_get_list_apps_flags (GS_PAGE 
(self)));
 
                        g_debug ("searching what provides: '%s'", search_data->search);
                        gs_plugin_loader_job_process_async (self->plugin_loader,
diff --git a/src/gs-overview-page.c b/src/gs-overview-page.c
index 7a3d76606..96bc94e92 100644
--- a/src/gs-overview-page.c
+++ b/src/gs-overview-page.c
@@ -653,7 +653,8 @@ gs_overview_page_load (GsOverviewPage *self)
        if (!self->loading_featured) {
                g_autoptr(GsPluginJob) plugin_job = NULL;
                g_autoptr(GsAppQuery) query = NULL;
-               GsPluginListAppsFlags flags = GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE;
+               GsPluginListAppsFlags flags = GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                             gs_page_get_list_apps_flags (GS_PAGE (self));
 
                query = gs_app_query_new ("is-featured", GS_APP_QUERY_TRISTATE_TRUE,
                                          "max-results", 5,
@@ -678,7 +679,8 @@ gs_overview_page_load (GsOverviewPage *self)
        if (!self->loading_deployment_featured && self->deployment_featured != NULL) {
                g_autoptr(GsPluginJob) plugin_job = NULL;
                g_autoptr(GsAppQuery) query = NULL;
-               GsPluginListAppsFlags flags = GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE;
+               GsPluginListAppsFlags flags = GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                             gs_page_get_list_apps_flags (GS_PAGE (self));
 
                self->loading_deployment_featured = TRUE;
 
@@ -704,7 +706,8 @@ gs_overview_page_load (GsOverviewPage *self)
        if (!self->loading_curated) {
                g_autoptr(GsPluginJob) plugin_job = NULL;
                g_autoptr(GsAppQuery) query = NULL;
-               GsPluginListAppsFlags flags = GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE;
+               GsPluginListAppsFlags flags = GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                             gs_page_get_list_apps_flags (GS_PAGE (self));
 
                query = gs_app_query_new ("is-curated", GS_APP_QUERY_TRISTATE_TRUE,
                                          "max-results", N_TILES,
@@ -731,7 +734,8 @@ gs_overview_page_load (GsOverviewPage *self)
                g_autoptr(GDateTime) now = NULL;
                g_autoptr(GDateTime) released_since = NULL;
                g_autoptr(GsAppQuery) query = NULL;
-               GsPluginListAppsFlags flags = GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE;
+               GsPluginListAppsFlags flags = GS_PLUGIN_LIST_APPS_FLAGS_INTERACTIVE |
+                                             gs_page_get_list_apps_flags (GS_PAGE (self));
 
                now = g_date_time_new_now_local ();
                released_since = g_date_time_add_seconds (now, -(60 * 60 * 24 * 30));
diff --git a/src/gs-search-page.c b/src/gs-search-page.c
index 3b54c2c5c..756c3434b 100644
--- a/src/gs-search-page.c
+++ b/src/gs-search-page.c
@@ -311,7 +311,7 @@ gs_search_page_load (GsSearchPage *self)
                                  "sort-func", gs_search_page_sort_cb,
                                  "sort-user-data", self,
                                  NULL);
-       plugin_job = gs_plugin_job_list_apps_new (query, GS_PLUGIN_LIST_APPS_FLAGS_NONE);
+       plugin_job = gs_plugin_job_list_apps_new (query, gs_page_get_list_apps_flags (GS_PAGE (self)));
        gs_plugin_loader_job_process_async (self->plugin_loader, plugin_job,
                                            self->search_cancellable,
                                            gs_search_page_get_search_cb,
diff --git a/src/gs-shell-search-provider.c b/src/gs-shell-search-provider.c
index 5003a5b9b..a0cb0ce0a 100644
--- a/src/gs-shell-search-provider.c
+++ b/src/gs-shell-search-provider.c
@@ -150,6 +150,8 @@ execute_search (GsShellSearchProvider  *self,
        PendingSearch *pending_search;
        g_autoptr(GsPluginJob) plugin_job = NULL;
        g_autoptr(GsAppQuery) query = NULL;
+       g_autoptr(GSettings) settings = NULL;
+       GsPluginListAppsFlags flags;
 
        g_cancellable_cancel (self->cancellable);
        g_clear_object (&self->cancellable);
@@ -168,6 +170,12 @@ execute_search (GsShellSearchProvider  *self,
        g_application_hold (g_application_get_default ());
        self->cancellable = g_cancellable_new ();
 
+       settings = g_settings_new ("org.gnome.software");
+       if (g_settings_get_boolean (settings, "show-only-free-apps"))
+               flags = GS_PLUGIN_LIST_APPS_FILTER_FREELY_LICENSED;
+       else
+               flags = GS_PLUGIN_LIST_APPS_FLAGS_NONE;
+
        query = gs_app_query_new ("keywords", terms,
                                  "refine-flags", GS_PLUGIN_REFINE_FLAGS_REQUIRE_ICON |
                                                  GS_PLUGIN_REFINE_FLAGS_REQUIRE_ORIGIN_HOSTNAME,
@@ -177,7 +185,7 @@ execute_search (GsShellSearchProvider  *self,
                                  "sort-func", gs_shell_search_provider_sort_cb,
                                  "sort-user-data", self,
                                  NULL);
-       plugin_job = gs_plugin_job_list_apps_new (query, GS_PLUGIN_LIST_APPS_FLAGS_NONE);
+       plugin_job = gs_plugin_job_list_apps_new (query, flags);
 
        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]