57
57
GValue* value, gpointer userdata);
59
59
static void update_album_art(MetadataWidget* self);
60
static void style_artist_text(MetadataWidget* self);
61
static void style_title_text(MetadataWidget* self);
62
static void style_album_text(MetadataWidget* self);
62
65
G_DEFINE_TYPE (MetadataWidget, metadata_widget, GTK_TYPE_MENU_ITEM);
91
hbox = gtk_hbox_new(TRUE, 0);
94
hbox = gtk_hbox_new(FALSE, 0);
95
98
priv->album_art = gtk_image_new();
96
99
priv->image_path = g_strdup(dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_ARTURL));
97
100
update_album_art(self);
98
102
gtk_box_pack_start (GTK_BOX (priv->hbox), priv->album_art, FALSE, FALSE, 0);
99
GtkWidget* vbox = gtk_vbox_new(TRUE, 0);
105
GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
106
gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
102
108
GtkWidget* artist;
103
artist = gtk_label_new(dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST));
109
artist = gtk_label_new(dbusmenu_menuitem_property_get(twin_item,
110
DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST));
112
gtk_misc_set_alignment(GTK_MISC(artist), (gfloat)0, (gfloat)0);
113
gtk_label_set_width_chars(GTK_LABEL(artist), 20);
114
gtk_label_set_ellipsize(GTK_LABEL(artist), PANGO_ELLIPSIZE_END);
104
115
priv->artist_label = artist;
117
style_artist_text(self);
108
120
GtkWidget* piece;
109
piece = gtk_label_new(dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_TEXT_TITLE));
121
piece = gtk_label_new(dbusmenu_menuitem_property_get(twin_item,
122
DBUSMENU_METADATA_MENUITEM_TEXT_TITLE));
123
gtk_misc_set_alignment(GTK_MISC(piece), (gfloat)0, (gfloat)0);
124
gtk_label_set_width_chars(GTK_LABEL(piece), 16);
125
gtk_label_set_ellipsize(GTK_LABEL(piece), PANGO_ELLIPSIZE_END);
110
126
priv->piece_label = piece;
128
style_title_text(self);
114
131
GtkWidget* container;
115
container = gtk_label_new(dbusmenu_menuitem_property_get(twin_item, DBUSMENU_METADATA_MENUITEM_TEXT_ALBUM));
132
container = gtk_label_new(dbusmenu_menuitem_property_get(twin_item,
133
DBUSMENU_METADATA_MENUITEM_TEXT_ALBUM));
134
gtk_misc_set_alignment(GTK_MISC(container), (gfloat)0, (gfloat)0);
135
gtk_label_set_width_chars(GTK_LABEL(container), 20);
136
gtk_label_set_ellipsize(GTK_LABEL(container), PANGO_ELLIPSIZE_END);
116
137
priv->container_label = container;
139
style_album_text(self);
118
141
// Pack in the right order
119
142
gtk_box_pack_start (GTK_BOX (vbox), priv->piece_label, FALSE, FALSE, 0);
171
194
if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_TEXT_ARTIST, property) == 0){
172
195
gtk_label_set_text(GTK_LABEL(priv->artist_label), g_value_get_string(value));
196
style_artist_text(mitem);
174
198
else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_TEXT_TITLE, property) == 0){
175
gtk_label_set_text(GTK_LABEL(priv->piece_label), g_value_get_string(value));
199
gtk_label_set_text(GTK_LABEL(priv->piece_label), g_value_get_string(value));
200
style_title_text(mitem);
177
202
else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_TEXT_ALBUM, property) == 0){
178
203
gtk_label_set_text(GTK_LABEL(priv->container_label), g_value_get_string(value));
204
style_album_text(mitem);
180
206
else if(g_ascii_strcasecmp(DBUSMENU_METADATA_MENUITEM_ARTURL, property) == 0){
181
207
if(priv->image_path != NULL){
182
208
g_free(priv->image_path);
185
210
priv->image_path = g_value_dup_string(value);
187
211
if(priv->image_path != NULL){
188
212
update_album_art(mitem);
193
static void update_album_art(MetadataWidget* self){
218
update_album_art(MetadataWidget* self){
194
219
MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);
195
220
GdkPixbuf* pixbuf;
196
221
pixbuf = gdk_pixbuf_new_from_file(priv->image_path, NULL);
200
225
g_object_unref(pixbuf);
228
// TODO refactor next 3 methods into one once the style has been
229
// "signed off" by design
231
style_artist_text(MetadataWidget* self)
233
MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);
235
markup = g_markup_printf_escaped ("<span size=\"small\">%s</span>",
236
gtk_label_get_text(GTK_LABEL(priv->artist_label)));
237
gtk_label_set_markup (GTK_LABEL (priv->artist_label), markup);
242
style_title_text(MetadataWidget* self)
244
MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);
247
markup = g_markup_printf_escaped ("<span weight=\"bold\">%s</span>",
248
gtk_label_get_text(GTK_LABEL(priv->piece_label)));
249
gtk_label_set_markup (GTK_LABEL (priv->piece_label), markup);
254
style_album_text(MetadataWidget* self)
256
MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);
258
markup = g_markup_printf_escaped ("<span size=\"small\">%s</span>",
259
gtk_label_get_text(GTK_LABEL(priv->container_label)));
260
gtk_label_set_markup (GTK_LABEL (priv->container_label), markup);