~oem-solutions-group/unity-2d/indicator-sound

« back to all changes in this revision

Viewing changes to src/metadata-widget.c

  • Committer: Sebastien Bacher
  • Date: 2010-06-28 15:35:19 UTC
  • mfrom: (28.9.10 upstream)
  • Revision ID: seb128@ubuntu.com-20100628153519-zi98aargg1szseq4
Tags: 0.3.4-0ubuntu1
releasing version 0.3.4-0ubuntu1

Show diffs side-by-side

added added

removed removed

Lines of Context:
57
57
                                       GValue* value, gpointer userdata);
58
58
 
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);
60
63
 
61
64
 
62
65
G_DEFINE_TYPE (MetadataWidget, metadata_widget, GTK_TYPE_MENU_ITEM);
88
91
 
89
92
        GtkWidget *hbox;
90
93
 
91
 
        hbox = gtk_hbox_new(TRUE, 0);
 
94
        hbox = gtk_hbox_new(FALSE, 0);
92
95
        priv->hbox = hbox;
93
 
        
 
96
 
94
97
        // image
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); 
 
101
 
98
102
        gtk_box_pack_start (GTK_BOX (priv->hbox), priv->album_art, FALSE, FALSE, 0);    
99
 
        GtkWidget* vbox = gtk_vbox_new(TRUE, 0);
100
103
 
 
104
        
 
105
        GtkWidget* vbox = gtk_vbox_new(FALSE, 0);
 
106
        gtk_container_set_border_width(GTK_CONTAINER(vbox), 10);
101
107
        // artist
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));
 
111
        
 
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;
105
 
        
 
116
        // Style it up.
 
117
        style_artist_text(self);
106
118
        
107
119
        // piece
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;
111
 
 
 
127
        // Style it up.
 
128
        style_title_text(self);
112
129
 
113
130
        // container
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;
 
138
        // Style it up.
 
139
        style_album_text(self);
117
140
 
118
141
        // Pack in the right order
119
142
        gtk_box_pack_start (GTK_BOX (vbox), priv->piece_label, FALSE, FALSE, 0);        
170
193
        
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);
173
197
        }
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);
176
201
        }       
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);        
179
205
        }       
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);
183
209
                }
184
 
                
185
210
                priv->image_path = g_value_dup_string(value);
186
 
 
187
211
                if(priv->image_path != NULL){
188
212
                        update_album_art(mitem);
189
213
                }
190
214
        }               
191
215
}
192
216
 
193
 
static void update_album_art(MetadataWidget* self){
 
217
static void
 
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); 
201
226
}
202
227
 
 
228
// TODO refactor next 3 methods into one once the style has been 
 
229
// "signed off" by design
 
230
static void
 
231
style_artist_text(MetadataWidget* self)
 
232
{
 
233
        MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);       
 
234
        char* markup;
 
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);
 
238
        g_free(markup);
 
239
}
 
240
 
 
241
static void
 
242
style_title_text(MetadataWidget* self)
 
243
{
 
244
        MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);       
 
245
 
 
246
        char* markup;
 
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);
 
250
        g_free(markup);
 
251
}
 
252
 
 
253
static void
 
254
style_album_text(MetadataWidget* self)
 
255
{
 
256
        MetadataWidgetPrivate * priv = METADATA_WIDGET_GET_PRIVATE(self);       
 
257
        char* markup;
 
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);
 
261
        g_free(markup);
 
262
}
203
263
 
204
264
 /**
205
265
 * transport_new: