static void infowin_show (gint list, gint entry, const gchar * filename, const Tuple * tuple, PluginHandle * decoder, gboolean updating_enabled) { gchar * tmp; if (infowin == NULL) create_infowin (); else clear_infowin (); current_file = g_strdup (filename); current_decoder = decoder; can_write = updating_enabled; set_entry_str_from_field (entry_title, tuple, FIELD_TITLE, updating_enabled); set_entry_str_from_field (entry_artist, tuple, FIELD_ARTIST, updating_enabled); set_entry_str_from_field (entry_album, tuple, FIELD_ALBUM, updating_enabled); set_entry_str_from_field (entry_comment, tuple, FIELD_COMMENT, updating_enabled); set_entry_str_from_field (gtk_bin_get_child ((GtkBin *) entry_genre), tuple, FIELD_GENRE, updating_enabled); tmp = uri_to_display (filename); gtk_label_set_text ((GtkLabel *) location_text, tmp); g_free (tmp); set_entry_int_from_field (entry_year, tuple, FIELD_YEAR, updating_enabled); set_entry_int_from_field (entry_track, tuple, FIELD_TRACK_NUMBER, updating_enabled); infowin_label_set_text (label_format_name, tuple_get_string (tuple, FIELD_CODEC, NULL)); infowin_label_set_text (label_quality, tuple_get_string (tuple, FIELD_QUALITY, NULL)); if (tuple_get_value_type (tuple, FIELD_BITRATE, NULL) == TUPLE_INT) { tmp = g_strdup_printf (_("%d kb/s"), tuple_get_int (tuple, FIELD_BITRATE, NULL)); infowin_label_set_text (label_bitrate, tmp); g_free (tmp); } else infowin_label_set_text (label_bitrate, NULL); infowin_entry_set_image (image_artwork, list, entry); gtk_window_present ((GtkWindow *) infowin); }
void describe_song (const char * name, const Tuple * tuple, char * * _title, char * * _artist, char * * _album) { /* Common folder names to skip */ static const char * const skip[] = {"music"}; char * title = get_nonblank_field (tuple, FIELD_TITLE); char * artist = get_nonblank_field (tuple, FIELD_ARTIST); char * album = get_nonblank_field (tuple, FIELD_ALBUM); if (title && artist && album) { DONE: * _title = title; * _artist = artist; * _album = album; return; } if (! strncmp (name, "file:///", 8)) { char * filename = uri_to_display (name); if (! filename) goto DONE; SCOPY (buf, filename); char * base, * first, * second; split_filename (skip_top_folders (buf), & base, & first, & second); if (! title) title = str_get (base); for (int i = 0; i < ARRAY_LEN (skip); i ++) { if (first && ! g_ascii_strcasecmp (first, skip[i])) first = NULL; if (second && ! g_ascii_strcasecmp (second, skip[i])) second = NULL; } if (first) { if (second && ! artist && ! album) { artist = str_get (second); album = str_get (first); } else if (! artist) artist = str_get (first); else if (! album) album = str_get (first); } str_unref (filename); } else { SCOPY (buf, name); if (! title) { title = str_get_decoded (stream_name (buf)); if (! title) title = str_get_decoded (buf); } else if (! artist) artist = str_get_decoded (stream_name (buf)); else if (! album) album = str_get_decoded (stream_name (buf)); } goto DONE; }