static void ide_recent_projects_constructed (GObject *object) { IdeRecentProjects *self = IDE_RECENT_PROJECTS (object); G_OBJECT_CLASS (ide_recent_projects_parent_class)->constructed (object); ide_recent_projects_load_recent (self); }
void ide_recent_projects_discover_async (IdeRecentProjects *self, gboolean recent_only, GCancellable *cancellable, GAsyncReadyCallback callback, gpointer user_data) { g_autoptr(GTask) task = NULL; gsize i; g_return_if_fail (IDE_IS_RECENT_PROJECTS (self)); g_return_if_fail (!cancellable || G_IS_CANCELLABLE (cancellable)); task = g_task_new (self, cancellable, callback, user_data); if (self->discovered) { g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_FAILED, _("%s() may only be executed once"), G_STRFUNC); return; } self->discovered = TRUE; ide_recent_projects_load_recent (self); if (recent_only) { g_task_return_boolean (task, TRUE); return; } self->active = self->miners->len; if (self->active == 0) { g_task_return_boolean (task, TRUE); return; } for (i = 0; i < self->miners->len; i++) { IdeProjectMiner *miner; miner = g_ptr_array_index (self->miners, i); ide_project_miner_mine_async (miner, self->cancellable, ide_recent_projects__miner_mine_cb, g_object_ref (task)); } }