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.c430
1 files changed, 215 insertions, 215 deletions
diff --git a/src/metadata-widget.c b/src/metadata-widget.c
index ac8355c..1e2c891 100644
--- a/src/metadata-widget.c
+++ b/src/metadata-widget.c
@@ -34,14 +34,14 @@ typedef struct _MetadataWidgetPrivate MetadataWidgetPrivate;
struct _MetadataWidgetPrivate
{
gboolean theme_change_occured;
- GtkWidget* hbox;
- GtkWidget* album_art;
- GString* image_path;
- GString* old_image_path;
- GtkWidget* artist_label;
- GtkWidget* piece_label;
- GtkWidget* container_label;
- DbusmenuMenuitem* twin_item;
+ GtkWidget* hbox;
+ GtkWidget* album_art;
+ GString* image_path;
+ GString* old_image_path;
+ GtkWidget* artist_label;
+ GtkWidget* piece_label;
+ GtkWidget* container_label;
+ DbusmenuMenuitem* twin_item;
};
#define METADATA_WIDGET_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), METADATA_WIDGET_TYPE, MetadataWidgetPrivate))
@@ -57,11 +57,11 @@ static void metadata_widget_set_twin_item (MetadataWidget* self, DbusmenuMenuite
// keyevent consumers
static gboolean metadata_widget_button_press_event (GtkWidget *menuitem,
- GdkEventButton *event);
+ GdkEventButton *event);
// Dbusmenuitem properties update callback
static void metadata_widget_property_update (DbusmenuMenuitem* item,
gchar* property,
- GValue* value,
+ GValue* value,
gpointer userdata);
static void metadata_widget_style_labels ( MetadataWidget* self,
GtkLabel* label);
@@ -77,105 +77,105 @@ G_DEFINE_TYPE (MetadataWidget, metadata_widget, GTK_TYPE_MENU_ITEM);
static void
metadata_widget_class_init (MetadataWidgetClass *klass)
{
- GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass);
- widget_class->button_press_event = metadata_widget_button_press_event;
-
- g_type_class_add_private (klass, sizeof (MetadataWidgetPrivate));
+ widget_class->button_press_event = metadata_widget_button_press_event;
+
+ g_type_class_add_private (klass, sizeof (MetadataWidgetPrivate));
- gobject_class->dispose = metadata_widget_dispose;
- gobject_class->finalize = metadata_widget_finalize;
+ gobject_class->dispose = metadata_widget_dispose;
+ gobject_class->finalize = metadata_widget_finalize;
}
static void
metadata_widget_init (MetadataWidget *self)
{
- //g_debug("MetadataWidget::metadata_widget_init");
+ //g_debug("MetadataWidget::metadata_widget_init");
- MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);
- GtkWidget *hbox;
+ MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);
+ GtkWidget *hbox;
- hbox = gtk_hbox_new(FALSE, 0);
- priv->hbox = hbox;
+ hbox = gtk_hbox_new(FALSE, 0);
+ priv->hbox = hbox;
- // image
- priv->album_art = gtk_image_new();
- priv->image_path = g_string_new(dbusmenu_menuitem_property_get(priv->twin_item,
+ // image
+ priv->album_art = gtk_image_new();
+ priv->image_path = g_string_new(dbusmenu_menuitem_property_get(priv->twin_item,
DBUSMENU_METADATA_MENUITEM_ARTURL));
- priv->old_image_path = g_string_new("");
-
+ priv->old_image_path = g_string_new("");
+
g_signal_connect(priv->album_art, "expose-event",
G_CALLBACK(metadata_image_expose),
- GTK_WIDGET(self));
- gtk_widget_set_size_request(GTK_WIDGET(priv->album_art), 60, 60);
-
- gtk_box_pack_start (GTK_BOX (priv->hbox),
+ GTK_WIDGET(self));
+ gtk_widget_set_size_request(GTK_WIDGET(priv->album_art), 60, 60);
+
+ gtk_box_pack_start (GTK_BOX (priv->hbox),
priv->album_art,
FALSE,
FALSE,
- 1);
+ 1);
priv->theme_change_occured = FALSE;
GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
-
- // artist
- GtkWidget* artist;
- artist = gtk_label_new(dbusmenu_menuitem_property_get(priv->twin_item,
- DBUSMENU_METADATA_MENUITEM_ARTIST));
- gtk_misc_set_alignment(GTK_MISC(artist), (gfloat)0, (gfloat)0);
- gtk_misc_set_padding (GTK_MISC(artist), (gfloat)10, (gfloat)0);
+
+ // artist
+ GtkWidget* artist;
+ artist = gtk_label_new(dbusmenu_menuitem_property_get(priv->twin_item,
+ DBUSMENU_METADATA_MENUITEM_ARTIST));
+ gtk_misc_set_alignment(GTK_MISC(artist), (gfloat)0, (gfloat)0);
+ gtk_misc_set_padding (GTK_MISC(artist), (gfloat)10, (gfloat)0);
gtk_widget_set_size_request (artist, 140, 15);
- gtk_label_set_ellipsize(GTK_LABEL(artist), PANGO_ELLIPSIZE_MIDDLE);
- metadata_widget_style_labels(self, GTK_LABEL(artist));
- priv->artist_label = artist;
-
- // title
- GtkWidget* piece;
- piece = gtk_label_new(dbusmenu_menuitem_property_get( priv->twin_item,
- DBUSMENU_METADATA_MENUITEM_TITLE) );
- gtk_misc_set_alignment(GTK_MISC(piece), (gfloat)0, (gfloat)0);
- gtk_misc_set_padding (GTK_MISC(piece), (gfloat)10, (gfloat)-5);
+ gtk_label_set_ellipsize(GTK_LABEL(artist), PANGO_ELLIPSIZE_MIDDLE);
+ metadata_widget_style_labels(self, GTK_LABEL(artist));
+ priv->artist_label = artist;
+
+ // title
+ GtkWidget* piece;
+ piece = gtk_label_new(dbusmenu_menuitem_property_get( priv->twin_item,
+ DBUSMENU_METADATA_MENUITEM_TITLE) );
+ gtk_misc_set_alignment(GTK_MISC(piece), (gfloat)0, (gfloat)0);
+ gtk_misc_set_padding (GTK_MISC(piece), (gfloat)10, (gfloat)-5);
gtk_widget_set_size_request (piece, 140, 15);
gtk_label_set_ellipsize(GTK_LABEL(piece), PANGO_ELLIPSIZE_MIDDLE);
- metadata_widget_style_labels(self, GTK_LABEL(piece));
- priv->piece_label = piece;
-
- // container
- GtkWidget* container;
- container = gtk_label_new(dbusmenu_menuitem_property_get( priv->twin_item,
- DBUSMENU_METADATA_MENUITEM_ALBUM) );
- gtk_misc_set_alignment(GTK_MISC(container), (gfloat)0, (gfloat)0);
- gtk_misc_set_padding (GTK_MISC(container), (gfloat)10, (gfloat)0);
+ metadata_widget_style_labels(self, GTK_LABEL(piece));
+ priv->piece_label = piece;
+
+ // container
+ GtkWidget* container;
+ container = gtk_label_new(dbusmenu_menuitem_property_get( priv->twin_item,
+ DBUSMENU_METADATA_MENUITEM_ALBUM) );
+ gtk_misc_set_alignment(GTK_MISC(container), (gfloat)0, (gfloat)0);
+ gtk_misc_set_padding (GTK_MISC(container), (gfloat)10, (gfloat)0);
gtk_widget_set_size_request (container, 140, 15);
- gtk_label_set_ellipsize(GTK_LABEL(container), PANGO_ELLIPSIZE_MIDDLE);
- metadata_widget_style_labels(self, GTK_LABEL(container));
- priv->container_label = container;
+ gtk_label_set_ellipsize(GTK_LABEL(container), PANGO_ELLIPSIZE_MIDDLE);
+ metadata_widget_style_labels(self, GTK_LABEL(container));
+ priv->container_label = container;
- gtk_box_pack_start (GTK_BOX (vbox), priv->piece_label, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox), priv->artist_label, FALSE, FALSE, 0);
- 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);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->piece_label, FALSE, FALSE, 0);
+ gtk_box_pack_start (GTK_BOX (vbox), priv->artist_label, FALSE, FALSE, 0);
+ 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(self, "style-set",
- G_CALLBACK(metadata_widget_set_style), GTK_WIDGET(self));
- g_signal_connect (self, "selection-received",
+ G_CALLBACK(metadata_widget_set_style), GTK_WIDGET(self));
+ g_signal_connect (self, "selection-received",
G_CALLBACK(metadata_widget_selection_received_event_callback),
- GTK_WIDGET(self));
- gtk_widget_set_size_request(GTK_WIDGET(self), 200, 75);
+ GTK_WIDGET(self));
+ gtk_widget_set_size_request(GTK_WIDGET(self), 200, 75);
gtk_container_add (GTK_CONTAINER (self), hbox);
}
static void
metadata_widget_dispose (GObject *object)
{
- G_OBJECT_CLASS (metadata_widget_parent_class)->dispose (object);
+ G_OBJECT_CLASS (metadata_widget_parent_class)->dispose (object);
}
static void
metadata_widget_finalize (GObject *object)
{
- G_OBJECT_CLASS (metadata_widget_parent_class)->finalize (object);
+ G_OBJECT_CLASS (metadata_widget_parent_class)->finalize (object);
}
@@ -186,46 +186,46 @@ metadata_widget_finalize (GObject *object)
static gboolean
metadata_image_expose (GtkWidget *metadata, GdkEventExpose *event, gpointer user_data)
{
- g_return_val_if_fail(IS_METADATA_WIDGET(user_data), FALSE);
- MetadataWidget* widget = METADATA_WIDGET(user_data);
- MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(widget);
+ g_return_val_if_fail(IS_METADATA_WIDGET(user_data), FALSE);
+ MetadataWidget* widget = METADATA_WIDGET(user_data);
+ MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(widget);
draw_album_border(metadata, FALSE);
- if(priv->image_path->len > 0){
- if(g_string_equal(priv->image_path, priv->old_image_path) == FALSE ||
+ if(priv->image_path->len > 0){
+ if(g_string_equal(priv->image_path, priv->old_image_path) == FALSE ||
priv->theme_change_occured == TRUE){
priv->theme_change_occured = FALSE;
- GdkPixbuf* pixbuf;
- pixbuf = gdk_pixbuf_new_from_file(priv->image_path->str, NULL);
- //g_debug("metadata_load_new_image -> pixbuf from %s",
- // priv->image_path->str);
- if(GDK_IS_PIXBUF(pixbuf) == FALSE){
- //g_debug("problem loading the downloaded image just use the placeholder instead");
- draw_album_art_placeholder(metadata);
- return TRUE;
- }
- pixbuf = gdk_pixbuf_scale_simple(pixbuf,60, 60, GDK_INTERP_BILINEAR);
- gtk_image_set_from_pixbuf(GTK_IMAGE(priv->album_art), pixbuf);
- g_string_erase(priv->old_image_path, 0, -1);
- g_string_overwrite(priv->old_image_path, 0, priv->image_path->str);
-
- g_object_unref(pixbuf);
- }
- return FALSE;
- }
- draw_album_art_placeholder(metadata);
- return TRUE;
+ GdkPixbuf* pixbuf;
+ pixbuf = gdk_pixbuf_new_from_file(priv->image_path->str, NULL);
+ //g_debug("metadata_load_new_image -> pixbuf from %s",
+ // priv->image_path->str);
+ if(GDK_IS_PIXBUF(pixbuf) == FALSE){
+ //g_debug("problem loading the downloaded image just use the placeholder instead");
+ draw_album_art_placeholder(metadata);
+ return TRUE;
+ }
+ pixbuf = gdk_pixbuf_scale_simple(pixbuf,60, 60, GDK_INTERP_BILINEAR);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(priv->album_art), pixbuf);
+ g_string_erase(priv->old_image_path, 0, -1);
+ g_string_overwrite(priv->old_image_path, 0, priv->image_path->str);
+
+ g_object_unref(pixbuf);
+ }
+ return FALSE;
+ }
+ draw_album_art_placeholder(metadata);
+ return TRUE;
}
static void
draw_album_border(GtkWidget *metadata, gboolean selected)
{
- cairo_t *cr;
- cr = gdk_cairo_create (metadata->window);
+ cairo_t *cr;
+ cr = gdk_cairo_create (metadata->window);
GtkStyle *style;
- style = gtk_widget_get_style (metadata);
+ style = gtk_widget_get_style (metadata);
- GtkAllocation alloc;
- gtk_widget_get_allocation (metadata, &alloc);
+ GtkAllocation alloc;
+ gtk_widget_get_allocation (metadata, &alloc);
gint offset = 1;
alloc.width = alloc.width + (offset * 2);
@@ -236,14 +236,14 @@ draw_album_border(GtkWidget *metadata, gboolean selected)
CairoColorRGB bg_normal, fg_normal;
bg_normal.r = style->bg[0].red/65535.0;
- bg_normal.g = style->bg[0].green/65535.0;
- bg_normal.b = style->bg[0].blue/65535.0;
+ bg_normal.g = style->bg[0].green/65535.0;
+ bg_normal.b = style->bg[0].blue/65535.0;
gint state = selected ? 5 : 0;
- fg_normal.r = style->fg[state].red/65535.0;
- fg_normal.g = style->fg[state].green/65535.0;
- fg_normal.b = style->fg[state].blue/65535.0;
+ fg_normal.r = style->fg[state].red/65535.0;
+ fg_normal.g = style->fg[state].green/65535.0;
+ fg_normal.b = style->fg[state].blue/65535.0;
CairoColorRGB dark_top_color;
CairoColorRGB light_bottom_color;
@@ -259,15 +259,15 @@ draw_album_border(GtkWidget *metadata, gboolean selected)
cairo_set_line_width (cr, 1.0);
- cairo_clip ( cr );
+ cairo_clip ( cr );
cairo_move_to (cr, alloc.x, alloc.y );
- cairo_line_to (cr, alloc.x + alloc.width,
- alloc.y );
+ cairo_line_to (cr, alloc.x + alloc.width,
+ alloc.y );
cairo_line_to ( cr, alloc.x + alloc.width,
- alloc.y + alloc.height );
- cairo_line_to ( cr, alloc.x, alloc.y + alloc.height );
- cairo_line_to ( cr, alloc.x, alloc.y);
+ alloc.y + alloc.height );
+ cairo_line_to ( cr, alloc.x, alloc.y + alloc.height );
+ cairo_line_to ( cr, alloc.x, alloc.y);
cairo_close_path (cr);
cairo_set_source_rgba ( cr,
@@ -278,9 +278,9 @@ draw_album_border(GtkWidget *metadata, gboolean selected)
cairo_fill ( cr );
- cairo_move_to (cr, alloc.x, alloc.y );
- cairo_line_to (cr, alloc.x + alloc.width,
- alloc.y );
+ cairo_move_to (cr, alloc.x, alloc.y );
+ cairo_line_to (cr, alloc.x + alloc.width,
+ alloc.y );
cairo_close_path (cr);
cairo_set_source_rgba ( cr,
@@ -291,11 +291,11 @@ draw_album_border(GtkWidget *metadata, gboolean selected)
cairo_stroke ( cr );
- cairo_move_to ( cr, alloc.x + alloc.width,
- alloc.y + alloc.height );
- cairo_line_to ( cr, alloc.x, alloc.y + alloc.height );
+ cairo_move_to ( cr, alloc.x + alloc.width,
+ alloc.y + alloc.height );
+ cairo_line_to ( cr, alloc.x, alloc.y + alloc.height );
- cairo_close_path (cr);
+ cairo_close_path (cr);
cairo_set_source_rgba ( cr,
light_bottom_color.r,
light_bottom_color.g,
@@ -303,41 +303,41 @@ draw_album_border(GtkWidget *metadata, gboolean selected)
1.0);
cairo_stroke ( cr );
- cairo_destroy (cr);
+ cairo_destroy (cr);
}
static void
draw_album_art_placeholder(GtkWidget *metadata)
-{
- cairo_t *cr;
- cr = gdk_cairo_create (metadata->window);
+{
+ cairo_t *cr;
+ cr = gdk_cairo_create (metadata->window);
GtkStyle *style;
- style = gtk_widget_get_style (metadata);
+ style = gtk_widget_get_style (metadata);
- GtkAllocation alloc;
- gtk_widget_get_allocation (metadata, &alloc);
+ GtkAllocation alloc;
+ gtk_widget_get_allocation (metadata, &alloc);
PangoLayout *layout;
- PangoFontDescription *desc;
- layout = pango_cairo_create_layout(cr);
- PangoContext* pcontext = pango_cairo_create_context(cr);
- pango_cairo_context_set_resolution (pcontext, 96);
-
- GString* string = g_string_new("");
- gssize size = -1;
- gunichar code = g_utf8_get_char_validated("\342\231\253", size);
- g_string_append_unichar (string, code);
-
- pango_layout_set_text(layout, string->str, -1);
- desc = pango_font_description_from_string("Sans Bold 30");
- pango_layout_set_font_description(layout, desc);
- pango_font_description_free(desc);
+ PangoFontDescription *desc;
+ layout = pango_cairo_create_layout(cr);
+ PangoContext* pcontext = pango_cairo_create_context(cr);
+ pango_cairo_context_set_resolution (pcontext, 96);
+
+ GString* string = g_string_new("");
+ gssize size = -1;
+ gunichar code = g_utf8_get_char_validated("\342\231\253", size);
+ g_string_append_unichar (string, code);
+
+ pango_layout_set_text(layout, string->str, -1);
+ desc = pango_font_description_from_string("Sans Bold 30");
+ pango_layout_set_font_description(layout, desc);
+ pango_font_description_free(desc);
CairoColorRGB fg_normal, light_bottom_color;
- fg_normal.r = style->fg[0].red/65535.0;
- fg_normal.g = style->fg[0].green/65535.0;
- fg_normal.b = style->fg[0].blue/65535.0;
+ fg_normal.r = style->fg[0].red/65535.0;
+ fg_normal.g = style->fg[0].green/65535.0;
+ fg_normal.b = style->fg[0].blue/65535.0;
_color_shade ( &fg_normal, 0.78, &light_bottom_color );
@@ -348,14 +348,14 @@ draw_album_art_placeholder(GtkWidget *metadata)
light_bottom_color.b,
1.0);
- pango_cairo_update_layout(cr, layout);
- cairo_move_to (cr, alloc.x + alloc.width/6, alloc.y + alloc.height/8);
- pango_cairo_show_layout(cr, layout);
+ pango_cairo_update_layout(cr, layout);
+ cairo_move_to (cr, alloc.x + alloc.width/6, alloc.y + alloc.height/8);
+ pango_cairo_show_layout(cr, layout);
- g_object_unref(layout);
- g_object_unref(pcontext);
- g_string_free (string, TRUE);
- cairo_destroy (cr);
+ g_object_unref(layout);
+ g_object_unref(pcontext);
+ g_string_free (string, TRUE);
+ cairo_destroy (cr);
}
@@ -366,9 +366,9 @@ metadata_widget_selection_received_event_callback ( GtkWidget *widget,
gpointer user_data )
{
- //g_return_val_if_fail(IS_METADATA_WIDGET(user_data), FALSE);
- //MetadataWidget* widget = METADATA_WIDGET(user_data);
- //MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(widget);
+ //g_return_val_if_fail(IS_METADATA_WIDGET(user_data), FALSE);
+ //MetadataWidget* widget = METADATA_WIDGET(user_data);
+ //MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(widget);
g_debug("metadata_widget_selection_request_event_callback");
draw_album_border(widget, TRUE);
}
@@ -378,21 +378,21 @@ static gboolean
metadata_widget_button_press_event (GtkWidget *menuitem,
GdkEventButton *event)
{
- GtkClipboard* board = gtk_clipboard_get (GDK_NONE);
+ GtkClipboard* board = gtk_clipboard_get (GDK_NONE);
- MetadataWidgetPrivate* priv = METADATA_WIDGET_GET_PRIVATE(METADATA_WIDGET(menuitem));
+ MetadataWidgetPrivate* priv = METADATA_WIDGET_GET_PRIVATE(METADATA_WIDGET(menuitem));
- gchar* contents = g_strdup_printf("artist: %s \ntitle: %s \nalbum: %s",
+ gchar* contents = g_strdup_printf("artist: %s \ntitle: %s \nalbum: %s",
dbusmenu_menuitem_property_get(priv->twin_item,
- DBUSMENU_METADATA_MENUITEM_ARTIST),
+ DBUSMENU_METADATA_MENUITEM_ARTIST),
dbusmenu_menuitem_property_get(priv->twin_item,
- DBUSMENU_METADATA_MENUITEM_TITLE),
+ DBUSMENU_METADATA_MENUITEM_TITLE),
dbusmenu_menuitem_property_get(priv->twin_item,
- DBUSMENU_METADATA_MENUITEM_ALBUM));
- gtk_clipboard_set_text (board, contents, -1);
- gtk_clipboard_store (board);
- g_free(contents);
- return FALSE;
+ DBUSMENU_METADATA_MENUITEM_ALBUM));
+ gtk_clipboard_set_text (board, contents, -1);
+ gtk_clipboard_store (board);
+ g_free(contents);
+ return FALSE;
}
// TODO: Manage empty/mangled music details <unknown artist> etc.
@@ -400,65 +400,65 @@ static void
metadata_widget_property_update(DbusmenuMenuitem* item, gchar* property,
GValue* value, gpointer userdata)
{
- g_return_if_fail (IS_METADATA_WIDGET (userdata));
-
- if(g_value_get_int(value) == DBUSMENU_PROPERTY_EMPTY){
- //g_debug("Metadata widget: property update - reset");
- GValue new_value = {0};
- g_value_init(&new_value, G_TYPE_STRING);
- g_value_set_string(&new_value, g_strdup(""));
- value = &new_value;
- }
-
- MetadataWidget* mitem = METADATA_WIDGET(userdata);
- MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(mitem);
-
- if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_ARTIST, property) == 0){
- gtk_label_set_text(GTK_LABEL(priv->artist_label), g_value_get_string(value));
- metadata_widget_style_labels(mitem, GTK_LABEL(priv->artist_label));
- }
- else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_TITLE, property) == 0){
- gtk_label_set_text(GTK_LABEL(priv->piece_label), g_value_get_string(value));
- metadata_widget_style_labels(mitem, GTK_LABEL(priv->piece_label));
- }
- else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_ALBUM, property) == 0){
- gtk_label_set_text(GTK_LABEL(priv->container_label), g_value_get_string(value));
- metadata_widget_style_labels(mitem, GTK_LABEL(priv->container_label));
- }
- else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_ARTURL, property) == 0){
- g_string_erase(priv->image_path, 0, -1);
- g_string_overwrite(priv->image_path, 0, g_value_get_string (value));
- // if its a remote image queue a redraw incase the download took too long
- if (g_str_has_prefix(g_value_get_string (value), g_get_user_cache_dir())){
- //g_debug("the image update is a download so redraw");
- gtk_widget_queue_draw(GTK_WIDGET(mitem));
- }
- }
+ g_return_if_fail (IS_METADATA_WIDGET (userdata));
+
+ if(g_value_get_int(value) == DBUSMENU_PROPERTY_EMPTY){
+ //g_debug("Metadata widget: property update - reset");
+ GValue new_value = {0};
+ g_value_init(&new_value, G_TYPE_STRING);
+ g_value_set_string(&new_value, g_strdup(""));
+ value = &new_value;
+ }
+
+ MetadataWidget* mitem = METADATA_WIDGET(userdata);
+ MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(mitem);
+
+ if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_ARTIST, property) == 0){
+ gtk_label_set_text(GTK_LABEL(priv->artist_label), g_value_get_string(value));
+ metadata_widget_style_labels(mitem, GTK_LABEL(priv->artist_label));
+ }
+ else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_TITLE, property) == 0){
+ gtk_label_set_text(GTK_LABEL(priv->piece_label), g_value_get_string(value));
+ metadata_widget_style_labels(mitem, GTK_LABEL(priv->piece_label));
+ }
+ else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_ALBUM, property) == 0){
+ gtk_label_set_text(GTK_LABEL(priv->container_label), g_value_get_string(value));
+ metadata_widget_style_labels(mitem, GTK_LABEL(priv->container_label));
+ }
+ else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_ARTURL, property) == 0){
+ g_string_erase(priv->image_path, 0, -1);
+ g_string_overwrite(priv->image_path, 0, g_value_get_string (value));
+ // if its a remote image queue a redraw incase the download took too long
+ if (g_str_has_prefix(g_value_get_string (value), g_get_user_cache_dir())){
+ //g_debug("the image update is a download so redraw");
+ gtk_widget_queue_draw(GTK_WIDGET(mitem));
+ }
+ }
}
static void
metadata_widget_style_labels(MetadataWidget* self, GtkLabel* label)
{
- char* markup;
- markup = g_markup_printf_escaped ("<span size=\"smaller\">%s</span>",
- gtk_label_get_text(GTK_LABEL(label)));
- gtk_label_set_markup (GTK_LABEL (label), markup);
- g_free(markup);
+ char* markup;
+ markup = g_markup_printf_escaped ("<span size=\"smaller\">%s</span>",
+ gtk_label_get_text(GTK_LABEL(label)));
+ gtk_label_set_markup (GTK_LABEL (label), markup);
+ g_free(markup);
}
static void
metadata_widget_set_style(GtkWidget* metadata, GtkStyle* style)
{
- g_return_if_fail(IS_METADATA_WIDGET(metadata));
- MetadataWidget* widg = METADATA_WIDGET(metadata);
- MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(widg);
+ g_return_if_fail(IS_METADATA_WIDGET(metadata));
+ MetadataWidget* widg = METADATA_WIDGET(metadata);
+ MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(widg);
priv->theme_change_occured = TRUE;
- gtk_widget_queue_draw(GTK_WIDGET(metadata));
+ gtk_widget_queue_draw(GTK_WIDGET(metadata));
}
static void
metadata_widget_set_twin_item(MetadataWidget* self,
- DbusmenuMenuitem* twin_item)
+ DbusmenuMenuitem* twin_item)
{
MetadataWidgetPrivate* priv = METADATA_WIDGET_GET_PRIVATE(self);
priv->twin_item = twin_item;
@@ -467,27 +467,27 @@ metadata_widget_set_twin_item(MetadataWidget* self,
gtk_label_set_text( GTK_LABEL(priv->container_label),
dbusmenu_menuitem_property_get( priv->twin_item,
DBUSMENU_METADATA_MENUITEM_ALBUM));
- metadata_widget_style_labels( self, GTK_LABEL(priv->container_label));
+ metadata_widget_style_labels( self, GTK_LABEL(priv->container_label));
gtk_label_set_text( GTK_LABEL(priv->piece_label),
dbusmenu_menuitem_property_get( priv->twin_item,
DBUSMENU_METADATA_MENUITEM_TITLE));
- metadata_widget_style_labels( self, GTK_LABEL(priv->piece_label));
+ metadata_widget_style_labels( self, GTK_LABEL(priv->piece_label));
gtk_label_set_text( GTK_LABEL(priv->artist_label),
dbusmenu_menuitem_property_get( priv->twin_item,
DBUSMENU_METADATA_MENUITEM_ARTIST));
- metadata_widget_style_labels( self, GTK_LABEL(priv->artist_label));
+ metadata_widget_style_labels( self, GTK_LABEL(priv->artist_label));
g_string_erase(priv->image_path, 0, -1);
- g_string_overwrite( priv->image_path,
+ g_string_overwrite( priv->image_path,
0,
dbusmenu_menuitem_property_get( priv->twin_item,
DBUSMENU_METADATA_MENUITEM_ARTURL ));
- // if its a remote image queue a redraw incase the download took too long
- if (g_str_has_prefix (dbusmenu_menuitem_property_get (priv->twin_item, DBUSMENU_METADATA_MENUITEM_ARTURL ),
+ // if its a remote image queue a redraw incase the download took too long
+ if (g_str_has_prefix (dbusmenu_menuitem_property_get (priv->twin_item, DBUSMENU_METADATA_MENUITEM_ARTURL ),
g_get_user_cache_dir())){
- gtk_widget_queue_draw(GTK_WIDGET(self));
+ gtk_widget_queue_draw(GTK_WIDGET(self));
}
}
@@ -499,7 +499,7 @@ GtkWidget*
metadata_widget_new(DbusmenuMenuitem *item)
{
- GtkWidget* widget = g_object_new(METADATA_WIDGET_TYPE, NULL);
+ GtkWidget* widget = g_object_new(METADATA_WIDGET_TYPE, NULL);
metadata_widget_set_twin_item ( METADATA_WIDGET(widget),
item );
return widget;