parent
bfc114ae35
commit
6a16875f50
@ -209,8 +209,8 @@ class DownloadItem(QObject):
|
|||||||
redirected: Signal emitted when a download was redirected.
|
redirected: Signal emitted when a download was redirected.
|
||||||
arg 0: The new QNetworkRequest.
|
arg 0: The new QNetworkRequest.
|
||||||
arg 1: The old QNetworkReply.
|
arg 1: The old QNetworkReply.
|
||||||
do_retry: Emitted when a request should be re-tried.
|
do_retry: Emitted when a download is retried.
|
||||||
arg: The QNetworkRequest to download.
|
arg 0: The new DownloadItem
|
||||||
"""
|
"""
|
||||||
|
|
||||||
MAX_REDIRECTS = 10
|
MAX_REDIRECTS = 10
|
||||||
@ -219,7 +219,7 @@ class DownloadItem(QObject):
|
|||||||
error = pyqtSignal(str)
|
error = pyqtSignal(str)
|
||||||
cancelled = pyqtSignal()
|
cancelled = pyqtSignal()
|
||||||
redirected = pyqtSignal(QNetworkRequest, QNetworkReply)
|
redirected = pyqtSignal(QNetworkRequest, QNetworkReply)
|
||||||
do_retry = pyqtSignal('QNetworkReply')
|
do_retry = pyqtSignal(object) # DownloadItem
|
||||||
|
|
||||||
def __init__(self, reply, win_id, parent=None):
|
def __init__(self, reply, win_id, parent=None):
|
||||||
"""Constructor.
|
"""Constructor.
|
||||||
@ -401,9 +401,13 @@ class DownloadItem(QObject):
|
|||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def retry(self):
|
def retry(self):
|
||||||
"""Retry a failed download."""
|
"""Retry a failed download."""
|
||||||
self.cancel()
|
download_manager = objreg.get('download-manager', scope='window',
|
||||||
|
window=self._win_id)
|
||||||
new_reply = self.retry_info.manager.get(self.retry_info.request)
|
new_reply = self.retry_info.manager.get(self.retry_info.request)
|
||||||
self.do_retry.emit(new_reply)
|
new_download = download_manager.fetch(
|
||||||
|
new_reply, suggested_filename=self.basename)
|
||||||
|
self.do_retry.emit(new_download)
|
||||||
|
self.cancel()
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def open_file(self):
|
def open_file(self):
|
||||||
@ -751,7 +755,6 @@ class DownloadManager(QAbstractListModel):
|
|||||||
download.error.connect(self.on_error)
|
download.error.connect(self.on_error)
|
||||||
download.redirected.connect(
|
download.redirected.connect(
|
||||||
functools.partial(self.on_redirect, download))
|
functools.partial(self.on_redirect, download))
|
||||||
download.do_retry.connect(self.fetch)
|
|
||||||
download.basename = suggested_filename
|
download.basename = suggested_filename
|
||||||
idx = len(self.downloads) + 1
|
idx = len(self.downloads) + 1
|
||||||
download.index = idx
|
download.index = idx
|
||||||
@ -898,10 +901,7 @@ class DownloadManager(QAbstractListModel):
|
|||||||
failed_download = (download.done and (not download.successful) and
|
failed_download = (download.done and (not download.successful) and
|
||||||
download.retry_info.manager is nam)
|
download.retry_info.manager is nam)
|
||||||
if running_download or failed_download:
|
if running_download or failed_download:
|
||||||
log.downloads.debug("Found running/failed downloads, "
|
nam.adopt_download(download)
|
||||||
"adopting the NAM.")
|
|
||||||
nam.adopted_downloads += 1
|
|
||||||
download.destroyed.connect(nam.on_adopted_download_destroyed)
|
|
||||||
return nam.adopted_downloads
|
return nam.adopted_downloads
|
||||||
|
|
||||||
def can_clear(self):
|
def can_clear(self):
|
||||||
|
@ -237,6 +237,15 @@ class NetworkManager(QNetworkAccessManager):
|
|||||||
if self.adopted_downloads == 0:
|
if self.adopted_downloads == 0:
|
||||||
self.deleteLater()
|
self.deleteLater()
|
||||||
|
|
||||||
|
@pyqtSlot(object) # DownloadItem
|
||||||
|
def adopt_download(self, download):
|
||||||
|
"""Adopt a new DownloadItem."""
|
||||||
|
self.adopted_downloads += 1
|
||||||
|
log.downloads.debug("Adopted download, {} adopted.".format(
|
||||||
|
self.adopted_downloads))
|
||||||
|
download.destroyed.connect(self.on_adopted_download_destroyed)
|
||||||
|
download.do_retry.connect(self.adopt_download)
|
||||||
|
|
||||||
# WORKAROUND for:
|
# WORKAROUND for:
|
||||||
# http://www.riverbankcomputing.com/pipermail/pyqt/2014-September/034806.html
|
# http://www.riverbankcomputing.com/pipermail/pyqt/2014-September/034806.html
|
||||||
#
|
#
|
||||||
|
Loading…
Reference in New Issue
Block a user