eric7/WebBrowser/Download/DownloadItem.py

branch
eric7
changeset 8556
766e1566cb74
parent 8553
10d31e5ce9e5
child 8563
3c6547443fb2
diff -r 844c2713bf44 -r 766e1566cb74 eric7/WebBrowser/Download/DownloadItem.py
--- a/eric7/WebBrowser/Download/DownloadItem.py	Sun Aug 29 17:48:26 2021 +0200
+++ b/eric7/WebBrowser/Download/DownloadItem.py	Sun Aug 29 17:48:44 2021 +0200
@@ -14,7 +14,7 @@
 )
 from PyQt6.QtGui import QPalette, QDesktopServices
 from PyQt6.QtWidgets import QWidget, QStyle, QDialog
-from PyQt6.QtWebEngineCore import QWebEngineDownloadItem
+from PyQt6.QtWebEngineCore import QWebEngineDownloadRequest
 
 from EricWidgets import EricFileDialog
 
@@ -39,17 +39,18 @@
     downloadFinished = pyqtSignal(bool)
     progress = pyqtSignal(int, int)
     
+    # TODO: convert this to an enum
     Downloading = 0
     DownloadSuccessful = 1
     DownloadCancelled = 2
     
-    def __init__(self, downloadItem=None, pageUrl=None, parent=None):
+    def __init__(self, downloadRequest=None, pageUrl=None, parent=None):
         """
         Constructor
         
-        @param downloadItem reference to the download object containing the
+        @param downloadRequest reference to the download object containing the
         download data.
-        @type QWebEngineDownloadItem
+        @type QWebEngineDownloadRequest
         @param pageUrl URL of the calling page
         @type QUrl
         @param parent reference to the parent widget
@@ -69,17 +70,13 @@
         self.openButton.setIcon(UI.PixmapCache.getIcon("open"))
         self.openButton.setEnabled(False)
         self.openButton.setVisible(False)
-        if not hasattr(QWebEngineDownloadItem, "pause"):
-            # pause/resume was defined in Qt 5.10.0 / PyQt 5.10.0
-            self.pauseButton.setEnabled(False)
-            self.pauseButton.setVisible(False)
         
         self.__state = DownloadItem.Downloading
         
         icon = self.style().standardIcon(QStyle.StandardPixmap.SP_FileIcon)
         self.fileIcon.setPixmap(icon.pixmap(48, 48))
         
-        self.__downloadItem = downloadItem
+        self.__downloadRequest = downloadRequest
         if pageUrl is None:
             self.__pageUrl = QUrl()
         else:
@@ -101,7 +98,7 @@
         """
         Private method to initialize the widget.
         """
-        if self.__downloadItem is None:
+        if self.__downloadRequest is None:
             return
         
         self.__finishedDownloading = False
@@ -112,9 +109,9 @@
         self.__downloadTime = QTime.currentTime()
         
         # attach to the download item object
-        self.__url = self.__downloadItem.url()
-        self.__downloadItem.downloadProgress.connect(self.__downloadProgress)
-        self.__downloadItem.finished.connect(self.__finished)
+        self.__url = self.__downloadRequest.url()
+        self.__downloadRequest.receivedBytesChanged.connect(self.__downloadProgress)
+        self.__downloadRequest.isFinishedChanged.connect(self.__finished)
         
         # reset info
         self.datetimeLabel.clear()
@@ -122,17 +119,17 @@
         self.infoLabel.clear()
         self.progressBar.setValue(0)
         if (
-            self.__downloadItem.state() ==
-            QWebEngineDownloadItem.DownloadState.DownloadRequested
+            self.__downloadRequest.state() ==
+            QWebEngineDownloadRequest.DownloadState.DownloadRequested
         ):
             self.__getFileName()
             if not self.__fileName:
-                self.__downloadItem.cancel()
+                self.__downloadRequest.cancel()
             else:
-                self.__downloadItem.setPath(self.__fileName)
-                self.__downloadItem.accept()
+                self.__downloadRequest.setDownloadFileName(self.__fileName)
+                self.__downloadRequest.accept()
         else:
-            fileName = self.__downloadItem.path()
+            fileName = self.__downloadRequest.downloadFileName()
             self.__setFileName(fileName)
     
     def __getFileName(self):
@@ -142,9 +139,7 @@
         if self.__gettingFileName:
             return
         
-        savePage = self.__downloadItem.type() == (
-            QWebEngineDownloadItem.DownloadType.SavePage
-        )
+        savePage = self.__downloadRequest.isSavePageDownload()
         
         documentLocation = QStandardPaths.writableLocation(
             QStandardPaths.StandardLocation.DocumentsLocation)
@@ -167,7 +162,7 @@
         
         if not savePage:
             from .DownloadAskActionDialog import DownloadAskActionDialog
-            url = self.__downloadItem.url()
+            url = self.__downloadRequest.url()
             mimetype = Utilities.MimeTypes.mimeType(originalFileName)
             dlg = DownloadAskActionDialog(
                 QFileInfo(originalFileName).fileName(),
@@ -266,7 +261,7 @@
         @param directory name of the directory to store the file into (string)
         @return proposed filename and original filename (string, string)
         """
-        path = self.__downloadItem.path()
+        path = self.__downloadRequest.downloadFileName()
         info = QFileInfo(path)
         baseName = info.completeBaseName()
         endName = info.suffix()
@@ -289,9 +284,9 @@
         @type bool
         """
         if checked:
-            self.__downloadItem.pause()
+            self.__downloadRequest.pause()
         else:
-            self.__downloadItem.resume()
+            self.__downloadRequest.resume()
     
     @pyqtSlot()
     def on_stopButton_clicked(self):
@@ -313,7 +308,7 @@
         self.pauseButton.setVisible(False)
         self.setUpdatesEnabled(True)
         self.__state = DownloadItem.DownloadCancelled
-        self.__downloadItem.cancel()
+        self.__downloadRequest.cancel()
         self.__setDateTime()
         self.downloadFinished.emit(False)
     
@@ -340,19 +335,17 @@
         url = QUrl.fromLocalFile(info.absolutePath())
         QDesktopServices.openUrl(url)
     
-    def __downloadProgress(self, bytesReceived, bytesTotal):
+    @pyqtSlot()
+    def __downloadProgress(self):
         """
-        Private method to show the download progress.
-        
-        @param bytesReceived number of bytes received (integer)
-        @param bytesTotal number of total bytes (integer)
+        Private slot to show the download progress.
         """
-        self.__bytesReceived = bytesReceived
-        self.__bytesTotal = bytesTotal
+        self.__bytesReceived = self.__downloadRequest.receivedBytes()
+        self.__bytesTotal = self.__downloadRequest.totalBytes()
         currentValue = 0
         totalValue = 0
-        if bytesTotal > 0:
-            currentValue = bytesReceived * 100 / bytesTotal
+        if self.__bytesTotal > 0:
+            currentValue = self.__bytesReceived * 100 / self.__bytesTotal
             totalValue = 100
         self.progressBar.setValue(currentValue)
         self.progressBar.setMaximum(totalValue)
@@ -376,7 +369,7 @@
         @return total number of bytes (integer)
         """
         if self.__bytesTotal == -1:
-            self.__bytesTotal = self.__downloadItem.totalBytes()
+            self.__bytesTotal = self.__downloadRequest.totalBytes()
         return self.__bytesTotal
     
     def bytesReceived(self):
@@ -423,7 +416,7 @@
         
         return (
             self.__bytesReceived * 1000.0 /
-            self.__downloadTime.msecsTo(QTime.currentTime)
+            self.__downloadTime.msecsTo(QTime.currentTime())
         )
     
     def __updateInfoLabel(self):
@@ -494,8 +487,8 @@
         """
         self.__finishedDownloading = True
         
-        noError = (self.__downloadItem.state() ==
-                   QWebEngineDownloadItem.DownloadState.DownloadCompleted)
+        noError = (self.__downloadRequest.state() ==
+                   QWebEngineDownloadRequest.DownloadState.DownloadCompleted)
         
         self.progressBar.setVisible(False)
         self.pauseButton.setEnabled(False)

eric ide

mercurial