108 self.__downloadItem.finished.connect(self.__finished) |
108 self.__downloadItem.finished.connect(self.__finished) |
109 |
109 |
110 # reset info |
110 # reset info |
111 self.infoLabel.clear() |
111 self.infoLabel.clear() |
112 self.progressBar.setValue(0) |
112 self.progressBar.setValue(0) |
113 self.__getFileName() |
113 if self.__downloadItem.state() == \ |
114 if not self.__fileName: |
114 QWebEngineDownloadItem.DownloadRequested: |
115 self.__downloadItem.cancel() |
115 self.__getFileName() |
116 else: |
116 if not self.__fileName: |
117 self.__downloadItem.setPath(self.__fileName) |
117 self.__downloadItem.cancel() |
118 self.__downloadItem.accept() |
118 else: |
|
119 self.__downloadItem.setPath(self.__fileName) |
|
120 self.__downloadItem.accept() |
|
121 else: |
|
122 fileName = self.__downloadItem.path() |
|
123 self.__setFileName(fileName) |
119 |
124 |
120 def __getFileName(self): |
125 def __getFileName(self): |
121 """ |
126 """ |
122 Private method to get the file name to save to from the user. |
127 Private method to get the file name to save to from the user. |
123 """ |
128 """ |
124 if self.__gettingFileName: |
129 if self.__gettingFileName: |
125 return |
130 return |
126 |
131 |
127 # TODO: Qt 5.8 - add support for QWebEngineDownloadItem.DownloadType |
132 if qVersion() >= "5.8.0": |
128 if qVersion() >= "5.7.0": |
133 savePage = self.__downloadItem.type() == \ |
|
134 QWebEngineDownloadItem.SavePage |
|
135 elif qVersion() >= "5.7.0": |
129 savePage = self.__downloadItem.savePageFormat() != \ |
136 savePage = self.__downloadItem.savePageFormat() != \ |
130 QWebEngineDownloadItem.UnknownSaveFormat |
137 QWebEngineDownloadItem.UnknownSaveFormat |
131 else: |
138 else: |
132 savePage = self.__downloadItem.path().lower().endswith( |
139 savePage = self.__downloadItem.path().lower().endswith( |
133 (".mhtml", ".mht")) |
140 (".mhtml", ".mht")) |
195 self.tr("Save File"), |
202 self.tr("Save File"), |
196 defaultFileName, |
203 defaultFileName, |
197 "") |
204 "") |
198 self.__gettingFileName = False |
205 self.__gettingFileName = False |
199 else: |
206 else: |
200 # TODO: Qt 5.8 - maybe format selection is not neccessary |
207 # save page file name and format selection for Qt < 5.8.0 |
201 self.__autoOpen = False |
208 self.__autoOpen = False |
202 |
209 |
203 filterList = [ |
210 filterList = [ |
204 self.tr("Web Archive (*.mhtml *.mht)"), |
211 self.tr("Web Archive (*.mhtml *.mht)"), |
205 self.tr("HTML File (*.html *.htm)"), |
212 self.tr("HTML File (*.html *.htm)"), |
248 self.tr("Download canceled: {0}") |
255 self.tr("Download canceled: {0}") |
249 .format(QFileInfo(defaultFileName).fileName())) |
256 .format(QFileInfo(defaultFileName).fileName())) |
250 self.__canceledFileSelect = True |
257 self.__canceledFileSelect = True |
251 return |
258 return |
252 |
259 |
|
260 self.__setFileName(fileName) |
|
261 |
|
262 def __setFileName(self, fileName): |
|
263 """ |
|
264 Private method to set the file name to save the download into. |
|
265 |
|
266 @param fileName name of the file to save into |
|
267 @type str |
|
268 """ |
253 fileInfo = QFileInfo(fileName) |
269 fileInfo = QFileInfo(fileName) |
254 WebBrowserWindow.downloadManager()\ |
270 WebBrowserWindow.downloadManager()\ |
255 .setDownloadDirectory(fileInfo.absoluteDir().absolutePath()) |
271 .setDownloadDirectory(fileInfo.absoluteDir().absolutePath()) |
256 self.filenameLabel.setText(fileInfo.fileName()) |
272 self.filenameLabel.setText(fileInfo.fileName()) |
257 |
273 |
441 dataString(int(speed)), |
457 dataString(int(speed)), |
442 remaining) |
458 remaining) |
443 else: |
459 else: |
444 if self.__bytesReceived == bytesTotal or bytesTotal == -1: |
460 if self.__bytesReceived == bytesTotal or bytesTotal == -1: |
445 info = self.tr("{0} downloaded")\ |
461 info = self.tr("{0} downloaded")\ |
446 .format(dataString(self.__output.size())) |
462 .format(dataString(self.__bytesReceived)) |
447 else: |
463 else: |
448 info = self.tr("{0} of {1} - Stopped")\ |
464 info = self.tr("{0} of {1} - Stopped")\ |
449 .format(dataString(self.__bytesReceived), |
465 .format(dataString(self.__bytesReceived), |
450 dataString(bytesTotal)) |
466 dataString(bytesTotal)) |
451 self.infoLabel.setText(info) |
467 self.infoLabel.setText(info) |
486 self.progressBar.setVisible(False) |
502 self.progressBar.setVisible(False) |
487 self.stopButton.setEnabled(False) |
503 self.stopButton.setEnabled(False) |
488 self.stopButton.setVisible(False) |
504 self.stopButton.setVisible(False) |
489 self.openButton.setEnabled(noError) |
505 self.openButton.setEnabled(noError) |
490 self.openButton.setVisible(noError) |
506 self.openButton.setVisible(noError) |
|
507 self.__state = DownloadItem.DownloadSuccessful |
491 self.__updateInfoLabel() |
508 self.__updateInfoLabel() |
492 self.__state = DownloadItem.DownloadSuccessful |
|
493 self.statusChanged.emit() |
509 self.statusChanged.emit() |
494 self.downloadFinished.emit() |
510 self.downloadFinished.emit() |
495 |
511 |
496 if self.__autoOpen: |
512 if self.__autoOpen: |
497 self.__open() |
513 self.__open() |