Index: src/plugins/properties/bacon-video-widget-properties.c
===================================================================
--- src/plugins/properties/bacon-video-widget-properties.c	(revision 6232)
+++ src/plugins/properties/bacon-video-widget-properties.c	(working copy)
@@ -32,6 +32,8 @@
 
 #include "debug.h"
 
+#define COVER_SIZE 50
+
 /* used in bacon_video_widget_properties_update() */
 #define UPDATE_FROM_STRING(type, name) \
 	do { \
@@ -81,6 +83,7 @@
 
 struct BaconVideoWidgetPropertiesPrivate {
 	GtkBuilder *xml;
+	GdkPixbuf *cover;
 	int time;
 };
 
@@ -153,6 +156,11 @@
 	bacon_video_widget_properties_from_time (props, 0);
 	/* Comment */
 	bacon_video_widget_properties_set_label (props, "comment", "");
+	/* Cover */
+	item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_label"));
+	gtk_widget_hide (item);
+	item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_image"));
+	gtk_widget_hide (item);
 
 	/* Dimensions */
 	bacon_video_widget_properties_set_label (props, "dimensions", _("N/A"));
@@ -194,6 +202,25 @@
 	props->priv->time = time;
 }
 
+static GdkPixbuf *
+scale_really_simple (GdkPixbuf *pixbuf, int size)
+{
+	int d_width, d_height;
+
+	height = gdk_pixbuf_get_height (pixbuf);
+	width = gdk_pixbuf_get_width (pixbuf);
+
+	if (width > height) {
+		d_width = size;
+		d_height = size * height / width;
+	} else {
+		d_height = size;
+		d_width = size * width / height;
+	}
+
+	return gdk_pixbuf_scale_simple (pixbuf, d_width, d_height, GDK_INTERP_TILES);
+}
+
 void
 bacon_video_widget_properties_update (BaconVideoWidgetProperties *props,
 				      GtkWidget *widget)
@@ -202,6 +229,7 @@
 	GValue value = { 0, };
 	gboolean has_type;
 	BaconVideoWidget *bvw;
+	GdkPixbuf *cover;
 
 	g_return_if_fail (BACON_IS_VIDEO_WIDGET_PROPERTIES (props));
 	g_return_if_fail (BACON_IS_VIDEO_WIDGET (widget));
@@ -221,6 +249,32 @@
 			g_value_get_int (&value) * 1000);
 	g_value_unset (&value);
 
+	bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw),
+			BVW_INFO_COVER, &value);
+	cover = (GdkPixbuf *) g_value_get_object (&value);
+	if (cover != NULL) {
+		GdkPixbuf *resized;
+
+		props->priv->cover = gdk_pixbuf_copy (pixbuf);
+		resized = scale_really_simple (cover, COVER_SIZE);
+
+		item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_image"));
+		gtk_image_set_from_pixbuf (GTK_IMAGE (item), resized);
+		g_object_unref (resized);
+
+		item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_label"));
+		gtk_widget_show (item);
+		item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_event_box"));
+		gtk_widget_show_all (item);
+	} else {
+		props->priv->cover = NULL;
+		item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_label"));
+		gtk_widget_hide (item);
+		item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_image"));
+		gtk_widget_hide (item);
+	}
+	g_value_unset (&value);
+
 	/* Video */
 	item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "video"));
 	bacon_video_widget_get_metadata (BACON_VIDEO_WIDGET (bvw),
@@ -268,15 +322,46 @@
 #undef UPDATE_FROM_INT2
 }
 
+static void
+on_cover_label_show (GtkWidget *widget, BaconVideoWidgetProperties *props)
+{
+	GtkWidget *item;
+	if (props->priv->cover == NULL) {
+		gtk_widget_hide (widget);
+		item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_image"));
+		gtk_widget_hide (item);
+	}
+}
+
+static void
+on_cover_button_press (GtkWidget *widget,
+		       BaconVideoWidgetProperties *props)
+{
+	//FIXME
+	//1. Create a GTK_WINDOW_POPUP
+	//2. Set a full scale (but no bigger than 1/3 of the screen size) image in the middle
+	//3. Save the popup window's details in the priv
+}
+
+static void
+on_cover_button_release (GtkWidget *widget,
+			 BaconVideoWidgetProperties *props)
+{
+	//FIXME
+	//1. Destroy the window created above
+	//2. set the popup window's details to NULL in the priv
+}
+
 GtkWidget*
 bacon_video_widget_properties_new (void)
 {
 	BaconVideoWidgetProperties *props;
 	GtkBuilder *xml;
 	GtkWidget *vbox;
+	GtkWidget *item;
 	GtkSizeGroup *group;
 	const char *labels[] = { "title_label", "artist_label", "album_label",
-			"year_label", "duration_label", "comment_label",
+			"year_label", "duration_label", "comment_label", "cover_label",
 			"dimensions_label", "vcodec_label", "framerate_label",
 			"vbitrate_label", "abitrate_label", "acodec_label",
 			"samplerate_label", "channels_label" };
@@ -296,6 +381,7 @@
 			(BACON_TYPE_VIDEO_WIDGET_PROPERTIES, NULL));
 
 	props->priv->xml = xml;
+	props->priv->cover = NULL;
 	vbox = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "vbox1"));
 	gtk_box_pack_start (GTK_BOX (props), vbox, FALSE, FALSE, 0);
 
@@ -303,6 +389,13 @@
 
 	group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
 
+	item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_label"));
+	g_signal_connect (item, "show", on_cover_label_show, props);
+
+	item = GTK_WIDGET (gtk_builder_get_object (props->priv->xml, "cover_button"));
+	g_signal_connect (item, "pressed", on_cover_button_press, props);
+	g_signal_connect (item, "released", on_cover_button_release, props);
+
 	for (i = 0; i < G_N_ELEMENTS (labels); i++) {
 		gtk_size_group_add_widget (group,
 					   GTK_WIDGET (gtk_builder_get_object (xml, labels[i])));
Index: src/test-properties-page.c
===================================================================
--- src/test-properties-page.c	(revision 6232)
+++ src/test-properties-page.c	(working copy)
@@ -63,6 +63,8 @@
 int main (int argc, char **argv)
 {
 	int times = 10;
+	GFile *file;
+	char *uri;
 
 	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -77,10 +79,14 @@
 	}
 
 	bacon_video_widget_init_backend (NULL, NULL);
+
+	file = g_file_new_for_commandline_arg (argv[1]);
+	uri = g_file_get_uri (file);
+	g_object_unref (file);
+
+	create_props (uri);
+	
 #if 0
-	create_props (argv[1]);
-#endif
-	
 	if (argc == 3) {
 		times = g_strtod (argv[2], NULL);
 	}
@@ -98,8 +104,10 @@
 		destroy_props ();
 #endif
 	}
+#endif
+	gtk_main ();
 
-//	gtk_main ();
+	g_free (uri);
 
 	return 0;
 }
Index: data/properties.ui
===================================================================
--- data/properties.ui	(revision 6232)
+++ data/properties.ui	(working copy)
@@ -438,6 +438,54 @@
 		  <property name="y_options"/>
 		</packing>
 	      </child>
+
+	      <child>
+		<object class="GtkLabel" id="cover_label">
+		  <property name="label" translatable="yes">Cover:</property>
+		  <property name="use_underline">False</property>
+		  <property name="use_markup">True</property>
+		  <property name="justify">GTK_JUSTIFY_LEFT</property>
+		  <property name="wrap">False</property>
+		  <property name="selectable">False</property>
+		  <property name="xalign">0</property>
+		  <property name="yalign">0</property>
+		  <property name="xpad">0</property>
+		  <property name="ypad">0</property>
+		  <property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
+		  <property name="width_chars">-1</property>
+		  <property name="single_line_mode">False</property>
+		  <property name="angle">0</property>
+		  <accessibility>
+		    <relation target="cover_image" type="label-for"/>
+		  </accessibility>
+		</object>
+		<packing>
+		  <property name="left_attach">0</property>
+		  <property name="right_attach">1</property>
+		  <property name="top_attach">5</property>
+		  <property name="bottom_attach">6</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"/>
+		</packing>
+	      </child>
+
+	      <child>
+		<object class="GtkEventBox" id="cover_event_box">
+		  <child>
+		    <object class="GtkImage" id="cover_image">
+                      <property name="stock">gtk-none</property>
+   	 	    </object>
+		  </child>
+	 	</object>
+		<packing>
+		  <property name="left_attach">1</property>
+		  <property name="right_attach">2</property>
+		  <property name="top_attach">5</property>
+		  <property name="bottom_attach">6</property>
+		  <property name="x_options">fill</property>
+		  <property name="y_options"/>
+		</packing>
+	      </child>
 	    </object>
 	  </child>
 	</object>
