Enlightenment CVS committal Author : moom16 Project : e17 Module : apps/eclair
Dir : e17/apps/eclair/src Modified Files: eclair.c eclair_callbacks.c eclair_callbacks.h eclair_playlist.c eclair_playlist.h eclair_private.h Log Message: * smallify playlist text * hide video window if the video of the media file is not handled by emotion (for audio files, for instance) * fix some bugs =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- eclair.c 17 Apr 2005 08:30:58 -0000 1.1 +++ eclair.c 24 Apr 2005 16:23:35 -0000 1.2 @@ -43,6 +43,7 @@ eclair->video_engine = ECLAIR_SOFTWARE; eclair->gui_engine = ECLAIR_SOFTWARE; eclair->meta_tag_files_to_scan = NULL; + eclair->meta_tag_delete_thread = 0; if (!eclair_args_parse(eclair, *argc, argv, &filenames)) return 0; @@ -61,9 +62,10 @@ eclair_playlist_add_media_file(&eclair->playlist, (char *)l->data); evas_list_free(filenames); - //TODO edje_object_part_drag_value_set(eclair->gui_object, "volume_bar_drag", emotion_object_audio_volume_get(eclair->video_object), 0); + ecore_evas_show(eclair->gui_window); + return 1; } @@ -74,6 +76,9 @@ { eclair_playlist_empty(&eclair->playlist); eclair_subtitles_free(&eclair->subtitles); + + eclair->meta_tag_delete_thread = 1; + pthread_cond_broadcast(&eclair->meta_tag_cond); } ecore_main_loop_quit(); @@ -282,8 +287,6 @@ if (!eclair->video_window || !eclair->video_object) return; - ecore_evas_show(eclair->video_window); - emotion_object_file_set(eclair->video_object, path); emotion_object_play_set(eclair->video_object, 0); eclair_progress_rate_set(eclair, 0.0); @@ -292,9 +295,15 @@ eclair_subtitles_load_from_media_file(&eclair->subtitles, path); - emotion_object_size_get(eclair->video_object, &video_width, &video_height); - ecore_evas_resize(eclair->video_window, video_width, video_height); - eclair_video_window_resize_cb(eclair->video_window); + if (emotion_object_video_handled_get(eclair->video_object)) + { + ecore_evas_show(eclair->video_window); + emotion_object_size_get(eclair->video_object, &video_width, &video_height); + ecore_evas_resize(eclair->video_window, video_width, video_height); + eclair_video_window_resize_cb(eclair->video_window); + } + else + ecore_evas_hide(eclair->video_window); } //Play the active file from the playlist @@ -401,49 +410,59 @@ pthread_mutex_lock(&eclair->meta_tag_mutex); - //TODO: delete thread, counter? for (;;) { pthread_cond_wait(&eclair->meta_tag_cond, &eclair->meta_tag_mutex); - for (l = eclair->meta_tag_files_to_scan; l; l = next) + while (eclair->meta_tag_files_to_scan || eclair->meta_tag_delete_thread) { - next = l->next; - if ((current_file = (Eclair_Playlist_Media_File *)l->data)) + for (l = eclair->meta_tag_files_to_scan; l; l = next) { - TagLib_File *tag_file; - TagLib_Tag *tag; - const TagLib_AudioProperties *tag_audio_props; - - if (!current_file->path) - continue; - if (!(tag_file = taglib_file_new(current_file->path))) - continue; - if (!(tag = taglib_file_tag(tag_file))) - { - taglib_file_free(tag_file); - continue; - } - current_file->artist = strdup(taglib_tag_artist(tag)); - current_file->title = strdup(taglib_tag_title(tag)); - current_file->album = strdup(taglib_tag_album(tag)); - current_file->genre = strdup(taglib_tag_genre(tag)); - current_file->comment = strdup(taglib_tag_comment(tag)); - current_file->year = taglib_tag_year(tag); - current_file->track = taglib_tag_track(tag); + next = l->next; + current_file = (Eclair_Playlist_Media_File *)evas_list_data(l); + eclair->meta_tag_files_to_scan = evas_list_remove_list(eclair->meta_tag_files_to_scan, l); - if (!(tag_audio_props = taglib_file_audioproperties(tag_file))) + if (current_file) { + TagLib_File *tag_file; + TagLib_Tag *tag; + const TagLib_AudioProperties *tag_audio_props; + + if (!current_file->path) + continue; + if (!(tag_file = taglib_file_new(current_file->path))) + continue; + if (!(tag = taglib_file_tag(tag_file))) + { + taglib_file_free(tag_file); + continue; + } + current_file->artist = strdup(taglib_tag_artist(tag)); + current_file->title = strdup(taglib_tag_title(tag)); + current_file->album = strdup(taglib_tag_album(tag)); + current_file->genre = strdup(taglib_tag_genre(tag)); + current_file->comment = strdup(taglib_tag_comment(tag)); + current_file->year = taglib_tag_year(tag); + current_file->track = taglib_tag_track(tag); + + if (!(tag_audio_props = taglib_file_audioproperties(tag_file))) + { + taglib_file_free(tag_file); + continue; + } + current_file->length = taglib_audioproperties_length(tag_audio_props); + + eclair_playlist_media_file_entry_update(current_file, eclair); taglib_file_free(tag_file); - continue; } - current_file->length = taglib_audioproperties_length(tag_audio_props); - - taglib_file_free(tag_file); + taglib_tag_free_strings(); + } - eclair_playlist_media_file_entry_update(current_file); + if (eclair->meta_tag_delete_thread) + { + eclair->meta_tag_files_to_scan = evas_list_free(eclair->meta_tag_files_to_scan); + eclair->meta_tag_delete_thread = 0; + return NULL; } - eclair->meta_tag_files_to_scan = evas_list_remove_list(eclair->meta_tag_files_to_scan, l); - taglib_tag_free_strings(); } } @@ -467,6 +486,7 @@ ecore_evas_name_class_set(eclair->gui_window, "eclair", "eclair"); ecore_evas_borderless_set(eclair->gui_window, 1); ecore_evas_shaped_set(eclair->gui_window, 1); + ecore_evas_hide(eclair->gui_window); evas = ecore_evas_get(eclair->gui_window); eclair->gui_object = edje_object_add(evas); @@ -485,7 +505,7 @@ if (edje_object_part_exists(eclair->gui_object, "playlist_container")) { - eclair->playlist_container = esmart_container_new(evas_object_evas_get(eclair->gui_object)); + eclair->playlist_container = esmart_container_new(evas); esmart_container_direction_set(eclair->playlist_container, CONTAINER_DIRECTION_VERTICAL); esmart_container_fill_policy_set(eclair->playlist_container, CONTAINER_FILL_POLICY_FILL_X); esmart_container_spacing_set(eclair->playlist_container, 0); @@ -506,10 +526,12 @@ edje_object_signal_callback_add(eclair->gui_object, "eclair_prev", "*", eclair_gui_prev_cb, eclair); edje_object_signal_callback_add(eclair->gui_object, "eclair_next", "*", eclair_gui_next_cb, eclair); edje_object_signal_callback_add(eclair->gui_object, "drag,stop", "progress_bar_drag", eclair_gui_progress_bar_drag_cb, eclair); - edje_object_signal_callback_add(eclair->gui_object, "drag", "playlist_scrollbar_button", eclair_gui_playlist_scrollbar_button_drag_cb, eclair); edje_object_signal_callback_add(eclair->gui_object, "drag", "volume_bar_drag", eclair_gui_volume_bar_cb, eclair); - - ecore_evas_show(eclair->gui_window); + edje_object_signal_callback_add(eclair->gui_object, "drag", "playlist_scrollbar_button", eclair_gui_playlist_scrollbar_button_drag_cb, eclair); + edje_object_signal_callback_add(eclair->gui_object, "playlist_scroll_down_start", "", eclair_gui_playlist_scroll_cb, eclair); + edje_object_signal_callback_add(eclair->gui_object, "playlist_scroll_down_stop", "", eclair_gui_playlist_scroll_cb, eclair); + edje_object_signal_callback_add(eclair->gui_object, "playlist_scroll_up_start", "", eclair_gui_playlist_scroll_cb, eclair); + edje_object_signal_callback_add(eclair->gui_object, "playlist_scroll_up_stop", "", eclair_gui_playlist_scroll_cb, eclair); } //Create the video window and object @@ -549,7 +571,8 @@ evas_object_focus_set(eclair->video_object, 1); evas_object_event_callback_add(eclair->video_object, EVAS_CALLBACK_KEY_DOWN, eclair_key_press_cb, eclair); evas_object_smart_callback_add(eclair->video_object, "frame_decode", eclair_video_frame_decode_cb, eclair); - evas_object_smart_callback_add(eclair->video_object, "playback_finished", eclair_video_playback_finished_cb, eclair); + evas_object_smart_callback_add(eclair->video_object, "playback_finished", eclair_video_playback_finished_cb, eclair); + evas_object_smart_callback_add(eclair->video_object, "audio_level_change", eclair_video_audio_level_change_cb, eclair); } int main(int argc, char *argv[]) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_callbacks.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- eclair_callbacks.c 17 Apr 2005 08:30:58 -0000 1.1 +++ eclair_callbacks.c 24 Apr 2005 16:23:35 -0000 1.2 @@ -24,6 +24,19 @@ eclair_play_next((Eclair *)data); } +//Called when the audio volume is changed by an external application +void eclair_video_audio_level_change_cb(void *data, Evas_Object *obj, void *event_info) +{ + Eclair *eclair = (Eclair *)data; + + if (!eclair) + return; + if (!eclair->gui_object || !eclair->video_object) + return; + + edje_object_part_drag_value_set(eclair->gui_object, "volume_bar_drag", emotion_object_audio_volume_get(eclair->video_object), 0); +} + //Called when the video window is resized: //Resize the video object and the black background object void eclair_video_window_resize_cb(Ecore_Evas *window) @@ -259,6 +272,22 @@ eclair_playlist_container_scroll_percent_set(eclair, y); } +//Called when the user wants to scroll the playlist +void eclair_gui_playlist_scroll_cb(void *data, Evas_Object *edje_object, const char *emission, const char *source) +{ + Eclair *eclair = (Eclair *)data; + + if (!eclair->playlist_container) + return; + + if (strcmp(emission, "playlist_scroll_down_start") == 0) + esmart_container_scroll_start(eclair->playlist_container, -1.0); + else if (strcmp(emission, "playlist_scroll_up_start") == 0) + esmart_container_scroll_start(eclair->playlist_container, 1.0); + else + esmart_container_scroll_stop(eclair->playlist_container); +} + //Called when user uses wheel mouse over playlist container void eclair_gui_playlist_container_wheel_cb(void *data, Evas *evas, Evas_Object *playlist_container, void *event_info) { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_callbacks.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- eclair_callbacks.h 17 Apr 2005 08:30:58 -0000 1.1 +++ eclair_callbacks.h 24 Apr 2005 16:23:35 -0000 1.2 @@ -10,6 +10,7 @@ void eclair_video_window_close_cb(Ecore_Evas *window); void eclair_video_frame_decode_cb(void *data, Evas_Object *obj, void *event_info); void eclair_video_playback_finished_cb(void *data, Evas_Object *obj, void *event_info); +void eclair_video_audio_level_change_cb(void *data, Evas_Object *obj, void *event_info); void eclair_gui_open_cb(void *data, Evas_Object *edje_object, const char *emission, const char *source); void eclair_gui_close_cb(void *data, Evas_Object *edje_object, const char *emission, const char *source); @@ -24,5 +25,6 @@ void eclair_gui_volume_bar_cb(void *data, Evas_Object *edje_object, const char *emission, const char *source); void eclair_gui_playlist_scrollbar_button_drag_cb(void *data, Evas_Object *edje_object, const char *emission, const char *source); void eclair_gui_playlist_container_wheel_cb(void *data, Evas *evas, Evas_Object *playlist_container, void *event_info); +void eclair_gui_playlist_scroll_cb(void *data, Evas_Object *edje_object, const char *emission, const char *source); #endif =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_playlist.c,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- eclair_playlist.c 17 Apr 2005 08:30:58 -0000 1.1 +++ eclair_playlist.c 24 Apr 2005 16:23:35 -0000 1.2 @@ -51,7 +51,7 @@ } //Update the entry of the media file in the playlist with tag infos -void eclair_playlist_media_file_entry_update(Eclair_Playlist_Media_File *media_file) +void eclair_playlist_media_file_entry_update(Eclair_Playlist_Media_File *media_file, Eclair *eclair) { char length[10] = ""; char *artist_title_string; @@ -76,9 +76,15 @@ free(artist_title_string); } else if ((filename = eclair_utils_path_to_filename(media_file->path))) - edje_object_part_text_set(media_file->playlist_entry, "playlist_entry_length", filename); + edje_object_part_text_set(media_file->playlist_entry, "playlist_entry_name", filename); else - edje_object_part_text_set(media_file->playlist_entry, "playlist_entry_length", "Media"); + edje_object_part_text_set(media_file->playlist_entry, "playlist_entry_name", "Media"); + + if (!eclair) + return; + + if (media_file == evas_list_data(eclair->playlist.current)) + eclair_current_file_set(eclair, media_file); } //Return the active media file @@ -125,8 +131,8 @@ { new_media_file->playlist_entry = edje_object_add(evas_object_evas_get(eclair->playlist_container)); edje_object_file_set(new_media_file->playlist_entry, PACKAGE_DATA_DIR "/themes/default.edj", "eclair_playlist_entry"); - //TODO: useless? evas_object_data_set(new_media_file->playlist_entry, "media_file", new_media_file); + evas_object_data_set(new_media_file->playlist_entry, "media_filen", new_media_file->path); if (eclair->playlist_entry_height <= 0) { edje_object_size_min_get(new_media_file->playlist_entry, NULL, &min_height); @@ -147,7 +153,7 @@ playlist->playlist = evas_list_append(playlist->playlist, new_media_file); if (!playlist->current) eclair_playlist_current_set_list(playlist, playlist->playlist); - + return (Eclair_Playlist_Media_File *)evas_list_data(playlist->playlist->last); } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_playlist.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- eclair_playlist.h 17 Apr 2005 08:30:58 -0000 1.1 +++ eclair_playlist.h 24 Apr 2005 16:23:35 -0000 1.2 @@ -6,7 +6,7 @@ void eclair_playlist_init(Eclair *eclair, Eclair_Playlist *playlist); void eclair_playlist_empty(Eclair_Playlist *playlist); void eclair_playlist_media_file_free(Eclair_Playlist_Media_File *media_file); -void eclair_playlist_media_file_entry_update(Eclair_Playlist_Media_File *media_file); +void eclair_playlist_media_file_entry_update(Eclair_Playlist_Media_File *media_file, Eclair *eclair); Eclair_Playlist_Media_File *eclair_playlist_current_media_file(Eclair_Playlist *playlist); Eclair_Playlist_Media_File *eclair_playlist_prev_media_file(Eclair_Playlist *playlist); =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_private.h,v retrieving revision 1.1 retrieving revision 1.2 diff -u -3 -r1.1 -r1.2 --- eclair_private.h 17 Apr 2005 08:30:58 -0000 1.1 +++ eclair_private.h 24 Apr 2005 16:23:35 -0000 1.2 @@ -91,6 +91,7 @@ pthread_mutex_t meta_tag_mutex; pthread_cond_t meta_tag_cond; pthread_t meta_tag_thread; + Evas_Bool meta_tag_delete_thread; Eclair_State state; Eclair_Playlist playlist; ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs