Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/GetIABooksActivity.py
diff options
context:
space:
mode:
authorGonzalo Odiard <godiard@sugarlabs.org>2011-04-01 19:26:06 (GMT)
committer Gonzalo Odiard <godiard@sugarlabs.org>2011-04-01 19:26:06 (GMT)
commitfc7759bdf954a27dd9b01ba7ac6cc3fe0429a15c (patch)
treea3035cebf45b9954cf37944ee925c7f837c457d8 /GetIABooksActivity.py
parent81eb26dcaaeb45f8f7d0caefcc042ac536ff51f3 (diff)
Download the cover images in a seaprated thread
Diffstat (limited to 'GetIABooksActivity.py')
-rwxr-xr-xGetIABooksActivity.py59
1 files changed, 11 insertions, 48 deletions
diff --git a/GetIABooksActivity.py b/GetIABooksActivity.py
index eca23a7..1242ba0 100755
--- a/GetIABooksActivity.py
+++ b/GetIABooksActivity.py
@@ -484,10 +484,10 @@ class GetIABooksActivity(activity.Activity):
else:
self.add_default_image()
- def get_pixbuf_from_buffer(self, buffer):
+ def get_pixbuf_from_buffer(self, image_buffer):
"""Encoded Buffer To Pixbuf"""
pixbuf_loader = gtk.gdk.PixbufLoader()
- pixbuf_loader.write(buffer)
+ pixbuf_loader.write(image_buffer)
pixbuf_loader.close()
pixbuf = pixbuf_loader.get_pixbuf()
return pixbuf
@@ -502,53 +502,16 @@ class GetIABooksActivity(activity.Activity):
return ""
def download_image(self, url):
- path = os.path.join(self.get_activity_root(), 'instance',
- 'tmp%i' % time.time())
- self._getter = opds.ReadURLDownloader(url)
- self._getter.connect("finished", self._get_image_result_cb)
- self._getter.connect("progress", self._get_image_progress_cb)
- self._getter.connect("error", self._get_image_error_cb)
- _logger.debug("Starting download to %s...", path)
- try:
- self._getter.start(path)
- except:
- _logger.debug("Connection timed out for")
- self.add_default_image()
- self.progressbox.hide()
-
- self._download_image_content_length = \
- self._getter.get_content_length()
- self._download_image_content_type = self._getter.get_content_type()
-
- def _get_image_result_cb(self, getter, tempfile, suggested_name):
- self.process_downloaded_cover(tempfile, suggested_name)
-
- def process_downloaded_cover(self, tempfile, suggested_name):
- _logger.debug("Got Cover Image %s (%s)", tempfile, suggested_name)
- self._getter = None
- self.add_image(tempfile)
- self.exist_cover_image = True
- os.remove(tempfile)
-
- def _get_image_progress_cb(self, getter, bytes_downloaded):
- if self._download_image_content_length > 0:
- _logger.debug("Downloaded %u of %u bytes...", bytes_downloaded,
- self._download_image_content_length)
+ image_downloader = opds.ImageDownloader(self, url)
+ image_downloader.connect('updated', self.__image_updated_cb)
+
+ def __image_updated_cb(self, downloader, file_name):
+ if file_name is not None:
+ self.add_image(file_name)
+ self.exist_cover_image = True
+ os.remove(file_name)
else:
- _logger.debug("Downloaded %u bytes...",
- bytes_downloaded)
- while gtk.events_pending():
- gtk.main_iteration()
-
- def _get_image_error_cb(self, getter, err):
- self.listview.props.sensitive = True
- self._books_toolbar.enable_button(True)
- self.progressbox.hide()
- _logger.debug("Error getting image: %s", err)
- self.add_default_image()
- self._download_image_content_length = 0
- self._download_image_content_type = None
- self._getter = None
+ self.add_default_image()
def add_default_image(self):
file_path = os.path.join(activity.get_bundle_path(),