[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
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [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
- Date: Fri, 14 Oct 2022 07:01:36 +0000 (UTC)
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]