Helpviewer/Download/DownloadItem.py

changeset 5928
a3809f75ca07
parent 5624
cdd346d8858b
child 6048
82ad8ec9548c
diff -r a865eaac5b16 -r a3809f75ca07 Helpviewer/Download/DownloadItem.py
--- a/Helpviewer/Download/DownloadItem.py	Mon Oct 23 19:42:32 2017 +0200
+++ b/Helpviewer/Download/DownloadItem.py	Tue Oct 24 19:09:09 2017 +0200
@@ -14,7 +14,7 @@
     pass
 
 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QTime, QFile, QFileInfo, \
-    QUrl, QIODevice, QCryptographicHash, PYQT_VERSION_STR
+    QUrl, QIODevice, QCryptographicHash, PYQT_VERSION_STR, QDateTime
 from PyQt5.QtGui import QPalette, QDesktopServices
 from PyQt5.QtWidgets import QWidget, QStyle, QDialog
 from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
@@ -108,6 +108,7 @@
         self.__gettingFileName = False
         self.__canceledFileSelect = False
         self.__autoOpen = False
+        self.__downloadedDateTime = QDateTime()
         
         self.__sha1Hash = QCryptographicHash(QCryptographicHash.Sha1)
         self.__md5Hash = QCryptographicHash(QCryptographicHash.Md5)
@@ -149,6 +150,8 @@
         self.__reply.finished.connect(self.__finished)
         
         # reset info
+        self.datetimeLabel.clear()
+        self.datetimeLabel.hide()
         self.infoLabel.clear()
         self.progressBar.setValue(0)
         self.__getFileName()
@@ -196,6 +199,7 @@
                     self.tr("Download canceled: {0}").format(
                         QFileInfo(defaultFileName).fileName()))
                 self.__canceledFileSelect = True
+                self.__setDateTime()
                 return
             
             if dlg.getAction() == "scan":
@@ -238,6 +242,7 @@
                     self.tr("Download canceled: {0}")
                         .format(QFileInfo(defaultFileName).fileName()))
                 self.__canceledFileSelect = True
+                self.__setDateTime()
                 return
         
         fileInfo = QFileInfo(fileName)
@@ -257,6 +262,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())
@@ -379,6 +385,7 @@
         self.setUpdatesEnabled(True)
         self.__state = DownloadItem.DownloadCancelled
         self.__reply.abort()
+        self.__setDateTime()
         self.downloadFinished.emit()
     
     @pyqtSlot()
@@ -625,8 +632,12 @@
         if QFile.exists(self.__fileName):
             QFile.remove(self.__fileName)
         self.__output.rename(self.__fileName)
+        self.__state = DownloadItem.DownloadSuccessful
         self.__updateInfoLabel()
-        self.__state = DownloadItem.DownloadSuccessful
+        self.__setDateTime()
+        
+        self.__adjustSize()
+        
         self.statusChanged.emit()
         self.downloadFinished.emit()
         
@@ -669,18 +680,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]
@@ -690,6 +706,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.pauseButton.setEnabled(False)
@@ -703,6 +724,8 @@
         else:
             self.__state = DownloadItem.DownloadCancelled
         self.progressBar.setVisible(False)
+        
+        self.__adjustSize()
     
     def getInfoData(self):
         """
@@ -719,3 +742,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