コード例 #1
0
ファイル: pragha-file-utils.c プロジェクト: TingPing/pragha
GList *
append_mobj_list_from_unknown_filename(GList *list, gchar *filename)
{
	PraghaMusicobject *mobj;
	PraghaMediaType file_type;

	if (is_dir_and_accessible(filename)) {
		list = append_mobj_list_from_folder (list, filename);
	}
	else {
		file_type = pragha_file_get_media_type (filename);
		switch (file_type) {
			case MEDIA_TYPE_AUDIO:
				mobj = new_musicobject_from_file (filename);
				if (G_LIKELY(mobj)) {
					list = g_list_append(list, mobj);
					add_recent_file(filename);
				}
				break;
			case MEDIA_TYPE_PLAYLIST:
				list = pragha_pl_parser_append_mobj_list_by_extension (list, filename);
				break;
			case MEDIA_TYPE_IMAGE:
			case MEDIA_TYPE_UNKNOWN:
			default:
				break;
		}
	}

	/* Have to give control to GTK periodically ... */
	pragha_process_gtk_events ();

	return list;
}
コード例 #2
0
GList *
pragha_dnd_plain_text_get_mobj_list (GtkSelectionData *data)
{
	PraghaMusicobject *mobj = NULL;
	gchar *filename = NULL;
	GList *list = NULL;

	CDEBUG(DBG_VERBOSE, "Target: PLAIN_TEXT");

	filename = (gchar*)gtk_selection_data_get_text(data);

	if (g_file_test(filename, G_FILE_TEST_IS_DIR)) {
		list = append_mobj_list_from_folder(list, filename);
	}
	else {
		mobj = new_musicobject_from_file(filename, NULL);
		if (G_LIKELY(mobj))
			list = g_list_prepend(list, mobj);

		/* Have to give control to GTK periodically ... */
		pragha_process_gtk_events ();
	}
	g_free(filename);

	return g_list_reverse (list);
}
コード例 #3
0
GList *
pragha_dnd_uri_list_get_mobj_list (GtkSelectionData *data)
{
	PraghaMusicobject *mobj = NULL;
	gchar **uris = NULL, *filename = NULL;
	GList *list = NULL;
	gint i = 0;

	CDEBUG(DBG_VERBOSE, "Target: URI_LIST");

	uris = gtk_selection_data_get_uris(data);

	if(uris){
		for(i = 0; uris[i] != NULL; i++) {
			filename = g_filename_from_uri(uris[i], NULL, NULL);
			if (g_file_test(filename, G_FILE_TEST_IS_DIR)){
				list = append_mobj_list_from_folder(list, filename);
			}
			else {
				mobj = new_musicobject_from_file(filename, NULL);
				if (G_LIKELY(mobj))
					list = g_list_prepend(list, mobj);
			}

			/* Have to give control to GTK periodically ... */
			pragha_process_gtk_events ();

			g_free(filename);
		}
		g_strfreev(uris);
	}

	return g_list_reverse (list);
}
コード例 #4
0
ファイル: pragha-file-utils.c プロジェクト: Yushenbo/pragha
GList *
append_mobj_list_from_folder(GList *list, gchar *dir_name)
{
	PraghaPreferences *preferences;
	PraghaMusicobject *mobj = NULL;
	PraghaMediaType file_type;
	GDir *dir;
	const gchar *next_file = NULL;
	gchar *ab_file;
	GError *error = NULL;

	dir = g_dir_open(dir_name, 0, &error);
	if (!dir) {
		g_critical("Unable to open library : %s", dir_name);
		return list;
	}

	next_file = g_dir_read_name(dir);
	while (next_file) {
		ab_file = g_strconcat(dir_name, G_DIR_SEPARATOR_S, next_file, NULL);

		if (is_dir_and_accessible(ab_file)) {
			preferences = pragha_preferences_get();
			if(pragha_preferences_get_add_recursively(preferences))
				list = append_mobj_list_from_folder(list, ab_file);
			g_object_unref(G_OBJECT(preferences));
		}
		else {
			file_type = pragha_file_get_media_type (ab_file);
			switch (file_type) {
				case MEDIA_TYPE_AUDIO:
					mobj = new_musicobject_from_file (ab_file);
					if (G_LIKELY(mobj))
						list = g_list_append(list, mobj);
					break;
				case MEDIA_TYPE_PLAYLIST:
					list = pragha_pl_parser_append_mobj_list_by_extension (list, ab_file);
					break;
				case MEDIA_TYPE_IMAGE:
				case MEDIA_TYPE_UNKNOWN:
				default:
					break;
			}
		}

		/* Have to give control to GTK periodically ... */
		pragha_process_gtk_events ();

		g_free(ab_file);
		next_file = g_dir_read_name(dir);
	}

	g_dir_close(dir);

	return list;
}
コード例 #5
0
ファイル: pragha-file-utils.c プロジェクト: TingPing/pragha
GList *
append_mobj_list_from_folder(GList *list, gchar *dir_name)
{
	PraghaPreferences *preferences;
	PraghaMusicobject *mobj = NULL;
	GDir *dir;
	const gchar *next_file = NULL;
	gchar *ab_file;
	GError *error = NULL;

	dir = g_dir_open(dir_name, 0, &error);
	if (!dir) {
		g_critical("Unable to open library : %s", dir_name);
		return list;
	}

	next_file = g_dir_read_name(dir);
	while (next_file) {
		ab_file = g_strconcat(dir_name, G_DIR_SEPARATOR_S, next_file, NULL);

		if (is_dir_and_accessible(ab_file)) {
			preferences = pragha_preferences_get();
			if(pragha_preferences_get_add_recursively(preferences))
				list = append_mobj_list_from_folder(list, ab_file);
			g_object_unref(G_OBJECT(preferences));
		}
		else {
			if (is_playable_file(ab_file)) {
				mobj = new_musicobject_from_file(ab_file);
				if (G_LIKELY(mobj))
					list = g_list_append(list, mobj);
			}
		}

		/* Have to give control to GTK periodically ... */
		pragha_process_gtk_events ();

		g_free(ab_file);
		next_file = g_dir_read_name(dir);
	}

	g_dir_close(dir);

	return list;
}