Cleanup.
[jamendo] / src / album_screen.c
1 /*
2  * album_screen.c
3  *
4  *  Created on: 2009-10-12
5  *      Author: marcin
6  */
7 #include <hildon/hildon.h>
8 #include "album_screen.h"
9 #include "jamendo_api.h"
10 #include "track_listview.h"
11 #include "player.h"
12 #include "http_utils.h"
13
14 GtkWidget* album_screen_new(Album* album) {
15         GtkWidget* win;
16         GtkWidget *cover_box;
17         GtkWidget *label;
18         GtkWidget *treeview;
19         GtkWidget* track_box;
20         GtkWidget* image;
21         GList* track_list;
22
23         /* Create the main window */
24         win = hildon_stackable_window_new();
25         gtk_window_set_title(GTK_WINDOW(win), album->name);
26         hildon_gtk_window_set_progress_indicator(GTK_WINDOW(win),1);
27         gtk_widget_show(win);
28         while(gtk_events_pending()) gtk_main_iteration();
29
30         /* Setting a label in the new window */
31         label = gtk_label_new("");
32         gchar* markup = g_markup_printf_escaped("<span size='x-large'>%s</span>\n<span size='large'>%s</span>",album->name,album->artist_name);
33         gtk_label_set_markup(GTK_LABEL(label),markup);
34         g_free(markup);
35
36         gchar* image_name = album_get_image(album,200);
37         GdkPixbuf* pixbuf = http_get_image(image_name,200,-1);
38         g_free(image_name);
39         image = gtk_image_new_from_pixbuf(pixbuf);
40         g_object_unref(pixbuf);
41
42         cover_box = gtk_vbox_new(FALSE, 0);
43         gtk_box_pack_start(GTK_BOX(cover_box), image, TRUE, TRUE, 0);
44         gtk_box_pack_start(GTK_BOX(cover_box), label, TRUE, TRUE, 0);
45
46         track_list = jamendo_get_album_tracks(album);
47         player_set_track_list(track_list);
48         treeview = track_listview_create(track_list, TRACK_LISTVIEW_NAME);
49         // track list not freed automatically as player uses it
50         //g_signal_connect_swapped(G_OBJECT(treeview), "destroy", G_CALLBACK(track_list_free), track_list);
51
52         track_box = hildon_pannable_area_new();
53         hildon_pannable_area_add_with_viewport(HILDON_PANNABLE_AREA(track_box), treeview);
54
55         GtkWidget* main_box = gtk_hbox_new(TRUE,0);
56         gtk_box_pack_start(GTK_BOX(main_box), cover_box, TRUE,TRUE,0);
57         gtk_box_pack_start(GTK_BOX(main_box), track_box, TRUE,TRUE,0);
58         gtk_container_add(GTK_CONTAINER(win), main_box);
59
60
61         hildon_gtk_window_set_progress_indicator(GTK_WINDOW(win),0);
62
63         hildon_program_add_window(hildon_program_get_instance(),HILDON_WINDOW(win));
64
65         gtk_widget_show(player_toolbar_create());
66
67         return win;
68 }