/** * fm_launch_paths * @ctx: (allow-none): a launch context * @paths: (element-type FmPath): files to launch * @launcher: #FmFileLauncher with callbacks * @user_data: data supplied for callbacks * * Launches files using callbacks in @launcher. * * Returns: %TRUE in case of success. * * Since: 0.1.0 */ gboolean fm_launch_paths(GAppLaunchContext* ctx, GList* paths, FmFileLauncher* launcher, gpointer user_data) { FmFileInfoJob* job = fm_file_info_job_new(NULL, 0); GList* l; QueryErrorData data; gboolean ret; for(l=paths;l;l=l->next) fm_file_info_job_add(job, (FmPath*)l->data); data.ctx = ctx; data.launcher = launcher; data.user_data = user_data; g_signal_connect(job, "error", G_CALLBACK(on_query_target_info_error), &data); ret = fm_job_run_sync_with_mainloop(FM_JOB(job)); g_signal_handlers_disconnect_by_func(job, on_query_target_info_error, &data); if(ret) { GList* file_infos = fm_file_info_list_peek_head_link(job->file_infos); if(file_infos) ret = fm_launch_files(ctx, file_infos, launcher, user_data); else ret = FALSE; } g_object_unref(job); return ret; }
gboolean fm_launch_paths(GAppLaunchContext* ctx, GList* paths, FmFileLauncher* launcher, gpointer user_data) { FmJob* job = fm_file_info_job_new(NULL); GList* l; gboolean ret; for(l=paths;l;l=l->next) fm_file_info_job_add(FM_FILE_INFO_JOB(job), (FmPath*)l->data); ret = fm_job_run_sync_with_mainloop(job); if(ret) { GList* file_infos = fm_list_peek_head_link(FM_FILE_INFO_JOB(job)->file_infos); if(file_infos) ret = fm_launch_files(ctx, file_infos, launcher, user_data); else ret = FALSE; } g_object_unref(job); return ret; }
//static bool FileLauncher::launchFiles(QWidget* parent, GList* file_infos) { FmAppLaunchContext* context = fm_app_launch_context_new_for_widget(parent); bool ret = fm_launch_files(G_APP_LAUNCH_CONTEXT(context), file_infos, &funcs, this); g_object_unref(context); return ret; }