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

Reply via email to