From: <cap...@us...> - 2007-02-28 23:24:15
|
Revision: 6 http://enna.svn.sourceforge.net/enna/?rev=6&view=rev Author: captainigloo Date: 2007-02-28 15:24:14 -0800 (Wed, 28 Feb 2007) Log Message: ----------- First support for playlist, need a lot of work to be done, but Menu playlist can print list of files actually in the playlist and play them. Modified Paths: -------------- trunk/enna/src/bin/enna.c trunk/enna/src/bin/enna_mediaplayer.c trunk/enna/src/bin/enna_mediaplayer.h trunk/enna/src/bin/enna_module_music.c trunk/enna/src/bin/enna_module_playlist.c Modified: trunk/enna/src/bin/enna.c =================================================================== --- trunk/enna/src/bin/enna.c 2007-02-28 10:05:38 UTC (rev 5) +++ trunk/enna/src/bin/enna.c 2007-02-28 23:24:14 UTC (rev 6) @@ -282,8 +282,9 @@ edje_object_signal_emit(enna->edje, "enna,action,anim,logo", "enna"); ecore_evas_data_set(enna->ee, "enna_main_edje", enna->edje); ecore_evas_callback_resize_set(enna->ee, _resize_viewport_cb); + evas_data_attach_set(enna->evas, enna); + enna->mediaplayer = enna_mediaplayer_add(enna->evas); _create_mainmenu(enna); - evas_data_attach_set(enna->evas, enna); ecore_evas_show(enna->ee); for (i = 0; i < NBR_ELEMENTS(enna->events); i++) @@ -294,7 +295,6 @@ ecore_event_handler_add(enna->events[2], _miniplayer_stop_event, enna); ecore_event_handler_add(enna->events[3], _miniplayer_hide_event, enna); ecore_event_handler_add(enna->events[4], _miniplayer_pause_event, enna); - enna->mediaplayer = enna_mediaplayer_add(enna->evas); enna_init_lirc(enna); return 1; } Modified: trunk/enna/src/bin/enna_mediaplayer.c =================================================================== --- trunk/enna/src/bin/enna_mediaplayer.c 2007-02-28 10:05:38 UTC (rev 5) +++ trunk/enna/src/bin/enna_mediaplayer.c 2007-02-28 23:24:14 UTC (rev 6) @@ -115,6 +115,35 @@ } EAPI int +enna_mediaplayer_playlist_play(Evas_Object *obj) +{ + E_Smart_Data *sd; + Enna *enna; + Enna_Playlist_Element *element; + sd = evas_object_smart_data_get(obj); + + if (!sd) + return 0; + + enna = evas_data_attach_get(evas_object_evas_get(sd->edje)); + if (!enna) + return 0; + emusic_controller_stop(sd->controller); + dbg("detroy playlist\n"); + emusic_controller_playlist_destroy(sd->controller, "playlist"); + emusic_controller_playlist_new(sd->controller, "playlist"); + ecore_list_goto_first(sd->playlist->elements); + while( (element = ecore_list_next(sd->playlist->elements)) ) + emusic_controller_playlist_add(sd->controller, element->filename, "playlist"); + emusic_controller_playlist_goto_id(sd->controller, sd->playlist->selected); + dbg("selected : %d\n", sd->playlist->selected); + enna_mediaplayer_play(enna->mediaplayer); + + return 1; + +} + +EAPI int enna_mediaplayer_playlist_goto_id(Evas_Object *obj, unsigned int id) { E_Smart_Data *sd; @@ -149,8 +178,9 @@ element->filename = strdup(filename); ecore_list_append(sd->playlist->elements, element); + sd->playlist->nb_elements++; - + dbg("append %s %d\n", element->filename, sd->playlist->nb_elements); return 1; } @@ -160,7 +190,8 @@ E_Smart_Data *sd; sd = evas_object_smart_data_get(obj); - if (!sd || !sd->album_pl) + + if (!sd || !sd->playlist) return NULL; return sd->playlist; Modified: trunk/enna/src/bin/enna_mediaplayer.h =================================================================== --- trunk/enna/src/bin/enna_mediaplayer.h 2007-02-28 10:05:38 UTC (rev 5) +++ trunk/enna/src/bin/enna_mediaplayer.h 2007-02-28 23:24:14 UTC (rev 6) @@ -40,10 +40,11 @@ EAPI Enna_Playlist *enna_mediaplayer_playlist_get(Evas_Object* obj, char *name); /* Add Directory entry to Album playlist and select filename in this directory*/ EAPI void enna_mediaplayer_album_add(Evas_Object *obj, char *directory, char *filename, char *filter); -/* Play album playlist */ +/* Play current album playlist */ EAPI void enna_mediaplayer_album_play(Evas_Object *obj); - +/* Play current Playlist */ +EAPI int enna_mediaplayer_playlist_play(Evas_Object *obj); EAPI void enna_mediaplayer_playlist_destroy(Evas_Object *obj, char *name); EAPI int enna_mediaplayer_playlist_goto_id(Evas_Object *obj, unsigned int id); EAPI int enna_mediaplayer_play(Evas_Object* obj); Modified: trunk/enna/src/bin/enna_module_music.c =================================================================== --- trunk/enna/src/bin/enna_module_music.c 2007-02-28 10:05:38 UTC (rev 5) +++ trunk/enna/src/bin/enna_module_music.c 2007-02-28 23:24:14 UTC (rev 6) @@ -41,7 +41,7 @@ }; /* local subsystem functions */ -static int _has_suffix(char* str, Evas_List* patterns); +//static int _has_suffix(char* str, Evas_List* patterns); static void _e_smart_reconfigure(E_Smart_Data *sd); static void _e_smart_add(Evas_Object *obj); static void _e_smart_del(Evas_Object *obj); @@ -79,7 +79,7 @@ else dbg("enna_music: not state ev %d\n", event); } - +/* static int _has_suffix(char* str, Evas_List* patterns) { @@ -94,7 +94,7 @@ return result; } - +*/ static void _play_file_cb(void *data1, void *data2, char *filename) { @@ -102,9 +102,7 @@ Enna *enna; char* tmp; char *c; - char *file; - int id = -1, i = 0; - Ecore_List *files; + sd = (E_Smart_Data*) data1; if (!sd) Modified: trunk/enna/src/bin/enna_module_playlist.c =================================================================== --- trunk/enna/src/bin/enna_module_playlist.c 2007-02-28 10:05:38 UTC (rev 5) +++ trunk/enna/src/bin/enna_module_playlist.c 2007-02-28 23:24:14 UTC (rev 6) @@ -35,6 +35,8 @@ /* local subsystem functions */ static void _new_pl_cb (void *data, void *data2); +static void _play_pl_cb (void *data, void *data2); +static void _play_element_cb (void *data, void *data2); static void _save_pl_cb (void *data, void *data2); static void _open_pl_cb (void *data, void *data2); /*static void _pl_update(E_Smart_Data *sd);*/ @@ -78,6 +80,34 @@ } static void +_play_pl_cb (void *data, void *data2) +{ + E_Smart_Data *sd; + Enna *enna; + sd = (E_Smart_Data*) data; + + enna = evas_data_attach_get(evas_object_evas_get(sd->edje)); + + enna_mediaplayer_playlist_play(enna->mediaplayer); + + dbg("Play PL\n"); +} + +static void +_play_element_cb (void *data, void *data2) +{ + E_Smart_Data *sd; + Enna *enna; + sd = (E_Smart_Data*) data; + + enna = evas_data_attach_get(evas_object_evas_get(sd->edje)); + + enna_mediaplayer_playlist_play(enna->mediaplayer); + + dbg("Play PL\n"); +} + +static void _save_pl_cb (void *data, void *data2) { E_Smart_Data *sd; @@ -94,23 +124,45 @@ dbg("Open PL\n"); } -/* + static void _pl_update(E_Smart_Data *sd) { Enna *enna; - Emusic_Playlist *playlist; - if (!sd || !enna) + Enna_Playlist *playlist; + Enna_Playlist_Element *element; + + if (!sd) return; - enna = evas_data_attach_get(evas_object_evas_get(sd->edje)); + if (!enna) + return; + + if (enna->mediaplayer) + { + //dbg("playlist name : %s %d elements \n",playlist->name, playlist->nb_elements); + playlist = enna_mediaplayer_playlist_get(enna->mediaplayer, "playlist"); + } + else + playlist= NULL; + + enna_list_clear(sd->menu); + + enna_list_append(sd->menu, NULL, _("New Playlist"), 0, _new_pl_cb, NULL, sd, NULL); + enna_list_append(sd->menu, NULL, _("Play Playlist"), 0, _play_pl_cb, NULL, sd, NULL); + enna_list_append(sd->menu, NULL, _("Save Playlist"), 0, _save_pl_cb, NULL, sd, NULL); + enna_list_append(sd->menu, NULL, _("Open Playlist"), 0, _open_pl_cb, NULL, sd, NULL); + enna_list_append(sd->menu, NULL, "separator", 1, NULL, NULL, NULL, NULL); - playlist = enna_mediaplayer_playlist_get(enna->mediaplayer, "playlist_in_progress"); + if (!playlist || !playlist->nb_elements) + enna_list_append(sd->menu, NULL, _("No element in playlist"), 0, NULL, NULL, NULL, NULL); - //while (playlist_element = (ec - - -}*/ + for (element = ecore_list_first(playlist->elements); element; element = ecore_list_next(playlist->elements)) + { + dbg("append %s\n", ecore_file_get_file(element->filename)); + enna_list_append(sd->menu, NULL, element->filename, 0, _play_element_cb, NULL, sd, element->filename); + } +} static void _e_smart_reconfigure(E_Smart_Data *sd) @@ -143,11 +195,10 @@ evas_object_propagate_events_set(obj, 0); sd->menu = enna_list_add(evas_object_evas_get(obj)); - enna_list_append(sd->menu, NULL, "New Playlist", 0, _new_pl_cb, NULL, sd, NULL); - enna_list_append(sd->menu, NULL, _("Save Playlist"), 0, _save_pl_cb, NULL, sd, NULL); - enna_list_append(sd->menu, NULL, _("Open Playlist"), 0, _open_pl_cb, NULL, sd, NULL); - enna_list_append(sd->menu, NULL, "separator", 1, NULL, NULL, NULL, NULL); - enna_list_append(sd->menu, NULL, _("Open Playlist"), 0, _open_pl_cb, NULL, sd, NULL); + + + _pl_update(sd); + enna_list_selected_set(sd->menu, 0); edje_object_part_swallow(sd->edje, "enna.switcher.swallow", sd->menu); evas_object_show(sd->menu); @@ -191,6 +242,7 @@ { INTERNAL_ENTRY; evas_object_show(sd->edje); + _pl_update(sd); } static void This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |