[Rhythmbox-devel] Cover Art impressions

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

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.


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[] = {
@@ -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), 
-	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);
@@ -434,14 +440,14 @@
 	if (!artist || !album || !location) {
-		gtk_widget_hide (GTK_WIDGET (album_cover->priv->image));
+		rb_album_cover_show_no_cover (album_cover);
 	if (!strcmp (album_cover->priv->current_artist, artist) && !strcmp (album_cover->priv->current_album, album))
-	gtk_widget_hide (GTK_WIDGET (album_cover->priv->image));
+	rb_album_cover_show_no_cover (album_cover);
 	rb_album_cover_add_searchcover (album_cover, 
@@ -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);
@@ -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

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]