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

Reply via email to