WebBrowser/Download/DownloadItem.py

changeset 5928
a3809f75ca07
parent 5920
e47dd106c3d6
child 5949
22657f04f332
child 6048
82ad8ec9548c
--- a/WebBrowser/Download/DownloadItem.py	Mon Oct 23 19:42:32 2017 +0200
+++ b/WebBrowser/Download/DownloadItem.py	Tue Oct 24 19:09:09 2017 +0200
@@ -12,7 +12,7 @@
 import os
 
 from PyQt5.QtCore import pyqtSlot, pyqtSignal, PYQT_VERSION, Qt, QTime, QUrl, \
-    QStandardPaths, QFileInfo
+    QStandardPaths, QFileInfo, QDateTime
 from PyQt5.QtGui import QPalette, QDesktopServices
 from PyQt5.QtWidgets import QWidget, QStyle, QDialog
 from PyQt5.QtWebEngineWidgets import QWebEngineDownloadItem
@@ -86,6 +86,7 @@
         self.__gettingFileName = False
         self.__canceledFileSelect = False
         self.__autoOpen = False
+        self.__downloadedDateTime = QDateTime()
         
         self.__initialize()
     
@@ -109,6 +110,8 @@
         self.__downloadItem.finished.connect(self.__finished)
         
         # reset info
+        self.datetimeLabel.clear()
+        self.datetimeLabel.hide()
         self.infoLabel.clear()
         self.progressBar.setValue(0)
         if self.__downloadItem.state() == \
@@ -176,6 +179,7 @@
                     self.tr("Download canceled: {0}").format(
                         QFileInfo(defaultFileName).fileName()))
                 self.__canceledFileSelect = True
+                self.__setDateTime()
                 return
             
             if dlg.getAction() == "scan":
@@ -256,6 +260,7 @@
                 self.tr("Download canceled: {0}")
                     .format(QFileInfo(defaultFileName).fileName()))
             self.__canceledFileSelect = True
+            self.__setDateTime()
             return
         
         self.__setFileName(fileName)
@@ -283,6 +288,7 @@
                 self.infoLabel.setText(self.tr(
                     "Download directory ({0}) couldn't be created.")
                     .format(saveDirPath.absolutePath()))
+                self.__setDateTime()
                 return
         
         self.filenameLabel.setText(QFileInfo(self.__fileName).fileName())
@@ -335,6 +341,7 @@
         self.setUpdatesEnabled(True)
         self.__state = DownloadItem.DownloadCancelled
         self.__downloadItem.cancel()
+        self.__setDateTime()
         self.downloadFinished.emit()
     
     @pyqtSlot()
@@ -507,6 +514,10 @@
         self.openButton.setVisible(noError)
         self.__state = DownloadItem.DownloadSuccessful
         self.__updateInfoLabel()
+        self.__setDateTime()
+        
+        self.__adjustSize()
+        
         self.statusChanged.emit()
         self.downloadFinished.emit()
         
@@ -549,18 +560,23 @@
         """
         Public method to get the relevant download data.
         
-        @return tuple of URL, save location, flag and the
-            URL of the related web page (QUrl, string, boolean,QUrl)
+        @return tuple of URL, save location, flag, the
+            URL of the related web page and the date and time
+            of the download
+        @rtype tuple of (QUrl, str, bool, QUrl, QDateTime)
         """
         return (self.__url, QFileInfo(self.__fileName).filePath(),
-                self.downloadedSuccessfully(), self.__pageUrl)
+                self.downloadedSuccessfully(), self.__pageUrl,
+                self.__downloadedDateTime)
     
     def setData(self, data):
         """
         Public method to set the relevant download data.
         
-        @param data tuple of URL, save location, flag and the
-            URL of the related web page (QUrl, string, boolean, QUrl)
+        @param data tuple of URL, save location, flag, the
+            URL of the related web page and the date and time
+            of the download
+        @type QUrl, str, bool, QUrl, QDateTime
         """
         self.__url = data[0]
         self.__fileName = data[1]
@@ -569,6 +585,11 @@
         self.filenameLabel.setText(QFileInfo(self.__fileName).fileName())
         self.infoLabel.setText(self.__fileName)
         
+        if len(data) == 5:
+            self.__setDateTime(data[4])
+        else:
+            self.__setDateTime(QDateTime())
+        
         self.stopButton.setEnabled(False)
         self.stopButton.setVisible(False)
         self.openButton.setEnabled(data[2])
@@ -578,6 +599,8 @@
         else:
             self.__state = DownloadItem.DownloadCancelled
         self.progressBar.setVisible(False)
+        
+        self.__adjustSize()
     
     def getInfoData(self):
         """
@@ -594,3 +617,31 @@
         @return URL of the download page (QUrl)
         """
         return self.__pageUrl
+    
+    def __adjustSize(self):
+        """
+        Private method to adjust the size of the download item.
+        """
+        self.ensurePolished()
+        
+        msh = self.minimumSizeHint()
+        self.resize(max(self.width(), msh.width()), msh.height())
+    
+    def __setDateTime(self, dateTime=None):
+        """
+        Private method to set the download date and time.
+        
+        @param dateTime date and time to be set
+        @type QDateTime
+        """
+        if dateTime is None:
+            self.__downloadedDateTime = QDateTime.currentDateTime()
+        else:
+            self.__downloadedDateTime = dateTime
+        if self.__downloadedDateTime.isValid():
+            labelText = self.__downloadedDateTime.toString("yyyy-MM-dd hh:mm")
+            self.datetimeLabel.setText(labelText)
+            self.datetimeLabel.show()
+        else:
+            self.datetimeLabel.clear()
+            self.datetimeLabel.hide()

eric ide

mercurial