G'day everyone, I've only recently gotten around to trying out the support for cover art, and I though I'd share my impression of how it looks from about two or three days use. I already had cover art for about 50% of my albums (as a folder.jpg under a music/Artist/Album/ structure), about 40% more was on Amazon, and the last 10% there isn't any art for. Autodetecting local art ----------------------- This kind of worked, it had two kinds of problems: compilation albums, and symlinks. For compilation albums art was automagically found for the sidebar (because the folder.jpg was in the same directory as the track), but not for the album list. All the tracks on a compilation album are in the same directory on my setup (with a folder.jpg in there), it'd be nice if it would automagically find that - but I can guess that there might be problems if people don't keep tracks on a compilation album in the same directory. For two-disc albums which I've got stored as music/Artist/Album - disc N/, the folder.jpg in later disc is a symlink to the folder.jpg in the first disc. Basically what happens is that it doesn't seem to follow the symlinks to find the art. My final comment with the autodetection is that it would be nice to have a "search for art for all albums" feature, rather than having to play a song of each album for it to find the art. Amazon retrieval ---------------- This worked fine for normal albums, but for compilation albums it tried to use the track artist of the first track in it's search, which meant it didn't find anything until I emptied that entry box. What might be nice is if the cover art search remembered what size you searched for last time (I normally wanted large, and had to click that in every dialog). Minor Quibble: the Amazon search dialog is called "rhythmbox" it could probably do with a more meaningful name. Sidebar art widget ------------------ This is pretty good, the only qualm I have is the show/hide of the art space is annoying because it changes the size of other sidebar bits whenever there is a song without art. I've made a patch (attached) which changes the behaviour to what most other players do - having a "no art" placeholder image there. The patch currently uses 'rhythmbox-album.png' as a placeholder; in practise we'd want some better image, and probably have a GConf key for the placeholder image's location. If it can't find the placeholder image it gracefully goes back to the old show/hide behaviour. I guess this also makes it easier for any future drag-and-drop support for art. Album list art -------------- With the recent changes to add the artist and song count below the album name, I like this, but as Michi mentioned that information should probably disappear when the album-list art is disabled. Aside from the above issues, mostly minor, I like how the cover art support has gone. Good work. Cheers, James "Doc" Livingston -- PUBLIC NOTICE AS REQUIRED BY LAW: Any Use of This Product, in Any Manner Whatsoever, Will Increase the Amount of Disorder in the Universe. Although No Liability Is Implied Herein, the Consumer Is Warned That This Process Will Ultimately Lead to the Heat Death of the Universe.
--- orig/widgets/rb-album-cover.c +++ mod/widgets/rb-album-cover.c @@ -85,6 +85,7 @@ RBAlbumCover *album_cover); static void rb_album_cover_cover_changed_cb (RBSource *source, RBAlbumCover *album_cover); +static void rb_album_cover_show_no_cover (RBAlbumCover *album_cover); static const char *amazon_countries[] = { "com", @@ -108,6 +109,7 @@ GtkWidget *amazon_country; char *uri; + const char *no_cover_uri; RhythmDBEntry *entry; RhythmDBEntry *next_entry; @@ -254,8 +256,10 @@ album_cover->priv->image = gtk_image_new (); gtk_container_add (GTK_CONTAINER (album_cover), album_cover->priv->image); - - gtk_widget_hide (GTK_WIDGET (album_cover->priv->image)); + + + album_cover->priv->no_cover_uri = rb_file ("rhythmbox-album.png"); + rb_album_cover_show_no_cover (album_cover); album_cover->priv->current_artist = g_strdup (""); album_cover->priv->current_album = g_strdup (""); @@ -422,9 +426,11 @@ RhythmDBEntry *entry) { const gchar *artist, *album, *location; + + rb_album_cover_show_no_cover (album_cover); if (entry == NULL) { - gtk_widget_hide (GTK_WIDGET (album_cover->priv->image)); + rb_album_cover_show_no_cover (album_cover); return; } @@ -434,14 +440,14 @@ RHYTHMDB_PROP_LOCATION); if (!artist || !album || !location) { - gtk_widget_hide (GTK_WIDGET (album_cover->priv->image)); + rb_album_cover_show_no_cover (album_cover); return; } if (!strcmp (album_cover->priv->current_artist, artist) && !strcmp (album_cover->priv->current_album, album)) return; - gtk_widget_hide (GTK_WIDGET (album_cover->priv->image)); + rb_album_cover_show_no_cover (album_cover); rb_album_cover_add_searchcover (album_cover, artist, @@ -479,7 +485,7 @@ const char *location) { if (!artist || !album || !location) { - gtk_widget_hide (GTK_WIDGET (album_cover->priv->image)); + rb_album_cover_show_no_cover (album_cover); return; } @@ -572,7 +578,7 @@ static void rb_album_cover_set_nocover (RBAlbumCover *album_cover) { - gtk_widget_hide (GTK_WIDGET (album_cover->priv->image)); + rb_album_cover_show_no_cover (album_cover); rb_debug ("No cover found"); rb_album_cover_search_end (album_cover); } @@ -895,3 +901,12 @@ rb_album_cover_preferences_sync (album_cover); return album_cover->priv->config_widget; } + +static void +rb_album_cover_show_no_cover (RBAlbumCover *album_cover) +{ + if (album_cover->priv->no_cover_uri) + rb_album_cover_set_uri (album_cover, album_cover->priv->no_cover_uri); + else + gtk_widget_hide (GTK_WIDGET (album_cover->priv->image)); +}
Attachment:
signature.asc
Description: This is a digitally signed message part