mirror of
https://github.com/codex-storage/deluge.git
synced 2025-02-05 16:13:41 +00:00
use cache for async tracker images
This commit is contained in:
parent
7359ddb879
commit
d4bbece86e
@ -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
|
||||
|
||||
|
||||
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user