diff -r cc296ba99a3f -r 6f958d5765f4 WebBrowser/Download/DownloadItem.py --- a/WebBrowser/Download/DownloadItem.py Wed Nov 01 19:22:02 2017 +0100 +++ b/WebBrowser/Download/DownloadItem.py Fri Nov 03 12:10:16 2017 +0100 @@ -11,8 +11,8 @@ import os -from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QTime, QUrl, \ - QStandardPaths, QFileInfo +from PyQt5.QtCore import pyqtSlot, pyqtSignal, PYQT_VERSION, Qt, QTime, QUrl, \ + 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() == \ @@ -130,10 +133,10 @@ if self.__gettingFileName: return - if qVersionTuple() >= (5, 8, 0): + if qVersionTuple() >= (5, 8, 0) and PYQT_VERSION >= 0x50800: savePage = self.__downloadItem.type() == \ QWebEngineDownloadItem.SavePage - elif qVersionTuple() >= (5, 7, 0): + elif qVersionTuple() >= (5, 7, 0) and PYQT_VERSION >= 0x50700: savePage = self.__downloadItem.savePageFormat() != \ QWebEngineDownloadItem.UnknownSaveFormat else: @@ -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()