use cache for async tracker images

This commit is contained in:
Martijn Voncken 2008-10-21 18:57:13 +00:00
parent 7359ddb879
commit d4bbece86e
2 changed files with 15 additions and 8 deletions

View File

@ -89,16 +89,22 @@ class TrackerIcons(object):
gobject.idle_add(callback, filename)
def get_async(self, tracker_host, callback):
threading.Thread(
target=self. _fetch_icon_thread,
args=(tracker_host, callback)).start()
if tracker_host in self.images:
if callback:
callback(self.images[tracker_host])
else:
threading.Thread(target=self. _fetch_icon_thread,
args=(tracker_host, callback)).start()
def get(self, tracker_host):
"""
returns None if the icon is not fetched(yet) or not fond.
"""
if not tracker_host in self.images:
if tracker_host in self.images:
return self.images[tracker_host]
else:
self.images[tracker_host] = None
self.get_async(tracker_host, None)
return self.images[tracker_host]
return None

View File

@ -193,6 +193,10 @@ class FilterTreeView(component.Component):
label = _(value)
row = self.treestore.append(self.cat_nodes[cat],[cat, value, label, count , pix, True])
self.filters[(cat, value)] = row
if cat == "tracker_host":
self.tracker_icons.get_async(value, lambda filename: self.set_row_image(cat, value, filename))
self.treestore.set_value(row, FILTER_COLUMN, True)
return row
@ -230,9 +234,6 @@ class FilterTreeView(component.Component):
pix = STATE_PIX.get(value, "dht")
return gtk.gdk.pixbuf_new_from_file(deluge.common.get_pixmap("%s16.png" % pix))
elif cat == "tracker_host":
self.tracker_icons.get_async(value, lambda filename: self.set_row_image(cat, value, filename))
return None
def set_row_image(self, cat, value, filename):