Fix downloading of qute:log. Closes #81.

This commit is contained in:
Florian Bruhin 2014-11-30 18:38:33 +01:00
parent d54f06ea91
commit 9d28c59a28

View File

@ -278,9 +278,6 @@ class DownloadItem(QObject):
# singleShot QTimer to emit them after they are connected.
if reply.error() != QNetworkReply.NoError:
QTimer.singleShot(0, lambda: self.error.emit(reply.errorString()))
if reply.isFinished():
self.successful = reply.error() == QNetworkReply.NoError
QTimer.singleShot(0, self.finished.emit)
def bg_color(self):
"""Background color to be shown."""
@ -389,6 +386,7 @@ class DownloadItem(QObject):
self.successful = self.reply.error() == QNetworkReply.NoError
self.reply.close()
self.reply.deleteLater()
self.reply = None
self._read_timer.stop()
self.finished.emit()
log.downloads.debug("Download finished")
@ -401,12 +399,12 @@ class DownloadItem(QObject):
doesn't mean the download (i.e. writing data to the disk) is finished
as well. Therefore, we can't close() the QNetworkReply in here yet.
"""
if self.reply is None:
return
self.stats.finish()
is_redirected = self._handle_redirect()
if is_redirected:
return
if self.reply is None:
return
log.downloads.debug("Reply finished, fileobj {}".format(self.fileobj))
if self.fileobj is not None:
# We can do a "delayed" write immediately to empty the buffer and
@ -416,8 +414,10 @@ class DownloadItem(QObject):
@pyqtSlot()
def on_ready_read(self):
"""Read available data and save file when ready to read."""
if self.fileobj is None:
# No filename has been set yet, so we don't empty the buffer.
if self.fileobj is None or self.reply is None:
# No filename has been set yet (so we don't empty the buffer) or we
# got a readyRead after the reply was finished (which happens on
# qute:log for example).
return
try:
self.fileobj.write(self.reply.readAll())