X-Git-Url: http://git.maemo.org/git/?p=jamaendo;a=blobdiff_plain;f=jamaui%2Fradios.py;h=ac3e2ed4c4414ff15007eef3703563e6dbf000b5;hp=11c6a075dc776a9958353bd8ca85fcc5f05f1df6;hb=28e536cd57640a4375d8e05cfb5e0d6ba91f8f70;hpb=ff28df762c0fe9b59cfda459fce5637080b0eac9 diff --git a/jamaui/radios.py b/jamaui/radios.py index 11c6a07..ac3e2ed 100644 --- a/jamaui/radios.py +++ b/jamaui/radios.py @@ -22,75 +22,59 @@ # (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 albumlist import RadioList +from fetcher import Fetcher class RadiosWindow(hildon.StackableWindow): def __init__(self): hildon.StackableWindow.__init__(self) + self.fetcher = None + self.radios = {} + self.set_title("Radios") + self.connect('destroy', self.on_destroy) # 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.radios = {} - hildon.hildon_gtk_window_set_progress_indicator(self, 1) - for item in jamaendo.starred_radios(): - self.radios[item.ID] = item - self.result_store.append([self.radio_text(item), item.ID]) - hildon.hildon_gtk_window_set_progress_indicator(self, 0) - + self.radiolist = RadioList() + self.radiolist.connect('row-activated', self.row_activated) + self.panarea.add(self.radiolist) self.add(self.panarea) - def radio_text(self, radio): - if radio.name and radio.idstr: - return "%s (%s)" % (radio.name, radio.idstr) - elif radio.name: - return radio.name - elif radio.idstr: - return radio.idstr - else: - return "Radio #%s" % (radio.ID) - - def make_button(self, text, subtext, callback): - button = hildon.Button(gtk.HILDON_SIZE_FINGER_HEIGHT, - hildon.BUTTON_ARRANGEMENT_VERTICAL) - button.set_text(text, subtext) + self.start_radio_fetcher() - if callback: - button.connect('clicked', callback) + def on_destroy(self, wnd): + if self.fetcher: + self.fetcher.stop() + self.fetcher = None - #image = gtk.image_new_from_stock(gtk.STOCK_INFO, gtk.ICON_SIZE_BUTTON) - #button.set_image(image) - #button.set_image_position(gtk.POS_RIGHT) + def row_activated(self, treeview, path, view_column): + name, _id = self.radiolist.get_radio_id(path) + wnd = open_playerwindow() + wnd.play_radio(name, _id) - return button + def start_radio_fetcher(self): + if self.fetcher: + self.fetcher.stop() + self.fetcher = None + self.fetcher = Fetcher(jamaendo.starred_radios, self, + on_item = self.on_radio_result, + on_ok = self.on_radio_complete, + on_fail = self.on_radio_complete) + self.fetcher.start() - def row_activated(self, treeview, path, view_column): - treeiter = self.result_store.get_iter(path) - title, _id = self.result_store.get(treeiter, 0, 1) - item = self.radios[_id] - #print _id, item - self.open_item(item) + def on_radio_result(self, wnd, item): + if wnd is self: + self.radios[item.ID] = item + self.radiolist.add_radios([item]) - def open_item(self, item): - hildon.hildon_gtk_window_set_progress_indicator(self, 1) - tracks = jamaendo.get_radio_tracks(item.ID) - hildon.hildon_gtk_window_set_progress_indicator(self, 0) - if tracks: - wnd = open_playerwindow() - wnd.play_tracks(tracks) + def on_radio_complete(self, wnd, error=None): + if wnd is self: + self.fetcher.stop() + self.fetcher = None