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