From 3b601472a6bd91b4e3154f9753687e9d6b70db01 Mon Sep 17 00:00:00 2001 From: Philipp Zabel Date: Thu, 5 Aug 2010 00:27:52 +0200 Subject: [PATCH] Movie poster factory: return a "no poster" pixmap if the poster download failed --- src/poster/movie-poster-factory.vala | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/src/poster/movie-poster-factory.vala b/src/poster/movie-poster-factory.vala index df8f1c3..35c4ba2 100644 --- a/src/poster/movie-poster-factory.vala +++ b/src/poster/movie-poster-factory.vala @@ -29,6 +29,8 @@ namespace MoviePoster { internal bool download_posters; private GConf.Client gc; private uint cxnid; + private Gdk.Pixbuf poster_failed; + private Gdk.Pixbuf icon_failed; construct { try { @@ -143,7 +145,32 @@ namespace MoviePoster { if (request == null) return; requests.remove (request); - // request.callback (pixbuf, request.movie); + request.callback (failed_poster (request.width, request.height), request.movie); + } + + private Gdk.Pixbuf failed_poster (int width, int height) { + if (width == Poster.ICON_WIDTH && height == Poster.ICON_HEIGHT) { + if (icon_failed == null) { + // An empty icon for the list view + icon_failed = new Gdk.Pixbuf (Gdk.Colorspace.RGB, true, 8, Poster.ICON_WIDTH, Poster.ICON_HEIGHT); + icon_failed.fill (0); + } + return icon_failed; + } + if (width == Poster.SMALL_WIDTH && height == Poster.SMALL_HEIGHT) { + if (poster_failed == null) try { + // Broken image icon for the poster view + var no_pic = new Gdk.Pixbuf.from_file ("/usr/share/icons/hicolor/64x64/hildon/imageviewer_no_pic.png"); + poster_failed = new Gdk.Pixbuf (Gdk.Colorspace.RGB, true, 8, Poster.SMALL_WIDTH, Poster.SMALL_HEIGHT); + poster_failed.fill (0); + no_pic.copy_area (0, 0, no_pic.width, no_pic.height, poster_failed, + (Poster.SMALL_WIDTH - no_pic.width) / 2, (Poster.SMALL_HEIGHT - no_pic.height) / 2); + } catch (Error e) { + critical ("Missing imageviewer_no_pic icon: %s\n", e.message); + } + return poster_failed; + } + return null; } public void join () { -- 1.7.9.5