# HG changeset patch # User mf0102 <0102@gmx.at> # Date 1208954160 -7200 # Node ID 0fe46317167fb241b9aaf38900479e6a2c0dee7c # Parent 867d7caeb95b011f2d02479c13d5aee045845ad9 renamed playlist_fileinfo* to ui_fileinfo_show* and reworked those functions (CODE DUPLICATION IS BAD!) diff -r 867d7caeb95b -r 0fe46317167f src/audacious/playlist.c --- a/src/audacious/playlist.c Tue Apr 22 18:27:57 2008 +0200 +++ b/src/audacious/playlist.c Wed Apr 23 14:36:00 2008 +0200 @@ -61,7 +61,6 @@ #include "playlist_evmessages.h" #include "pluginenum.h" #include "strings.h" -#include "ui_fileinfo.h" #include "ui_main.h" #include "ui_playlist_manager.h" #include "ui_playlist.h" @@ -2394,140 +2393,6 @@ } } -void -playlist_fileinfo(Playlist *playlist, guint pos) -{ - gchar *path = NULL; - GList *node; - PlaylistEntry *entry = NULL; - Tuple *tuple = NULL; - ProbeResult *pr = NULL; - time_t mtime; - - PLAYLIST_LOCK(playlist); - - if ((node = g_list_nth(playlist->entries, pos))) - { - entry = node->data; - tuple = entry->tuple; - path = g_strdup(entry->filename); - } - - PLAYLIST_UNLOCK(playlist); - - if (entry->decoder == NULL) - { - pr = input_check_file(entry->filename, FALSE); /* try to find a decoder */ - entry->decoder = pr ? pr->ip : NULL; - - g_free(pr); - } - - /* plugin is capable to update tags. we need to bypass tuple cache. --eugene */ - /* maybe code cleanup required... */ - if (entry->decoder != NULL && entry->decoder->update_song_tuple != NULL && - entry->decoder->file_info_box == NULL && path != NULL && !vfs_is_remote(path)) { - - fileinfo_show_editor_for_path(path, entry->decoder); - g_free(path); - - } else { - - if (entry->tuple) - mtime = tuple_get_int(entry->tuple, FIELD_MTIME, NULL); - else - mtime = 0; - - /* No tuple? Try to set this entry up properly. --nenolod */ - if (entry->tuple == NULL || mtime == -1 || - mtime == 0 || mtime != playlist_get_mtime(entry->filename)) - { - playlist_entry_get_info(entry); - tuple = entry->tuple; - } - - if (tuple != NULL) - { - if (entry->decoder != NULL && entry->decoder->file_info_box == NULL) - fileinfo_show_for_tuple(tuple, FALSE); - else if (entry->decoder != NULL && entry->decoder->file_info_box != NULL) - { - plugin_set_current((Plugin *)(entry->decoder)); - entry->decoder->file_info_box(path); - } - else - fileinfo_show_for_path(path); - g_free(path); - } - else if (path != NULL) - { - if (entry != NULL && entry->decoder != NULL && entry->decoder->file_info_box != NULL) - { - plugin_set_current((Plugin *)(entry->decoder)); - entry->decoder->file_info_box(path); - } - else - fileinfo_show_for_path(path); - g_free(path); - } - } -} - -void -playlist_fileinfo_current(Playlist *playlist) -{ - gchar *path = NULL; - Tuple *tuple = NULL; - - PLAYLIST_LOCK(playlist); - - if (playlist->entries && playlist->position) - { - path = g_strdup(playlist->position->filename); - if (( playlist->position->tuple == NULL ) || ( playlist->position->decoder == NULL )) - playlist_entry_get_info(playlist->position); - tuple = playlist->position->tuple; - } - - PLAYLIST_UNLOCK(playlist); - - if (playlist->position != NULL && playlist->position->decoder != NULL && - playlist->position->decoder->update_song_tuple != NULL && - playlist->position->decoder->file_info_box == NULL && path != NULL && - !vfs_is_remote(path)) { - - fileinfo_show_editor_for_path(path, playlist->position->decoder); - g_free(path); - - } else { - - if (tuple != NULL) - { - if (playlist->position->decoder != NULL && playlist->position->decoder->file_info_box == NULL) - fileinfo_show_for_tuple(tuple, FALSE); - else if (playlist->position->decoder != NULL && playlist->position->decoder->file_info_box != NULL) - { - plugin_set_current((Plugin *)(playlist->position->decoder)); - playlist->position->decoder->file_info_box(path); - } - else - fileinfo_show_for_path(path); - g_free(path); - } - else if (path != NULL) - { - if (playlist->position != NULL && playlist->position->decoder != NULL && playlist->position->decoder->file_info_box != NULL) - { - plugin_set_current((Plugin *)(playlist->position->decoder)); - playlist->position->decoder->file_info_box(path); - } - else - fileinfo_show_for_path(path); - g_free(path); - } - } -} - static gboolean playlist_get_info_is_going(void) diff -r 867d7caeb95b -r 0fe46317167f src/audacious/playlist.h --- a/src/audacious/playlist.h Tue Apr 22 18:27:57 2008 +0200 +++ b/src/audacious/playlist.h Wed Apr 23 14:36:00 2008 +0200 @@ -176,9 +176,6 @@ void playlist_remove_duplicates(Playlist *playlist, PlaylistDupsType); void playlist_remove_dead_files(Playlist *playlist); -void playlist_fileinfo_current(Playlist *playlist); -void playlist_fileinfo(Playlist *playlist, guint pos); - void playlist_delete_index(Playlist *playlist, guint pos); PlaylistEntry *playlist_get_entry_to_play(Playlist *playlist); diff -r 867d7caeb95b -r 0fe46317167f src/audacious/pluginenum.c --- a/src/audacious/pluginenum.c Tue Apr 22 18:27:57 2008 +0200 +++ b/src/audacious/pluginenum.c Wed Apr 23 14:36:00 2008 +0200 @@ -57,6 +57,7 @@ #include "vfs_buffered_file.h" #include "ui_preferences.h" +#include "ui_fileinfo.h" #include "ui_fileinfopopup.h" #include "effect.h" @@ -230,8 +231,8 @@ .playlist_remove_duplicates = playlist_remove_duplicates, .playlist_remove_dead_files = playlist_remove_dead_files, - .playlist_fileinfo_current = playlist_fileinfo_current, - .playlist_fileinfo = playlist_fileinfo, + .playlist_fileinfo_current = ui_fileinfo_show_current, + .playlist_fileinfo = ui_fileinfo_show, .playlist_delete_index = playlist_delete_index, .playlist_delete_filenames = NULL, /* remove eventually --mf0102 */ diff -r 867d7caeb95b -r 0fe46317167f src/audacious/ui_fileinfo.c --- a/src/audacious/ui_fileinfo.c Tue Apr 22 18:27:57 2008 +0200 +++ b/src/audacious/ui_fileinfo.c Wed Apr 23 14:36:00 2008 +0200 @@ -264,7 +264,8 @@ g_object_unref(G_OBJECT(pixbuf)); } -void fileinfo_hide(gpointer unused) +static void +fileinfo_hide(gpointer unused) { if(GTK_WIDGET_VISIBLE(fileinfo_win)) gtk_widget_hide(fileinfo_win); @@ -296,7 +297,8 @@ fileinfo_entry_set_image(image_artwork, DATA_DIR "/images/audio.png"); } -static void entry_changed (GtkEditable *editable, gpointer user_data) +static void +entry_changed (GtkEditable *editable, gpointer user_data) { if(current_file != NULL && current_ip != NULL && current_ip->update_song_tuple != NULL) { something_changed = TRUE; @@ -773,7 +775,7 @@ gtk_widget_show_all (vbox0); } -void +static void fileinfo_show_for_tuple(Tuple *tuple, gboolean updating_enabled) { gchar *tmp, *tmp_utf = NULL; @@ -907,7 +909,7 @@ gtk_widget_show(fileinfo_win); } -void +static void fileinfo_show_for_path(gchar *path) { Tuple *tuple = input_get_song_tuple(path); @@ -922,7 +924,7 @@ mowgli_object_unref(tuple); } -void +static void fileinfo_show_editor_for_path(gchar *path, InputPlugin *ip) { G_FREE_CLEAR(current_file); @@ -940,3 +942,76 @@ mowgli_object_unref(tuple); } + +static void +ui_fileinfo_show_entry(Playlist *playlist, PlaylistEntry *entry) +{ + gchar *path = g_strdup(entry->filename); + Tuple *tuple = entry->tuple; + + PLAYLIST_UNLOCK(playlist); + + /* plugin is capable of updating tags. we need to bypass tuple cache. --eugene */ + /* maybe code cleanup required... */ + if (entry != NULL && + entry->decoder != NULL && + entry->decoder->update_song_tuple != NULL && + entry->decoder->file_info_box == NULL && + path != NULL && !vfs_is_remote(path)) + { + fileinfo_show_editor_for_path(path, entry->decoder); + g_free(path); + } + else + { + if (tuple != NULL) + { + if (entry->decoder != NULL) + { + if (entry->decoder->file_info_box == NULL) + fileinfo_show_for_tuple(tuple, FALSE); + else + { + plugin_set_current((Plugin *)(entry->decoder)); + entry->decoder->file_info_box(path); + } + } + else + fileinfo_show_for_path(path); + g_free(path); + } + else if (path != NULL) + { + if (entry != NULL && + entry->decoder != NULL && + entry->decoder->file_info_box != NULL) + { + plugin_set_current((Plugin *)(entry->decoder)); + entry->decoder->file_info_box(path); + } + else + fileinfo_show_for_path(path); + g_free(path); + } + } +} + +void +ui_fileinfo_show(Playlist *playlist, guint pos) +{ + GList *node = NULL; + + PLAYLIST_LOCK(playlist); + + if ((node = g_list_nth(playlist->entries, pos))) + ui_fileinfo_show_entry(playlist, node->data); +} + +void +ui_fileinfo_show_current(Playlist *playlist) +{ + PLAYLIST_LOCK(playlist); + + if (playlist->entries && playlist->position) + ui_fileinfo_show_entry(playlist, playlist->position); +} diff -r 867d7caeb95b -r 0fe46317167f src/audacious/ui_fileinfo.h --- a/src/audacious/ui_fileinfo.h Tue Apr 22 18:27:57 2008 +0200 +++ b/src/audacious/ui_fileinfo.h Wed Apr 23 14:36:00 2008 +0200 @@ -24,9 +24,9 @@ #include void create_fileinfo_window(void); -void fileinfo_show_for_tuple(Tuple *tuple, gboolean updating_enabled); gchar* fileinfo_recursive_get_image(const gchar* path, const gchar* file_name, gint depth); -void fileinfo_show_for_path(gchar *path); -void fileinfo_show_editor_for_path(gchar *path, InputPlugin *ip); + +void ui_fileinfo_show(Playlist *playlist, guint pos); +void ui_fileinfo_show_current(Playlist *playlist); #endif diff -r 867d7caeb95b -r 0fe46317167f src/audacious/ui_main.c --- a/src/audacious/ui_main.c Tue Apr 22 18:27:57 2008 +0200 +++ b/src/audacious/ui_main.c Wed Apr 23 14:36:00 2008 +0200 @@ -63,6 +63,7 @@ #include "strings.h" #include "ui_credits.h" #include "ui_equalizer.h" +#include "ui_fileinfo.h" #include "ui_fileopener.h" #include "ui_hints.h" #include "ui_jumptotrack.h" @@ -1768,7 +1769,7 @@ mainwin_show_add_url_window(); break; case MAINWIN_GENERAL_FILEINFO: - playlist_fileinfo_current(playlist); + ui_fileinfo_show_current(playlist); break; case MAINWIN_GENERAL_FOCUSPLWIN: gtk_window_present(GTK_WINDOW(playlistwin)); @@ -1911,7 +1912,7 @@ UI_SKINNED_MENUROW(mainwin_menurow)->always_selected ); break; case MENUROW_FILEINFOBOX: - playlist_fileinfo_current(playlist_get_active()); + ui_fileinfo_show_current(playlist_get_active()); break; case MENUROW_SCALE: gtk_toggle_action_set_active( @@ -2193,7 +2194,7 @@ } static void mainwin_info_double_clicked_cb(void) { - playlist_fileinfo_current(playlist_get_active()); + ui_fileinfo_show_current(playlist_get_active()); } static void @@ -2801,7 +2802,7 @@ void action_current_track_info( void ) { - playlist_fileinfo_current(playlist_get_active()); + ui_fileinfo_show_current(playlist_get_active()); } void diff -r 867d7caeb95b -r 0fe46317167f src/audacious/ui_playlist.c --- a/src/audacious/ui_playlist.c Tue Apr 22 18:27:57 2008 +0200 +++ b/src/audacious/ui_playlist.c Wed Apr 23 14:36:00 2008 +0200 @@ -49,6 +49,7 @@ #include "playlist_container.h" #include "strings.h" #include "ui_equalizer.h" +#include "ui_fileinfo.h" #include "ui_fileopener.h" #include "ui_main.h" #include "ui_manager.h" @@ -705,11 +706,11 @@ * selected */ GList *list = playlist_get_selected(playlist); if (list) { - playlist_fileinfo(playlist, GPOINTER_TO_INT(list->data)); + ui_fileinfo_show(playlist, GPOINTER_TO_INT(list->data)); g_list_free(list); } else - playlist_fileinfo_current(playlist); + ui_fileinfo_show_current(playlist); } static void