diff options
-rwxr-xr-x | GetIABooksActivity.py | 11 | ||||
-rwxr-xr-x[-rw-r--r--] | opds.py | 14 |
2 files changed, 20 insertions, 5 deletions
diff --git a/GetIABooksActivity.py b/GetIABooksActivity.py index 0f11557..6c51fb3 100755 --- a/GetIABooksActivity.py +++ b/GetIABooksActivity.py @@ -455,6 +455,7 @@ class GetIABooksActivity(activity.Activity): bottom_hbox = gtk.HBox() if self.show_images: + self.__image_downloader = None self.image = gtk.Image() self.add_default_image() bottom_hbox.pack_start(self.image, False, False, 10) @@ -553,10 +554,9 @@ class GetIABooksActivity(activity.Activity): self.add_default_image() else: url_image = self.selected_book.get_image_url() + self.add_default_image() if url_image: self.download_image(url_image.values()[0]) - else: - self.add_default_image() def get_pixbuf_from_buffer(self, image_buffer): """Buffer To Pixbuf""" @@ -578,8 +578,10 @@ class GetIABooksActivity(activity.Activity): def download_image(self, url): self._inhibit_suspend() - image_downloader = opds.ImageDownloader(self, url) - image_downloader.connect('updated', self.__image_updated_cb) + if self.__image_downloader is not None: + self.__image_downloader.stop_download() + self.__image_downloader = opds.ImageDownloader(self, url) + self.__image_downloader.connect('updated', self.__image_updated_cb) def __image_updated_cb(self, downloader, file_name): if file_name is not None: @@ -588,6 +590,7 @@ class GetIABooksActivity(activity.Activity): os.remove(file_name) else: self.add_default_image() + self.__image_downloader = None self._allow_suspend() def add_default_image(self): @@ -501,9 +501,17 @@ class ImageDownloaderThread(threading.Thread): def _get_image_result_cb(self, getter, tempfile, suggested_name): _logger.debug("Got Cover Image %s (%s)", tempfile, suggested_name) self._getter = None - gobject.idle_add(self.obj.notify_updated, tempfile) + if not self.stopthread.is_set(): + gobject.idle_add(self.obj.notify_updated, tempfile) def _get_image_progress_cb(self, getter, bytes_downloaded): + if self.stopthread.is_set(): + try: + _logger.debug('The download %s was cancelled' % getter._fname) + getter.cancel() + except: + _logger.debug('Got an exception while trying ' + \ + 'to cancel download') if self._download_content_length > 0: _logger.debug("Downloaded %u of %u bytes...", bytes_downloaded, self._download_content_length) @@ -549,3 +557,7 @@ class ImageDownloader(gobject.GObject): def notify_updated(self, temp_file): self.emit('updated', temp_file) + + def stop_download(self): + for thread in self.threads: + thread.stop() |