/** * gs_plugin_loader_get_category_apps: **/ GList * gs_plugin_loader_get_category_apps (GsPluginLoader *plugin_loader, GsCategory *category, GsPluginRefineFlags flags, GCancellable *cancellable, GError **error) { GsPluginLoaderHelper helper; /* create temp object */ helper.context = g_main_context_new (); helper.loop = g_main_loop_new (helper.context, FALSE); helper.error = error; g_main_context_push_thread_default (helper.context); /* run async method */ gs_plugin_loader_get_category_apps_async (plugin_loader, category, flags, cancellable, (GAsyncReadyCallback) gs_plugin_loader_get_category_apps_finish_sync, &helper); g_main_loop_run (helper.loop); g_main_context_pop_thread_default (helper.context); g_main_loop_unref (helper.loop); g_main_context_unref (helper.context); return helper.list; }
static void gs_shell_category_populate_filtered (GsShellCategory *shell) { GsShellCategoryPrivate *priv = shell->priv; GsCategory *parent; GtkWidget *tile; guint i; if (priv->cancellable != NULL) { g_cancellable_cancel (priv->cancellable); g_object_unref (priv->cancellable); } priv->cancellable = g_cancellable_new (); parent = gs_category_get_parent (priv->category); if (parent == NULL) { g_debug ("search using %s", gs_category_get_id (priv->category)); } else { g_debug ("search using %s/%s", gs_category_get_id (parent), gs_category_get_id (priv->category)); } gtk_grid_remove_column (GTK_GRID (priv->category_detail_grid), 1); gtk_grid_remove_column (GTK_GRID (priv->category_detail_grid), 0); for (i = 0; i < MIN (30, gs_category_get_size (priv->category)); i++) { tile = gs_app_tile_new (NULL); gtk_grid_attach (GTK_GRID (priv->category_detail_grid), tile, (i % 2), i / 2, 1, 1); } gtk_grid_attach (GTK_GRID (priv->category_detail_grid), priv->col0_placeholder, 0, 0, 1, 1); gtk_grid_attach (GTK_GRID (priv->category_detail_grid), priv->col1_placeholder, 1, 0, 1, 1); gs_plugin_loader_get_category_apps_async (priv->plugin_loader, priv->category, GS_PLUGIN_REFINE_FLAGS_DEFAULT | GS_PLUGIN_REFINE_FLAGS_REQUIRE_RATING, priv->cancellable, gs_shell_category_get_apps_cb, shell); }
/** * gs_shell_overview_load: */ static void gs_shell_overview_load (GsShellOverview *self) { GsShellOverviewPrivate *priv = gs_shell_overview_get_instance_private (self); const gchar *category_of_day; g_autoptr(GDateTime) date = NULL; priv->empty = TRUE; date = g_date_time_new_now_utc (); switch (g_date_time_get_day_of_year (date) % 4) { case 0: category_of_day = "Audio"; /* TRANSLATORS: this is a heading for audio applications which have been featured ('recommended') by the distribution */ gtk_label_set_label (GTK_LABEL (priv->popular_rotating_heading), _("Recommended Audio Applications")); break; case 1: category_of_day = "Game"; /* TRANSLATORS: this is a heading for games which have been featured ('recommended') by the distribution */ gtk_label_set_label (GTK_LABEL (priv->popular_rotating_heading), _("Recommended Games")); break; case 2: category_of_day = "Graphics"; /* TRANSLATORS: this is a heading for graphics applications which have been featured ('recommended') by the distribution */ gtk_label_set_label (GTK_LABEL (priv->popular_rotating_heading), _("Recommended Graphics Applications")); break; case 3: category_of_day = "Office"; /* TRANSLATORS: this is a heading for office applications which have been featured ('recommended') by the distribution */ gtk_label_set_label (GTK_LABEL (priv->popular_rotating_heading), _("Recommended Office Applications")); break; default: g_assert_not_reached (); break; } g_free (priv->category_of_day); priv->category_of_day = g_strdup (category_of_day); if (!priv->loading_featured) { priv->loading_featured = TRUE; gs_plugin_loader_get_featured_async (priv->plugin_loader, GS_PLUGIN_REFINE_FLAGS_DEFAULT, priv->cancellable, gs_shell_overview_get_featured_cb, self); priv->refresh_count++; } if (!priv->loading_popular) { priv->loading_popular = TRUE; gs_plugin_loader_get_popular_async (priv->plugin_loader, GS_PLUGIN_REFINE_FLAGS_DEFAULT, priv->cancellable, gs_shell_overview_get_popular_cb, self); priv->refresh_count++; } if (!priv->loading_popular_rotating) { LoadData *load_data; g_autoptr(GsCategory) category = NULL; g_autoptr(GsCategory) featured_category = NULL; category = gs_category_new (NULL, category_of_day, NULL); featured_category = gs_category_new (category, "featured", NULL); load_data = g_slice_new0 (LoadData); load_data->category = g_object_ref (category); load_data->self = g_object_ref (self); priv->loading_popular_rotating = TRUE; gs_plugin_loader_get_category_apps_async (priv->plugin_loader, featured_category, GS_PLUGIN_REFINE_FLAGS_DEFAULT, priv->cancellable, gs_shell_overview_get_popular_rotating_cb, load_data); priv->refresh_count++; } if (!priv->loading_categories) { priv->loading_categories = TRUE; gs_plugin_loader_get_categories_async (priv->plugin_loader, GS_PLUGIN_REFINE_FLAGS_DEFAULT, priv->cancellable, gs_shell_overview_get_categories_cb, self); priv->refresh_count++; } }