--- 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()