aboutsummaryrefslogtreecommitdiff
path: root/src/metadata-widget.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/metadata-widget.c')
-rw-r--r--src/metadata-widget.c52
1 files changed, 38 insertions, 14 deletions
diff --git a/src/metadata-widget.c b/src/metadata-widget.c
index 70542e9..a451ad7 100644
--- a/src/metadata-widget.c
+++ b/src/metadata-widget.c
@@ -34,7 +34,10 @@ struct _MetadataWidgetPrivate
{
GtkWidget* hbox;
GtkWidget* album_art;
- gchar* our_path;
+ gchar* our_path;
+ GtkWidget* artist_label;
+ GtkWidget* piece_label;
+ GtkWidget* container_label;
};
#define METADATA_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), METADATA_WIDGET_TYPE, MetadataWidgetPrivate))
@@ -49,13 +52,11 @@ static gboolean metadata_widget_button_press_event (GtkWidget *menuitem,
GdkEventButton *event);
static gboolean metadata_widget_button_release_event (GtkWidget *menuitem,
GdkEventButton *event);
-
-
-// Dbusmenuitem update callback
+// Dbusmenuitem properties update callback
static void metadata_widget_update_state(gchar * property,
GValue * value,
gpointer userdata);
-
+//static void update_content(
G_DEFINE_TYPE (MetadataWidget, metadata_widget, GTK_TYPE_MENU_ITEM);
@@ -84,22 +85,47 @@ metadata_widget_init (MetadataWidget *self)
g_debug("MetadataWidget::metadata_widget_init");
MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);
- GtkWidget *hbox;
- hbox = gtk_hbox_new(TRUE, 2);
+ GtkWidget *hbox;
+ hbox = gtk_hbox_new(TRUE, 0);
+ priv->hbox = hbox;
+
+ // image
const gchar* path = dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_IMAGE_PATH);
-
g_debug("MetadataWidget:init - path = %s", path);
-
priv->our_path = g_strdup(path);
+ GdkPixbuf* pixbuf;
+ pixbuf=gdk_pixbuf_new_from_file(path, NULL);
+ pixbuf=gdk_pixbuf_scale_simple(pixbuf,60,60,GDK_INTERP_BILINEAR);
+ priv->album_art = gtk_image_new_from_pixbuf(pixbuf);
+ g_object_unref(pixbuf);
+ gtk_box_pack_start (GTK_BOX (priv->hbox), priv->album_art, FALSE, FALSE, 0);
+ GtkWidget* vbox = gtk_vbox_new(TRUE, 0);
+
+ // artist
+ GtkWidget* artist;
+ artist = gtk_label_new(dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST));
+ priv->artist_label = artist;
+ gtk_box_pack_start (GTK_BOX (vbox), priv->artist_label, FALSE, FALSE, 0);
+
+ // piece
+ GtkWidget* piece;
+ piece = gtk_label_new(dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_TEXT_PIECE));
+ priv->piece_label = piece;
+ gtk_box_pack_start (GTK_BOX (vbox), priv->piece_label, FALSE, FALSE, 0);
- priv->album_art = gtk_image_new_from_file(priv->our_path);
+ // container
+ GtkWidget* container;
+ container = gtk_label_new(dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_TEXT_CONTAINER));
+ priv->container_label = container;
+ gtk_box_pack_start (GTK_BOX (vbox), priv->container_label, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (priv->hbox), vbox, FALSE, FALSE, 0);
+
g_signal_connect(G_OBJECT(twin_item), "property-changed",
G_CALLBACK(metadata_widget_update_state), self);
-
- gtk_widget_show_all (priv->hbox);
+ gtk_widget_show_all (priv->hbox);
gtk_container_add (GTK_CONTAINER (self), hbox);
}
@@ -133,8 +159,6 @@ metadata_widget_button_release_event (GtkWidget *menuitem,
return TRUE;
}
-
-//TODO figure out why the userdata is not what I expect it to be.
static void metadata_widget_update_state(gchar *property, GValue *value, gpointer userdata)
{
g_debug("metadata_widget_update_state - with property %s", property);