Enlightenment CVS committal

Author  : moom16
Project : e17
Module  : apps/eclair

Dir     : e17/apps/eclair/src


Modified Files:
        eclair_callbacks.c eclair_callbacks.h eclair_dialogs.c 
        eclair_meta_tag.c eclair_playlist.c eclair_playlist.h 
        eclair_window.c 


Log Message:
* Fix cover fetching when the meta tags of the media files are already 
in the database
* suffle->shuffle in the config file
* Add the repeat mode ("play the previous file" still doesn't work with 
both shuffling and repeating enabled)

===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_callbacks.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- eclair_callbacks.c  3 Jul 2005 15:51:06 -0000       1.19
+++ eclair_callbacks.c  5 Jul 2005 21:14:22 -0000       1.20
@@ -356,6 +356,20 @@
    eclair_stop(data);
 }
 
+//Called when user enables or disables repeating
+void eclair_repeat_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source)
+{
+   Eclair *eclair;
+
+   if (!(eclair = data))
+      return;
+
+   if (strcmp(emission, "eclair_repeat_enable") == 0)
+      eclair_playlist_set_repeat(&eclair->playlist, 1);
+   else
+      eclair_playlist_set_repeat(&eclair->playlist, 0);
+}
+
 //Called when user enables or disables shuffling
 void eclair_shuffle_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_callbacks.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- eclair_callbacks.h  3 Jul 2005 11:01:08 -0000       1.10
+++ eclair_callbacks.h  5 Jul 2005 21:14:22 -0000       1.11
@@ -25,6 +25,7 @@
 void eclair_stop_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source);
 void eclair_prev_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source);
 void eclair_next_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source);
+void eclair_repeat_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source);
 void eclair_shuffle_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source);
 void eclair_playlist_load_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source);
 void eclair_playlist_save_cb(void *data, Evas_Object *edje_object, const char 
*emission, const char *source);
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_dialogs.c,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -3 -r1.13 -r1.14
--- eclair_dialogs.c    3 Jul 2005 15:51:06 -0000       1.13
+++ eclair_dialogs.c    5 Jul 2005 21:14:22 -0000       1.14
@@ -29,6 +29,7 @@
 static void _eclair_dialogs_menu_on_remove_unselected(GtkWidget *widget, 
gpointer data);
 static void _eclair_dialogs_menu_on_remove_all(GtkWidget *widget, gpointer 
data);
 static void _eclair_dialogs_menu_on_shuffle_mode(GtkWidget *widget, gpointer 
data);
+static void _eclair_dialogs_menu_on_repeat_mode(GtkWidget *widget, gpointer 
data);
 static void _eclair_dialogs_menu_on_search_window(GtkWidget *widget, gpointer 
data);
 
 //Initialize dialogs manager
@@ -150,8 +151,12 @@
    }
 
    if (dialogs_manager->eclair)
+   {
       
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(glade_xml_get_widget(dialogs_manager->menu_xml,
 "shuffle_mode1")),
          dialogs_manager->eclair->playlist.shuffle);
+      
gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(glade_xml_get_widget(dialogs_manager->menu_xml,
 "repeat_mode1")),
+         dialogs_manager->eclair->playlist.repeat);
+   }
 
    return 1;
 }
@@ -180,6 +185,7 @@
    glade_xml_signal_connect_data(dialogs_manager->menu_xml, 
"remove_unselected_handler", 
G_CALLBACK(_eclair_dialogs_menu_on_remove_unselected), eclair);
    glade_xml_signal_connect_data(dialogs_manager->menu_xml, 
"remove_all_handler", G_CALLBACK(_eclair_dialogs_menu_on_remove_all), eclair);
    glade_xml_signal_connect_data(dialogs_manager->menu_xml, 
"shuffle_mode_handler", G_CALLBACK(_eclair_dialogs_menu_on_shuffle_mode), 
eclair);
+   glade_xml_signal_connect_data(dialogs_manager->menu_xml, 
"repeat_mode_handler", G_CALLBACK(_eclair_dialogs_menu_on_repeat_mode), eclair);
    glade_xml_signal_connect_data(dialogs_manager->menu_xml, 
"search_window_handler", G_CALLBACK(_eclair_dialogs_menu_on_search_window), 
eclair);
 
    g_timeout_add(50, _eclair_dialogs_update, dialogs_manager);
@@ -506,6 +512,14 @@
       eclair_playlist_set_shuffle(&eclair->playlist, 
gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
 }
 
+static void _eclair_dialogs_menu_on_repeat_mode(GtkWidget *widget, gpointer 
data)
+{
+   Eclair *eclair;
+
+   if ((eclair = data))
+      eclair_playlist_set_repeat(&eclair->playlist, 
gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)));
+}
+
 static void _eclair_dialogs_menu_on_search_window(GtkWidget *widget, gpointer 
data)
 {
    Eclair *eclair;
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_meta_tag.c,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -3 -r1.12 -r1.13
--- eclair_meta_tag.c   18 Jun 2005 16:00:35 -0000      1.12
+++ eclair_meta_tag.c   5 Jul 2005 21:14:22 -0000       1.13
@@ -66,36 +66,36 @@
    if (!eclair || !media_file || !media_file->path)
       return;
 
-   if (eclair_database_search(&eclair->database, media_file, &need_to_update) 
&& !need_to_update)
-      return;
-
-   if (!(tag_file = taglib_file_new(media_file->path)))
-      return;
-
-   if ((tag = taglib_file_tag(tag_file)))
+   if (!eclair_database_search(&eclair->database, media_file, &need_to_update) 
&& !need_to_update)
    {
-      eclair_media_file_set_field_string(&media_file->artist, 
taglib_tag_artist(tag));
-      eclair_media_file_set_field_string(&media_file->title, 
taglib_tag_title(tag));
-      eclair_media_file_set_field_string(&media_file->album, 
taglib_tag_album(tag));
-      eclair_media_file_set_field_string(&media_file->genre, 
taglib_tag_genre(tag));
-      eclair_media_file_set_field_string(&media_file->comment, 
taglib_tag_comment(tag));
-      media_file->year = taglib_tag_year(tag);
-      media_file->track = taglib_tag_track(tag);
-   }   
-   if ((tag_audio_props = taglib_file_audioproperties(tag_file)))
-   {
-      media_file->length = taglib_audioproperties_length(tag_audio_props);
-      media_file->bitrate = taglib_audioproperties_bitrate(tag_audio_props);
-      media_file->samplerate = 
taglib_audioproperties_samplerate(tag_audio_props);
+      if (!(tag_file = taglib_file_new(media_file->path)))
+         return;
+   
+      if ((tag = taglib_file_tag(tag_file)))
+      {
+         eclair_media_file_set_field_string(&media_file->artist, 
taglib_tag_artist(tag));
+         eclair_media_file_set_field_string(&media_file->title, 
taglib_tag_title(tag));
+         eclair_media_file_set_field_string(&media_file->album, 
taglib_tag_album(tag));
+         eclair_media_file_set_field_string(&media_file->genre, 
taglib_tag_genre(tag));
+         eclair_media_file_set_field_string(&media_file->comment, 
taglib_tag_comment(tag));
+         media_file->year = taglib_tag_year(tag);
+         media_file->track = taglib_tag_track(tag);
+      }   
+      if ((tag_audio_props = taglib_file_audioproperties(tag_file)))
+      {
+         media_file->length = taglib_audioproperties_length(tag_audio_props);
+         media_file->bitrate = taglib_audioproperties_bitrate(tag_audio_props);
+         media_file->samplerate = 
taglib_audioproperties_samplerate(tag_audio_props);
+      }
+      taglib_tag_free_strings();
+      taglib_file_free(tag_file);
+   
+      //Insert the new tag infos in the database
+      eclair_database_insert_media_file(&eclair->database, media_file);
    }
-   taglib_tag_free_strings();
-   taglib_file_free(tag_file);
-
-   //Insert the new tag infos in the database
-   eclair_database_insert_media_file(&eclair->database, media_file);
 
    //Try to load the cover
-   if (tag && !media_file->cover_path && !(media_file->cover_path = 
eclair_cover_file_get_from_local(&eclair->cover_manager, media_file->artist, 
media_file->album, media_file->path)))
+   if (!media_file->cover_path && !(media_file->cover_path = 
eclair_cover_file_get_from_local(&eclair->cover_manager, media_file->artist, 
media_file->album, media_file->path)))
       eclair_cover_add_file_to_treat(&eclair->cover_manager, media_file);
 }
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_playlist.c,v
retrieving revision 1.19
retrieving revision 1.20
diff -u -3 -r1.19 -r1.20
--- eclair_playlist.c   4 Jul 2005 18:33:57 -0000       1.19
+++ eclair_playlist.c   5 Jul 2005 21:14:22 -0000       1.20
@@ -23,7 +23,7 @@
 //Initialize the playlist
 void eclair_playlist_init(Eclair_Playlist *playlist, Eclair *eclair)
 {
-   int shuffle;
+   int shuffle, repeat;
 
    if (!playlist)
       return;
@@ -37,8 +37,13 @@
    playlist->eclair = eclair;
    playlist->media_files_destructor_timer = ecore_timer_add(0.05, 
eclair_playlist_media_files_destructor, playlist);
 
-   if (eclair && eclair_config_get_prop_int(&eclair->config, "suffle", 
"enabled", &shuffle) && shuffle)
-      eclair_playlist_set_shuffle(playlist, 1);
+   if (eclair)
+   {
+      if (eclair_config_get_prop_int(&eclair->config, "shuffle", "enabled", 
&shuffle) && shuffle)
+         eclair_playlist_set_shuffle(playlist, 1);
+      if (eclair_config_get_prop_int(&eclair->config, "repeat", "enabled", 
&repeat) && repeat)
+         eclair_playlist_set_repeat(playlist, 1);
+   }
 }
 
 //Shutdown the playlist
@@ -61,7 +66,8 @@
 
    if (playlist->eclair)
    {
-      eclair_config_set_prop_int(&playlist->eclair->config, "suffle", 
"enabled", playlist->shuffle);
+      eclair_config_set_prop_int(&playlist->eclair->config, "shuffle", 
"enabled", playlist->shuffle);
+      eclair_config_set_prop_int(&playlist->eclair->config, "repeat", 
"enabled", playlist->repeat);
       if (playlist->eclair->playlist_container)
          
eclair_playlist_container_update(playlist->eclair->playlist_container);
    }
@@ -84,6 +90,20 @@
    playlist->shuffle = shuffle;
 }
 
+//Set the repeat mode
+void eclair_playlist_set_repeat(Eclair_Playlist *playlist, Evas_Bool repeat)
+{
+   if (!playlist)
+      return;
+
+   if (repeat)
+      eclair_send_signal_to_all_windows(playlist->eclair, 
"signal_repeat_enabled");
+   else
+      eclair_send_signal_to_all_windows(playlist->eclair, 
"signal_repeat_disabled");
+   
+   playlist->repeat = repeat;
+}
+
 //Reset the shuffle list (should be called each time items are added or 
removed from the playlist)
 void eclair_playlist_reset_shuffle_list(Eclair_Playlist *playlist)
 {
@@ -445,7 +465,12 @@
       return NULL;
 
    if (!playlist->shuffle)
-      return playlist->current->next;
+   {
+      if (playlist->repeat && !playlist->current->next)
+         return playlist->playlist;
+      else
+         return playlist->current->next;
+   }
    else if (!(current_file = playlist->current->data))
       return NULL;
    else if (current_file->shuffle_node && current_file->shuffle_node->next)
@@ -467,7 +492,15 @@
 
          //No more item to play
          if (l == ramdom_first_list)
-            return NULL;
+         {
+            if (!playlist->repeat)
+               return NULL;
+            else
+            {
+               eclair_playlist_reset_shuffle_list(playlist);
+               return eclair_playlist_get_next_list(playlist);
+            }
+         }
       }
       return NULL;
    }
@@ -483,13 +516,25 @@
       return NULL;
 
    if (!playlist->shuffle)
-      return playlist->current->prev;
-   else if ((current_file = playlist->current->data) && 
current_file->shuffle_node)
-      return current_file->shuffle_node->prev;
+   {
+      if (playlist->repeat && !playlist->current->prev)
+         return evas_list_last(playlist->playlist);
+      else
+         return playlist->current->prev;
+   }
+   else if ((current_file = playlist->current->data))
+   {
+      if (current_file->shuffle_node && current_file->shuffle_node->prev)
+         return current_file->shuffle_node->prev;
+      else
+         return NULL;
+   }
    else
       return NULL;
 }
 
+int count = 0;
+
 //Set the media file which is just before the active media file as the active 
media file 
 void eclair_playlist_prev_as_current(Eclair_Playlist *playlist)
 {
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_playlist.h,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -3 -r1.10 -r1.11
--- eclair_playlist.h   10 Jun 2005 18:30:46 -0000      1.10
+++ eclair_playlist.h   5 Jul 2005 21:14:22 -0000       1.11
@@ -21,6 +21,7 @@
 void eclair_playlist_remove_unselected_media_files(Eclair_Playlist *playlist);
 void eclair_playlist_empty(Eclair_Playlist *playlist);
 
+void eclair_playlist_set_repeat(Eclair_Playlist *playlist, Evas_Bool repeat);
 void eclair_playlist_set_shuffle(Eclair_Playlist *playlist, Evas_Bool shuffle);
 void eclair_playlist_reset_shuffle_list(Eclair_Playlist *playlist);
 
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/eclair/src/eclair_window.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -3 -r1.3 -r1.4
--- eclair_window.c     3 Jul 2005 11:01:09 -0000       1.3
+++ eclair_window.c     5 Jul 2005 21:14:22 -0000       1.4
@@ -191,6 +191,8 @@
    edje_object_signal_callback_add(window->edje_object, 
"eclair_playlist_scroll_up_stop", "*", eclair_playlist_container_scroll_cb, 
eclair);
    edje_object_signal_callback_add(window->edje_object, 
"eclair_shuffle_enable", "*", eclair_shuffle_cb, eclair);
    edje_object_signal_callback_add(window->edje_object, 
"eclair_shuffle_disable", "*", eclair_shuffle_cb, eclair);
+   edje_object_signal_callback_add(window->edje_object, 
"eclair_repeat_enable", "*", eclair_repeat_cb, eclair);
+   edje_object_signal_callback_add(window->edje_object, 
"eclair_repeat_disable", "*", eclair_repeat_cb, eclair);
    if (window->window_name)
    {
       signal_name = malloc(strlen("eclair_") + strlen(window->window_name) + 
strlen("_close") + 1);




-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to