4 from playerwindow import open_playerwindow
5 from showartist import ShowArtist
6 from showalbum import ShowAlbum
7 from settings import settings
10 log = logging.getLogger(__name__)
18 class FavoritesWindow(hildon.StackableWindow):
20 hildon.StackableWindow.__init__(self)
21 self.set_title("Favorites")
25 self.panarea = hildon.PannableArea()
26 self.result_store = gtk.ListStore(str, int)
27 #self.result_store.append(['red'])
28 self.result_view = gtk.TreeView(self.result_store)
29 col = gtk.TreeViewColumn('Name')
30 self.result_view.append_column(col)
31 cell = gtk.CellRendererText()
32 col.pack_start(cell, True)
33 col.add_attribute(cell, 'text', 0)
34 self.result_view.set_search_column(0)
35 col.set_sort_column_id(0)
36 self.result_view.connect('row-activated', self.row_activated)
38 self.panarea.add(self.result_view)
42 for item in jamaendo.favorite_albums(settings.user):
43 self.idmap[item.ID] = item
44 self.result_store.append([self.get_item_text(item), item.ID])
45 except jamaendo.JamendoAPIException, e:
46 msg = "Query failed, is the user name '%s' correct?" % (settings.user)
47 banner = hildon.hildon_banner_show_information(self, '',
49 banner.set_timeout(3000)
52 def add_album(albumid):
53 album = jamaendo.get_album(albumid)
54 self.idmap[albumid] = album
55 self.result_store.append([self.get_item_text(album), albumid])
57 for item in settings.favorites:
59 if isinstance(item, tuple) and len(item) == 2:
64 except jamaendo.JamendoAPIException, e:
65 log.exception("jamaendo.get_album(%s)"%(fid))
67 self.add(self.panarea)
72 lbl.set_markup("""<span size="xx-large">jamendo.com
73 in the settings dialog
74 enter your username</span>
76 lbl.set_single_line_mode(False)
77 vbox.pack_start(lbl, True, False)
80 def get_item_text(self, item):
81 if isinstance(item, jamaendo.Album):
82 return "%s - %s" % (item.artist_name, item.name)
83 elif isinstance(item, jamaendo.Track):
84 return "%s - %s" % (item.artist_name, item.name)
88 def make_button(self, text, subtext, callback):
89 button = hildon.Button(gtk.HILDON_SIZE_FINGER_HEIGHT,
90 hildon.BUTTON_ARRANGEMENT_VERTICAL)
91 button.set_text(text, subtext)
94 button.connect('clicked', callback)
96 #image = gtk.image_new_from_stock(gtk.STOCK_INFO, gtk.ICON_SIZE_BUTTON)
97 #button.set_image(image)
98 #button.set_image_position(gtk.POS_RIGHT)
102 def row_activated(self, treeview, path, view_column):
103 treeiter = self.result_store.get_iter(path)
104 title, _id = self.result_store.get(treeiter, 0, 1)
105 item = self.idmap[_id]
109 def open_item(self, item):
110 if isinstance(item, jamaendo.Album):
111 wnd = ShowAlbum(item)
113 elif isinstance(item, jamaendo.Artist):
114 wnd = ShowArtist(item)
116 elif isinstance(item, jamaendo.Track):
117 wnd = open_playerwindow()
118 wnd.play_tracks([item])