Enlightenment CVS committal Author : lok Project : e17 Module : proto
Dir : e17/proto/emphasis/src/bin Modified Files: emphasis.c emphasis.h emphasis_callbacks.c emphasis_gui.c emphasis_gui.h emphasis_misc.c emphasis_misc.h emphasis_mpc.c emphasis_mpc.h Log Message: Evas_List used instead of MpdData =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis.c 6 Jun 2006 11:22:15 -0000 1.1 +++ emphasis.c 29 Jun 2006 15:41:06 -0000 1.2 @@ -21,7 +21,7 @@ return 3; } - gui = malloc(sizeof *gui); + gui = malloc(sizeof(Emphasis_Gui)); if (!gui) { printf("Memory full\n"); @@ -30,6 +30,7 @@ emphasis_init_gui(gui); + emphasis_init_connect(gui); emphasis_try_connect(gui); etk_main(); @@ -37,24 +38,40 @@ return 0; } +void +emphasis_init_connect(Emphasis_Gui *gui) +{ + gui->timer = ecore_timer_add(0.2, emphasis_try_connect, gui); +} + int -emphasis_try_connect(Emphasis_Gui *gui) +emphasis_try_connect(void *data) { - MpdData *artist_list; + Emphasis_Gui *gui; + Evas_List *artist_list; Emphasis_Config *config; + Ecore_Timer *timer; + gui = data; config = config_load(); etk_window_resize(ETK_WINDOW(gui->window), config->geometry.w, config->geometry.h); etk_object_data_set(ETK_OBJECT(gui->window), "config", config); - gui->timer = mpc_init(config->hostname, config->port, config->password); - if (!gui->timer) + + timer = mpc_init(config->hostname, config->port, config->password); + + if (!timer) { emphasis_clear(gui); return 1; } else { + ecore_timer_del(gui->timer); + gui->timer = timer; + artist_list = mpc_mlib_artist_get(); + Emphasis_Data *data; + data = evas_list_data(artist_list); emphasis_tree_mlib_set(ETK_TREE(gui->tree_artist), artist_list, MPD_DATA_TYPE_TAG); etk_tree_row_select(etk_tree_first_row_get(ETK_TREE(gui->tree_artist))); =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis.h 6 Jun 2006 11:22:15 -0000 1.1 +++ emphasis.h 29 Jun 2006 15:41:06 -0000 1.2 @@ -22,7 +22,8 @@ extern MpdObj *mo; -int emphasis_try_connect(Emphasis_Gui *gui); +void emphasis_init_connect(Emphasis_Gui *gui); +int emphasis_try_connect(void *data); #endif /*_EMPHASIS_H_*/ =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_callbacks.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis_callbacks.c 6 Jun 2006 11:22:15 -0000 1.1 +++ emphasis_callbacks.c 29 Jun 2006 15:41:06 -0000 1.2 @@ -13,11 +13,13 @@ Etk_Widget *window; Emphasis_Config *config; - config = malloc(sizeof(Emphasis_Config)); config = etk_object_data_get(object, "config"); - etk_widget_geometry_get(ETK_WIDGET(object), &(config->geometry.x), &(config->geometry.y), &(config->geometry.w), &(config->geometry.h)); + etk_widget_geometry_get(ETK_WIDGET(object), &(config->geometry.x), + &(config->geometry.y), &(config->geometry.w), + &(config->geometry.h)); config_write(config); + mpc_disconnect(); eet_shutdown(); etk_main_quit(); } @@ -100,7 +102,7 @@ cb_tree_artist_selected(Etk_Object *object, Etk_Tree_Row *row, void *data) { Etk_Tree *tree; - MpdData *list=NULL; + Evas_List *list=NULL; char *artist; Emphasis_Gui *gui; @@ -130,7 +132,7 @@ { Emphasis_Gui *gui; Etk_Tree *tree; - MpdData *list; + Evas_List *list; char *album, *artist; tree = ETK_TREE(object); @@ -142,20 +144,6 @@ artist = etk_tree_row_data_get(row); list = mpc_mlib_track_get(artist, album); - /* - Emphasis_Data *song; - song = malloc(sizeof(Emphasis_Song)); - Evas_List *evaslist; - evaslist = convert_mpd_data(list); - if (evaslist) - { - song = evas_list_data(evaslist); - } - - MpdData *platypus; - platypus = convert_evas_list(evaslist); - printf("%s\n", platypus->song->title); - */ emphasis_tree_mlib_set(ETK_TREE(gui->tree_track), list, MPD_DATA_TYPE_SONG); } @@ -174,7 +162,7 @@ char *artist; const char **types; unsigned int num_types; - MpdData *playlist=NULL, *tmplist; + Evas_List *playlist=NULL, *tmplist; tree = ETK_TREE(object); drag = ETK_DRAG((ETK_WIDGET(object))->drag); @@ -199,7 +187,7 @@ } else { - playlist = mpd_data_concatenate(playlist, tmplist); + playlist = evas_list_concatenate(playlist, tmplist); } next = evas_list_next(rowlist); rowlist = next; @@ -208,7 +196,7 @@ types = calloc(1, sizeof(char)); num_types = 1; - types[0] = strdup("MpdData"); + types[0] = strdup("Evas_List"); etk_drag_types_set(drag, types, num_types); etk_drag_data_set(drag, playlist, 1); @@ -231,7 +219,7 @@ char *album, *artist; const char **types; unsigned int num_types; - MpdData *playlist=NULL, *tmplist; + Evas_List *playlist=NULL, *tmplist; tree = ETK_TREE(object); drag = ETK_DRAG((ETK_WIDGET(object))->drag); @@ -259,14 +247,14 @@ } else { - playlist = mpd_data_concatenate(playlist, tmplist); + playlist = evas_list_concatenate(playlist, tmplist); } rowlist = evas_list_next(rowlist); } types = calloc(1, sizeof(char)); num_types = 1; - types[0] = strdup("MpdData"); + types[0] = strdup("Evas_List"); etk_drag_types_set(drag, types, num_types); etk_drag_data_set(drag, playlist, 1); @@ -291,7 +279,7 @@ char *title; const char **types; unsigned int num_types; - MpdData *playlist; + Evas_List *playlist; tree = ETK_TREE(object); drag = ETK_DRAG((ETK_WIDGET(object))->drag); @@ -312,7 +300,7 @@ types = calloc(1, sizeof(char)); num_types = 1; - types[0] = strdup("MpdData"); + types[0] = strdup("Evas_List"); etk_drag_types_set(drag, types, num_types); etk_drag_data_set(drag, playlist, 1); @@ -336,7 +324,7 @@ Etk_Tree *tree; Etk_Tree_Row *row; Etk_Drag *drag; - MpdData *list; + Evas_List *list; tree = ETK_TREE(object); @@ -565,7 +553,7 @@ Emphasis_Gui *gui; Etk_Tree_Row *row; Evas_List *rowlist; - MpdData *list; + Evas_List *list; gui = (Emphasis_Gui *)data; @@ -590,7 +578,7 @@ Emphasis_Gui *gui; Etk_Tree_Row *row; Evas_List *rowlist; - MpdData *list; + Evas_List *list; gui = (Emphasis_Gui *)data; =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_gui.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis_gui.c 6 Jun 2006 11:22:15 -0000 1.1 +++ emphasis_gui.c 29 Jun 2006 15:41:06 -0000 1.2 @@ -124,7 +124,7 @@ etk_tree_mode_set(ETK_TREE(gui->tree_artist), ETK_TREE_MODE_LIST); etk_tree_col_new(ETK_TREE(gui->tree_artist), "Artist", etk_tree_model_text_new(ETK_TREE(gui->tree_artist)), 60); etk_tree_build(ETK_TREE(gui->tree_artist)); - etk_object_data_set(ETK_OBJECT(gui->tree_artist), "title", strdup("Artist")); + etk_object_data_set(ETK_OBJECT(gui->tree_artist), "title", "Artist"); etk_object_data_set(ETK_OBJECT(gui->tree_artist), "Emphasis_Type", (void*)EMPHASIS_ARTIST); etk_box_pack_start(ETK_BOX(gui->hbox_medialib), gui->tree_artist, ETK_TRUE, ETK_TRUE, 0); etk_widget_dnd_source_set(ETK_WIDGET(gui->tree_artist), ETK_TRUE); @@ -144,7 +144,7 @@ etk_tree_mode_set(ETK_TREE(gui->tree_album), ETK_TREE_MODE_LIST); etk_tree_col_new(ETK_TREE(gui->tree_album), "Album", etk_tree_model_text_new(ETK_TREE(gui->tree_album)), 60); etk_tree_build(ETK_TREE(gui->tree_album)); - etk_object_data_set(ETK_OBJECT(gui->tree_album), "title", strdup("Album")); + etk_object_data_set(ETK_OBJECT(gui->tree_album), "title", "Album"); etk_object_data_set(ETK_OBJECT(gui->tree_album), "Emphasis_Type", (void*)EMPHASIS_ALBUM); etk_box_pack_start(ETK_BOX(gui->hbox_medialib), gui->tree_album, ETK_TRUE, ETK_TRUE, 0); etk_widget_dnd_source_set(ETK_WIDGET(gui->tree_album), ETK_TRUE); @@ -163,7 +163,7 @@ etk_tree_mode_set(ETK_TREE(gui->tree_track), ETK_TREE_MODE_LIST); etk_tree_col_new(ETK_TREE(gui->tree_track), "Track", etk_tree_model_text_new(ETK_TREE(gui->tree_track)), 60); etk_tree_build(ETK_TREE(gui->tree_track)); - etk_object_data_set(ETK_OBJECT(gui->tree_track), "title", strdup("Track")); + etk_object_data_set(ETK_OBJECT(gui->tree_track), "title", "Track"); etk_object_data_set(ETK_OBJECT(gui->tree_track), "Emphasis_Type", (void*)EMPHASIS_TRACK); etk_box_pack_start(ETK_BOX(gui->hbox_medialib), gui->tree_track, ETK_TRUE, ETK_TRUE, 0); etk_widget_dnd_source_set(ETK_WIDGET(gui->tree_track), ETK_TRUE); @@ -221,14 +221,10 @@ Etk_Widget *menu_item, *radio_item=NULL, *menu; emphasis_menu_append(gui->menu, "clear", ETK_STOCK_EDIT_CUT, cb_playlist_clear, NULL, - "config", ETK_STOCK_PREFERENCES_SYSTEM, cb_config_show, gui, + /* "config", ETK_STOCK_PREFERENCES_SYSTEM, cb_config_show, gui, */ "Open a file", ETK_STOCK_DOCUMENT_OPEN, NULL, NULL, NULL); -/* menu_item = etk_menu_item_new_with_label("platypus"); - etk_menu_shell_append(ETK_MENU_SHELL(gui->menu), ETK_MENU_ITEM(menu_item)); - menu = etk_menu_new(); - etk_menu_item_submenu_set(ETK_MENU_ITEM(menu_item), ETK_MENU(menu)); -*/ radio_item = etk_menu_item_radio_new_with_label_from_widget("full", NULL); + radio_item = etk_menu_item_radio_new_with_label_from_widget("full", NULL); etk_menu_shell_append(ETK_MENU_SHELL(gui->menu), ETK_MENU_ITEM(radio_item)); etk_signal_connect("activated", ETK_OBJECT(radio_item), ETK_CALLBACK(cb_switch_full), gui); radio_item = etk_menu_item_radio_new_with_label_from_widget("small", ETK_MENU_ITEM_RADIO(radio_item)); @@ -259,7 +255,8 @@ /** * @brief Make a menu with small stock image and sets a callback on "activated" on each elements * @param menu The Etk_Menu to setup - * @param ... An (char*)menu_item name, an (Etk_Stock_Id)image id, a Etk_Callback function and it data ... terminated by NULL + * @param ... An (char*)menu_item name, an (Etk_Stock_Id)image id, a Etk_Callback function and + * it data ... terminated by NULL */ void emphasis_menu_append(Etk_Widget *menu, ...) @@ -298,7 +295,7 @@ emphasis_tree_mlib_init(Emphasis_Gui *gui, Emphasis_Type type) { Etk_Tree_Row *row; - MpdData *list; + Evas_List *list; switch (type) { @@ -324,11 +321,11 @@ * @param mpd_type The type of the list */ void -emphasis_tree_mlib_set(Etk_Tree *tree, MpdData *list, MpdDataType mpd_type) +emphasis_tree_mlib_set(Etk_Tree *tree, Evas_List *list, MpdDataType mpd_type) { Etk_Tree_Col *col; Etk_Tree_Row *row; - char *str = NULL; + Emphasis_Data *data; etk_tree_clear(tree); @@ -338,14 +335,14 @@ if (mpd_type == MPD_DATA_TYPE_TAG) { row = etk_tree_append(tree, col, "All", NULL); - etk_tree_row_data_set(row, str); + etk_tree_row_data_set(row, NULL); while (list) { - row = etk_tree_append(tree, col, list->tag, NULL); - str = strdup(list->tag); - etk_tree_row_data_set(row, str); - list = mpd_data_get_next(list); + data = evas_list_data(list); + row = etk_tree_append(tree, col, data->tag, NULL); + etk_tree_row_data_set(row, data->tag); + list = evas_list_next(list); } } else @@ -354,19 +351,20 @@ { while (list) { - if (list->song->title) - row = etk_tree_append(tree, col, list->song->title, NULL); + data = evas_list_data(list); + if (data->song->title) + row = etk_tree_append(tree, col, data->song->title, NULL); else - row = etk_tree_append(tree, col, list->song->file, NULL); + row = etk_tree_append(tree, col, data->song->file, NULL); - str = strdup(list->song->file); - etk_tree_row_data_set(row, str); - list = mpd_data_get_next(list); + etk_tree_row_data_set(row, data->song->file); + list = evas_list_next(list); } } } etk_tree_thaw(tree); + emphasis_list_free(list, mpd_type); } /** @@ -375,14 +373,15 @@ * @param playlist The full playlist used by mpd */ void -emphasis_tree_pls_set(Etk_Tree *tree, MpdData *playlist) +emphasis_tree_pls_set(Etk_Tree *tree, Evas_List *playlist) { char *song_time; Etk_Tree_Col *col_title, *col_time, *col_artist, *col_album; Etk_Tree_Row *row, *row_next; int id; char *title, *time, *album, *artist, *truc; - + Emphasis_Data *data; + col_title = etk_tree_nth_col_get(tree, 0); col_time = etk_tree_nth_col_get(tree, 1); col_artist = etk_tree_nth_col_get(tree, 2); @@ -393,15 +392,16 @@ while (row && playlist) { + data = evas_list_data(playlist); row_next = etk_tree_next_row_get(row, ETK_FALSE, ETK_FALSE); id = (int)etk_tree_row_data_get(row); - if (playlist->song->id != id ) + if (data->song->id != id ) { etk_tree_row_del(row); } else { - playlist = mpd_data_get_next(playlist); + playlist = evas_list_next(playlist); } row = row_next; } @@ -415,22 +415,24 @@ while (playlist) { - if (!playlist->song->title) - title = playlist->song->file; + data = evas_list_data(playlist); + if (!data->song->title) + title = data->song->file; else - title = playlist->song->title; - asprintf(&song_time, "%d:%02d", (playlist->song->time)/60, (playlist->song->time)%60); + title = data->song->title; + asprintf(&song_time, "%d:%02d", (data->song->time)/60, (data->song->time)%60); row = etk_tree_append(tree, col_title, NULL, title, col_time, song_time, - col_artist, playlist->song->artist, - col_album, playlist->song->album, NULL); + col_artist, data->song->artist, + col_album, data->song->album, NULL); - etk_tree_row_data_set(row, (int *)playlist->song->id); + etk_tree_row_data_set(row, (int *)data->song->id); free(song_time); - playlist = mpd_data_get_next(playlist); + playlist = evas_list_next(playlist); } + emphasis_list_free(playlist, MPD_DATA_TYPE_SONG); etk_tree_thaw(tree); } @@ -469,7 +471,6 @@ } etk_tree_thaw(tree); - } /** =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_gui.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis_gui.h 6 Jun 2006 11:22:15 -0000 1.1 +++ emphasis_gui.h 29 Jun 2006 15:41:06 -0000 1.2 @@ -68,8 +68,8 @@ void emphasis_menu_append(Etk_Widget *menu, ...); void emphasis_tree_mlib_init(Emphasis_Gui *gui, Emphasis_Type type); -void emphasis_tree_mlib_set(Etk_Tree *tree, MpdData *list, MpdDataType mpd_type); -void emphasis_tree_pls_set(Etk_Tree *tree, MpdData *playlist); +void emphasis_tree_mlib_set(Etk_Tree *tree, Evas_List *list, MpdDataType mpd_type); +void emphasis_tree_pls_set(Etk_Tree *tree, Evas_List *playlist); void emphasis_pls_mark_current(Etk_Tree *tree, int id); void emphasis_unknow_if_null(char **table[]); =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_misc.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis_misc.c 6 Jun 2006 11:22:16 -0000 1.1 +++ emphasis_misc.c 29 Jun 2006 15:41:06 -0000 1.2 @@ -1,78 +1,92 @@ #include "emphasis.h" #include "emphasis_misc.h" +Evas_List * +evas_list_concatenate(Evas_List *head, Evas_List *tail) +{ + Evas_List *p; + p = tail; + + while (p) + { + evas_list_append(head, evas_list_data(p)); + p = evas_list_next(p); + } + evas_list_free(tail); + + return head; +} + /** - * @brief Convert a list of row in a MpdData list. + * @brief Convert a list of row in a Evas_List. * And set the song->file element * @param rowlist An Evas_List of song's row * @return A list of song */ -MpdData * +Evas_List * convert_rowlist_in_playlist_with_file(Evas_List *rowlist) { - Evas_List *list; + Evas_List *list=NULL, *first_rowlist; Etk_Tree_Row *row; - char *file; - MpdData *data=NULL; + Emphasis_Data *data=NULL; if (!rowlist) return NULL; - list = rowlist; + first_rowlist = rowlist; while (rowlist) { row = evas_list_data(rowlist); - file = etk_tree_row_data_get(row); - data = mpd_new_data_struct_append(data); + data = malloc(sizeof(Emphasis_Data)); data->type = MPD_DATA_TYPE_SONG; - data->song = mpd_newSong(); - data->song->file = file; + data->song = malloc(sizeof(Emphasis_Song)); + data->song->file = strdup(etk_tree_row_data_get(row)); + list = evas_list_append(list, data); rowlist = evas_list_next(rowlist); } - rowlist = list; - data = mpd_data_get_first(data); - return data; + rowlist = first_rowlist; + return list; } /** - * @brief Convert a list of row in a MpdData. + * @brief Convert a list of row in a Evas_List. * And set the song->id element * @param rowlist An Evas_List of song's row * @return A list of song */ -MpdData * +Evas_List * convert_rowlist_in_playlist_with_id(Evas_List *rowlist) { - Evas_List *list; + Evas_List *list=NULL, *first_rowlist; Etk_Tree_Row *row; int id; - MpdData *data=NULL; + Emphasis_Data *data=NULL; if (!rowlist) return NULL; - list = rowlist; + first_rowlist = rowlist; while (rowlist) { row = evas_list_data(rowlist); id = (int)etk_tree_row_data_get(row); - data = mpd_new_data_struct_append(data); + data = malloc(sizeof(Emphasis_Data)); data->type = MPD_DATA_TYPE_SONG; - data->song = mpd_newSong(); + data->song = malloc(sizeof(Emphasis_Song)); data->song->id = id; + list = evas_list_append(list, data); rowlist = evas_list_next(rowlist); } - rowlist = list; - data = mpd_data_get_first(data); - return data; + rowlist = first_rowlist; + return list; } /** @@ -89,7 +103,6 @@ { next = mpd_data_get_next(list); mpd_data_free(list); - printf("un free de plus youhou \\o/\n"); list = next; } } @@ -103,7 +116,7 @@ { Etk_Tree_Row *row; Evas_List *rowlist, *list; - MpdData *playlist=NULL, *tmplist; + Evas_List *playlist=NULL, *tmplist; char *artist, *album; rowlist = etk_tree_selected_rows_get(tree); @@ -122,7 +135,7 @@ } else { - playlist = mpd_data_concatenate(playlist, tmplist); + playlist = evas_list_concatenate(playlist, tmplist); } rowlist = evas_list_next(rowlist); } @@ -142,7 +155,7 @@ } else { - playlist = mpd_data_concatenate(playlist, tmplist); + playlist = evas_list_concatenate(playlist, tmplist); } rowlist = evas_list_next(rowlist); } @@ -163,7 +176,7 @@ int num=-1; char *row_str; Evas_List *rowlist=NULL; - MpdData *list; + Evas_List *list; switch (type) { @@ -206,6 +219,42 @@ return strdup(str); } +void +print_evas_list_stats(Evas_List *list) +{ + Evas_List *p; + p = list; + Emphasis_Data *data; + int count=0; + + while (p) + { + data = evas_list_data(p); + switch (data->type) + { + case MPD_DATA_TYPE_NONE: + printf("MPD_DATA_TYPE_NONE\n"); + break; + case MPD_DATA_TYPE_TAG: + printf("MPD_DATA_TYPE_TAG\n"); + break; + case MPD_DATA_TYPE_DIRECTORY: + printf("MPD_DATA_TYPE_DIRECTORY\n"); + break; + case MPD_DATA_TYPE_SONG: + printf("MPD_DATA_TYPE_SONG\n"); + break; + case MPD_DATA_TYPE_PLAYLIST: + printf("MPD_DATA_TYPE_PLAYLIST\n"); + break; + } + p = evas_list_next(p); + count++; + } + printf("total numbers of elements : %d\n", count); +} + + Emphasis_Song * convert_mpd_song(mpd_Song *src) { @@ -237,13 +286,13 @@ { int loop=1; Evas_List *dest=NULL; + Emphasis_Data *data; if (!src) return NULL; while (loop) { - Emphasis_Data *data; data = malloc(sizeof(Emphasis_Data)); switch (src->type) @@ -277,6 +326,7 @@ src = mpd_data_get_next(src); } src = mpd_data_get_first(src); + return dest; } @@ -349,3 +399,35 @@ return dest; } +void +emphasis_list_free(Evas_List *list, MpdDataType mpd_type) +{ + Emphasis_Data *data; + + list = evas_list_last(list); + while (evas_list_prev(list)) + { + data = evas_list_data(list); + if (data->song) + { + if (data->song->file) { free(data->song->file); } + if (data->song->artist) { free(data->song->artist); } + if (data->song->title) { free(data->song->title); } + if (data->song->album) { free(data->song->album); } + if (data->song->track) { free(data->song->track); } + if (data->song->name) { free(data->song->name); } + if (data->song->date) { free(data->song->date); } + if (data->song->genre) { free(data->song->genre); } + if (data->song->composer) { free(data->song->composer); } + free(data->song); + } + if (data->tag) { free(data->tag); } + if (data->playlist) { free(data->playlist); } + if (data->directory) { free(data->directory); } + free(data); + list = evas_list_prev(list); + } + data = evas_list_data(list); + free(data); + list = evas_list_free(list); +} =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_misc.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis_misc.h 6 Jun 2006 11:22:16 -0000 1.1 +++ emphasis_misc.h 29 Jun 2006 15:41:06 -0000 1.2 @@ -46,9 +46,9 @@ MpdData *mpd_new_data_struct_append(MpdData * const data); MpdData* mpd_data_concatenate( MpdData * const first, MpdData * const second); - -MpdData *convert_rowlist_in_playlist_with_file(Evas_List *rowlist); -MpdData *convert_rowlist_in_playlist_with_id(Evas_List *rowlist); + +Evas_List *convert_rowlist_in_playlist_with_file(Evas_List *rowlist); +Evas_List *convert_rowlist_in_playlist_with_id(Evas_List *rowlist); void mpd_data_full_free(MpdData *list); void emphasis_playlist_append_selected(Etk_Tree *tree, Emphasis_Type type); void emphasis_playlist_search_and_delete(Etk_Tree *tree, char *str, Emphasis_Type type); @@ -57,6 +57,10 @@ Evas_List *convert_mpd_data(MpdData *src); mpd_Song *convert_emphasis_song(Emphasis_Song *src); MpdData *convert_evas_list(Evas_List *src); + +void print_evas_list_stats(Evas_List *list); +Evas_List *evas_list_concatenate(Evas_List *head, Evas_List *tail); +void emphasis_list_free(Evas_List *list, MpdDataType mpd_type); /** @} */ #endif /*_MISC_H_*/ =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_mpc.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis_mpc.c 6 Jun 2006 11:22:16 -0000 1.1 +++ emphasis_mpc.c 29 Jun 2006 15:41:06 -0000 1.2 @@ -106,13 +106,16 @@ } if (what&MPD_CST_STATE) { + Emphasis_Gui *gui; + + gui = data; state = mpd_player_get_state(mo); switch (state) { case MPD_STATUS_STATE_STOP: emphasis_player_info_set(NULL, "Music Stoped", data); emphasis_toggle_play(data); - emphasis_pls_mark_current(ETK_TREE(((Emphasis_Gui *)data)->tree_pls), -1); + emphasis_pls_mark_current(ETK_TREE(gui->tree_pls), -1); break; case MPD_STATUS_STATE_PAUSE: song = mpd_playlist_get_current_song(mo); @@ -123,7 +126,7 @@ song = mpd_playlist_get_current_song(mo); emphasis_toggle_play(data); emphasis_player_info_set(song, NULL, data); - emphasis_pls_mark_current(ETK_TREE(((Emphasis_Gui *)data)->tree_pls), song->id); + emphasis_pls_mark_current(ETK_TREE(gui->tree_pls), song->id); break; case MPD_STATUS_STATE_UNKNOWN: emphasis_player_info_set(NULL, "wtf is that ?", data); @@ -132,8 +135,11 @@ } if (what&MPD_CST_PLAYLIST) { + Emphasis_Gui *gui; + gui = data; playlist = mpd_playlist_get_changes(mo, -1); - emphasis_tree_pls_set(ETK_TREE(((Emphasis_Gui *)data)->tree_pls), playlist); + emphasis_tree_pls_set(ETK_TREE(gui->tree_pls), convert_mpd_data(playlist)); + mpd_data_free(playlist); } if (what&MPD_CST_SONGID) { @@ -187,12 +193,17 @@ * @brief Get the artists list from mpd database * @return A list of all artists */ -MpdData * +Evas_List * mpc_mlib_artist_get(void) { MpdData *data; + Evas_List *list; + data = mpd_database_get_artists(mo); - return data; + list = convert_mpd_data(data); + + mpd_data_free(data); + return list; } /** @@ -200,12 +211,17 @@ * @param artist An artist name * @return A list of albums */ -MpdData * +Evas_List * mpc_mlib_album_get(char *artist) { MpdData *data; + Evas_List *list; + data = mpd_database_get_albums(mo, artist); - return data; + list = convert_mpd_data(data); + + mpd_data_free(data); + return list; } /** @@ -214,21 +230,24 @@ * @param album An album name * @return A list of song matchin artist and album */ -MpdData * +Evas_List * mpc_mlib_track_get(char *artist, char *album) { MpdData *data; + Evas_List *list; if ((album != NULL) || (artist != NULL)) { - data = mpd_database_find_adv(mo, 1,MPD_TAG_ITEM_ARTIST, artist, MPD_TAG_ITEM_ALBUM, album, -1); + data = mpd_database_find_adv(mo, 1, MPD_TAG_ITEM_ARTIST, artist, MPD_TAG_ITEM_ALBUM, album, -1); } else { data = mpd_database_get_complete(mo); } - - return data; + list = convert_mpd_data(data); + + mpd_data_free(data); + return list; } /** @@ -237,20 +256,22 @@ * @return The list of songs added with their id */ void -mpc_playlist_add(MpdData *list) +mpc_playlist_add(Evas_List *list) { long long id; - MpdData *next; - + Emphasis_Data *data; + id = mpd_playlist_get_playlist_id(mo); - + while (list) { - mpd_playlist_queue_add(mo, list->song->file); - list = mpd_data_get_next(list); + data = evas_list_data(list); + mpd_playlist_queue_add(mo, data->song->file); + list = evas_list_next(list); } mpd_playlist_queue_commit(mo); + emphasis_list_free(list, MPD_DATA_TYPE_SONG); } /** @@ -258,15 +279,18 @@ * @param id */ void -mpc_playlist_delete(MpdData *list) +mpc_playlist_delete(Evas_List *list) { + Emphasis_Data *data; + while (list) { - mpd_playlist_queue_delete_id(mo, list->song->id); - list = mpd_data_get_next(list); + data = evas_list_data(list); + mpd_playlist_queue_delete_id(mo, data->song->id); + list = evas_list_next(list); } mpd_playlist_queue_commit(mo); - mpd_data_free(list); + emphasis_list_free(list, MPD_DATA_TYPE_SONG); } /** @@ -428,4 +452,10 @@ rep = mpd_database_update_dir(mo, path); if (rep == 0) printf("cette fonction est indisponible... coin coin\n"); +} + +void +mpc_disconnect(void) +{ + mpd_free(mo); } =================================================================== RCS file: /cvs/e/e17/proto/emphasis/src/bin/emphasis_mpc.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- emphasis_mpc.h 6 Jun 2006 11:22:16 -0000 1.1 +++ emphasis_mpc.h 29 Jun 2006 15:41:06 -0000 1.2 @@ -21,12 +21,12 @@ int mpc_assert_status(MpdState status); -MpdData *mpc_mlib_artist_get(void); -MpdData *mpc_mlib_album_get(char *artist); -MpdData *mpc_mlib_track_get(char *album, char *artist); +Evas_List *mpc_mlib_artist_get(void); +Evas_List *mpc_mlib_album_get(char *artist); +Evas_List *mpc_mlib_track_get(char *album, char *artist); -void mpc_playlist_add(MpdData *list); -void mpc_playlist_delete(MpdData *list); +void mpc_playlist_add(Evas_List *list); +void mpc_playlist_delete(Evas_List *list); void mpc_playlist_clear(void); void mpc_play_id(int id); @@ -44,5 +44,6 @@ void mpc_change_vol(int value); void mpc_database_update(char *path); +void mpc_disconnect(void); /** @} */ #endif /*_MPC_H_*/ Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs