Wed, 13 Oct 2010 22:47:44 +0200
Fixed a few issues with the download manager.
--- a/Helpviewer/Download/DownloadItem.py Mon Oct 11 14:57:26 2010 +0200 +++ b/Helpviewer/Download/DownloadItem.py Wed Oct 13 22:47:44 2010 +0200 @@ -316,7 +316,8 @@ self.on_stopButton_clicked() else: self.__startedSaving = True - if self.__finishedDownloading: + if (self.bytesTotal() == 0 and self.__reply.atEnd()) or \ + self.__finishedDownloading: self.__finished() def __networkError(self): @@ -364,7 +365,10 @@ @return total number of bytes (integer) """ - return self.__reply.header(QNetworkRequest.ContentLengthHeader) + total = self.__reply.header(QNetworkRequest.ContentLengthHeader) + if total is None: + total = 0 + return total def bytesReceived(self): """ @@ -383,6 +387,9 @@ if not self.downloading(): return -1.0 + if self.bytesTotal() == 0: + return -1.0 + timeRemaining = (self.bytesTotal() - self.bytesReceived()) / self.currentSpeed() # ETA should never be 0 @@ -409,7 +416,7 @@ if self.__reply.error() != QNetworkReply.NoError: return - bytesTotal = self.__reply.header(QNetworkRequest.ContentLengthHeader) + bytesTotal = self.bytesTotal() running = not self.downloadedSuccessfully() speed = self.currentSpeed() @@ -430,7 +437,7 @@ dataString(int(speed)), remaining) else: - if self.__bytesReceived == bytesTotal: + if self.__bytesReceived == bytesTotal or bytesTotal == 0: info = self.trUtf8("{0} downloaded")\ .format(dataString(self.__output.size())) else:
--- a/Helpviewer/Download/DownloadManager.py Mon Oct 11 14:57:26 2010 +0200 +++ b/Helpviewer/Download/DownloadManager.py Wed Oct 13 22:47:44 2010 +0200 @@ -44,7 +44,6 @@ self.__manager = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() self.__iconProvider = None - self.__removePolicy = DownloadManager.RemoveNever self.__downloads = [] self.__downloadDirectory = "" self.__loaded = False @@ -196,6 +195,7 @@ if remove: self.__model.removeRow(row) + self.__updateItemCount() self.cleanupButton.setEnabled( (len(self.__downloads) - self.activeDownloads()) > 0) @@ -206,7 +206,7 @@ @return remove policy (integer) """ - return self.__removePolicy + return Preferences.getHelp("DownloadManagerRemovePolicy") def setRemovePolicy(self, policy): """ @@ -219,11 +219,10 @@ assert policy in (DownloadManager.RemoveExit, DownloadManager.RemoveNever, DownloadManager.RemoveSuccessFullDownload) - if policy == self.__removePolicy: + if policy == self.removePolicy(): return - self.__removePolicy = policy - self.__saveTimer.changeOccurred() + Preferences.setHelp("DownloadManagerRemovePolicy", self.policy) def save(self): """ @@ -232,10 +231,9 @@ if not self.__loaded: return - Preferences.setHelp("DownloadManagerRemovePolicy", self.__removePolicy) Preferences.setHelp("DownloadManagerSize", self.size()) Preferences.setHelp("DownloadManagerPosition", self.pos()) - if self.__removePolicy == DownloadManager.RemoveExit: + if self.removePolicy() == DownloadManager.RemoveExit: return downloads = [] @@ -250,7 +248,6 @@ if self.__loaded: return - self.__removePolicy = Preferences.getHelp("DownloadManagerRemovePolicy") size = Preferences.getHelp("DownloadManagerSize") if size.isValid(): self.resize(size)