- for track in jamaendo.search_tracks(query=txt):
- title = "%s - %s" % (track.artist_name, track.name)
- self.idmap[track.ID] = track
- self.result_store.append([title, track.ID])
+ itemgen = lambda: jamaendo.search_tracks(query=txt)
+ else:
+ return
+
+ self.fetcher = Fetcher(itemgen, self,
+ on_item = self.on_add_result,
+ on_ok = self.on_add_complete,
+ on_fail = self.on_add_complete)
+ self.fetcher.start()
+ '''
+ try:
+ if mode == 0:
+ items = jamaendo.search_artists(query=txt)
+ elif mode == 1:
+ items = jamaendo.search_albums(query=txt)
+ elif mode == 2:
+ items = jamaendo.search_tracks(query=txt)
+
+ for item in items:
+ self.idmap[item.ID] = item
+
+ self.musiclist.add_items(items)
+ except jamaendo.JamaendoAPIException:
+ # nothing found, force redraw
+ self.musiclist.queue_draw()
+ '''
+
+ def on_add_result(self, wnd, item):
+ if wnd is self:
+ self.musiclist.add_items([item])
+ self.idmap[item.ID] = item
+
+ def on_add_complete(self, wnd, error=None):
+ if wnd is self:
+ self.musiclist.empty_message = "No matching results"
+ self.musiclist.queue_draw()
+ self.fetcher.stop()
+ self.fetcher = None