# (based on http://pygstdocs.berlios.de/pygst-tutorial/seeking.html)
#
import gtk
-import hildon
+try:
+ import hildon
+except:
+ import helldon as hildon
import jamaendo
from playerwindow import open_playerwindow
from showartist import ShowArtist
from settings import settings
import logging
+from albumlist import AlbumList
+
log = logging.getLogger(__name__)
def _alist(l, match):
if settings.user:
# Results list
self.panarea = hildon.PannableArea()
- self.result_store = gtk.ListStore(str, int)
- #self.result_store.append(['red'])
- self.result_view = gtk.TreeView(self.result_store)
- col = gtk.TreeViewColumn('Name')
- self.result_view.append_column(col)
- cell = gtk.CellRendererText()
- col.pack_start(cell, True)
- col.add_attribute(cell, 'text', 0)
- self.result_view.set_search_column(0)
- col.set_sort_column_id(0)
- self.result_view.connect('row-activated', self.row_activated)
-
- self.panarea.add(self.result_view)
+ self.results = AlbumList()
+ self.results.connect('row-activated', self.row_activated)
+ self.panarea.add(self.results)
self.idmap = {}
+
+ def add_album(ID, album_factory):
+ if ID not in self.idmap:
+ album = album_factory()
+ self.idmap[ID] = album
+ self.results.add_album(album)
+
try:
for item in jamaendo.favorite_albums(settings.user):
- self.idmap[item.ID] = item
- self.result_store.append([self.get_item_text(item), item.ID])
+ add_album(item.ID, lambda: item)
except jamaendo.JamendoAPIException, e:
msg = "Query failed, is the user name '%s' correct?" % (settings.user)
banner = hildon.hildon_banner_show_information(self, '',
msg)
banner.set_timeout(3000)
+ favorite_albums = [f[1] for f in settings.favorites if isinstance(f, tuple) and len(f) == 2 and f[0] == 'album' and f[1] not in self.idmap]
+ try:
+ for album in jamaendo.get_albums(favorite_albums):
+ add_album(album.ID, lambda: album)
- def add_album(albumid):
- album = jamaendo.get_album(albumid)
- self.idmap[albumid] = album
- self.result_store.append([self.get_item_text(album), albumid])
-
- for item in settings.favorites:
- try:
- if isinstance(item, tuple) and len(item) == 2:
- ftype, fid = item
- if ftype == 'album':
- add_album(fid)
-
- except jamaendo.JamendoAPIException, e:
- log.exception("jamaendo.get_album(%s)"%(fid))
+ except jamaendo.JamendoAPIException, e:
+ log.exception("jamaendo.get_albums(%s)"%(favorite_albums))
self.add(self.panarea)
return button
def row_activated(self, treeview, path, view_column):
- treeiter = self.result_store.get_iter(path)
- title, _id = self.result_store.get(treeiter, 0, 1)
+ _id = self.results.get_album_id(path)
item = self.idmap[_id]
- print _id, item
+ #print _id, item
self.open_item(item)
def open_item(self, item):