Helpviewer/Download/DownloadItem.py

changeset 5928
a3809f75ca07
parent 5624
cdd346d8858b
child 6048
82ad8ec9548c
equal deleted inserted replaced
5927:a865eaac5b16 5928:a3809f75ca07
12 str = unicode 12 str = unicode
13 except NameError: 13 except NameError:
14 pass 14 pass
15 15
16 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QTime, QFile, QFileInfo, \ 16 from PyQt5.QtCore import pyqtSlot, pyqtSignal, Qt, QTime, QFile, QFileInfo, \
17 QUrl, QIODevice, QCryptographicHash, PYQT_VERSION_STR 17 QUrl, QIODevice, QCryptographicHash, PYQT_VERSION_STR, QDateTime
18 from PyQt5.QtGui import QPalette, QDesktopServices 18 from PyQt5.QtGui import QPalette, QDesktopServices
19 from PyQt5.QtWidgets import QWidget, QStyle, QDialog 19 from PyQt5.QtWidgets import QWidget, QStyle, QDialog
20 from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply 20 from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply
21 21
22 from E5Gui import E5FileDialog 22 from E5Gui import E5FileDialog
106 self.__startedSaving = False 106 self.__startedSaving = False
107 self.__finishedDownloading = False 107 self.__finishedDownloading = False
108 self.__gettingFileName = False 108 self.__gettingFileName = False
109 self.__canceledFileSelect = False 109 self.__canceledFileSelect = False
110 self.__autoOpen = False 110 self.__autoOpen = False
111 self.__downloadedDateTime = QDateTime()
111 112
112 self.__sha1Hash = QCryptographicHash(QCryptographicHash.Sha1) 113 self.__sha1Hash = QCryptographicHash(QCryptographicHash.Sha1)
113 self.__md5Hash = QCryptographicHash(QCryptographicHash.Md5) 114 self.__md5Hash = QCryptographicHash(QCryptographicHash.Md5)
114 115
115 if not requestFilename: 116 if not requestFilename:
147 self.__reply.downloadProgress.connect(self.__downloadProgress) 148 self.__reply.downloadProgress.connect(self.__downloadProgress)
148 self.__reply.metaDataChanged.connect(self.__metaDataChanged) 149 self.__reply.metaDataChanged.connect(self.__metaDataChanged)
149 self.__reply.finished.connect(self.__finished) 150 self.__reply.finished.connect(self.__finished)
150 151
151 # reset info 152 # reset info
153 self.datetimeLabel.clear()
154 self.datetimeLabel.hide()
152 self.infoLabel.clear() 155 self.infoLabel.clear()
153 self.progressBar.setValue(0) 156 self.progressBar.setValue(0)
154 self.__getFileName() 157 self.__getFileName()
155 158
156 if self.__reply.error() != QNetworkReply.NoError: 159 if self.__reply.error() != QNetworkReply.NoError:
194 self.on_stopButton_clicked() 197 self.on_stopButton_clicked()
195 self.filenameLabel.setText( 198 self.filenameLabel.setText(
196 self.tr("Download canceled: {0}").format( 199 self.tr("Download canceled: {0}").format(
197 QFileInfo(defaultFileName).fileName())) 200 QFileInfo(defaultFileName).fileName()))
198 self.__canceledFileSelect = True 201 self.__canceledFileSelect = True
202 self.__setDateTime()
199 return 203 return
200 204
201 if dlg.getAction() == "scan": 205 if dlg.getAction() == "scan":
202 self.__mainWindow.requestVirusTotalScan(url) 206 self.__mainWindow.requestVirusTotalScan(url)
203 207
236 self.on_stopButton_clicked() 240 self.on_stopButton_clicked()
237 self.filenameLabel.setText( 241 self.filenameLabel.setText(
238 self.tr("Download canceled: {0}") 242 self.tr("Download canceled: {0}")
239 .format(QFileInfo(defaultFileName).fileName())) 243 .format(QFileInfo(defaultFileName).fileName()))
240 self.__canceledFileSelect = True 244 self.__canceledFileSelect = True
245 self.__setDateTime()
241 return 246 return
242 247
243 fileInfo = QFileInfo(fileName) 248 fileInfo = QFileInfo(fileName)
244 Helpviewer.HelpWindow.HelpWindow.downloadManager()\ 249 Helpviewer.HelpWindow.HelpWindow.downloadManager()\
245 .setDownloadDirectory(fileInfo.absoluteDir().absolutePath()) 250 .setDownloadDirectory(fileInfo.absoluteDir().absolutePath())
255 self.progressBar.setVisible(False) 260 self.progressBar.setVisible(False)
256 self.on_stopButton_clicked() 261 self.on_stopButton_clicked()
257 self.infoLabel.setText(self.tr( 262 self.infoLabel.setText(self.tr(
258 "Download directory ({0}) couldn't be created.") 263 "Download directory ({0}) couldn't be created.")
259 .format(saveDirPath.absolutePath())) 264 .format(saveDirPath.absolutePath()))
265 self.__setDateTime()
260 return 266 return
261 267
262 self.filenameLabel.setText(QFileInfo(self.__fileName).fileName()) 268 self.filenameLabel.setText(QFileInfo(self.__fileName).fileName())
263 if self.__requestFilename: 269 if self.__requestFilename:
264 self.__readyRead() 270 self.__readyRead()
377 self.openButton.setEnabled(False) 383 self.openButton.setEnabled(False)
378 self.openButton.setVisible(False) 384 self.openButton.setVisible(False)
379 self.setUpdatesEnabled(True) 385 self.setUpdatesEnabled(True)
380 self.__state = DownloadItem.DownloadCancelled 386 self.__state = DownloadItem.DownloadCancelled
381 self.__reply.abort() 387 self.__reply.abort()
388 self.__setDateTime()
382 self.downloadFinished.emit() 389 self.downloadFinished.emit()
383 390
384 @pyqtSlot() 391 @pyqtSlot()
385 def on_openButton_clicked(self): 392 def on_openButton_clicked(self):
386 """ 393 """
623 self.openButton.setVisible(noError) 630 self.openButton.setVisible(noError)
624 self.__output.close() 631 self.__output.close()
625 if QFile.exists(self.__fileName): 632 if QFile.exists(self.__fileName):
626 QFile.remove(self.__fileName) 633 QFile.remove(self.__fileName)
627 self.__output.rename(self.__fileName) 634 self.__output.rename(self.__fileName)
635 self.__state = DownloadItem.DownloadSuccessful
628 self.__updateInfoLabel() 636 self.__updateInfoLabel()
629 self.__state = DownloadItem.DownloadSuccessful 637 self.__setDateTime()
638
639 self.__adjustSize()
640
630 self.statusChanged.emit() 641 self.statusChanged.emit()
631 self.downloadFinished.emit() 642 self.downloadFinished.emit()
632 643
633 if self.__autoOpen: 644 if self.__autoOpen:
634 self.__open() 645 self.__open()
667 678
668 def getData(self): 679 def getData(self):
669 """ 680 """
670 Public method to get the relevant download data. 681 Public method to get the relevant download data.
671 682
672 @return tuple of URL, save location, flag and the 683 @return tuple of URL, save location, flag, the
673 URL of the related web page (QUrl, string, boolean,QUrl) 684 URL of the related web page and the date and time
685 of the download
686 @rtype tuple of (QUrl, str, bool, QUrl, QDateTime)
674 """ 687 """
675 return (self.__url, QFileInfo(self.__fileName).filePath(), 688 return (self.__url, QFileInfo(self.__fileName).filePath(),
676 self.downloadedSuccessfully(), self.__pageUrl) 689 self.downloadedSuccessfully(), self.__pageUrl,
690 self.__downloadedDateTime)
677 691
678 def setData(self, data): 692 def setData(self, data):
679 """ 693 """
680 Public method to set the relevant download data. 694 Public method to set the relevant download data.
681 695
682 @param data tuple of URL, save location, flag and the 696 @param data tuple of URL, save location, flag, the
683 URL of the related web page (QUrl, string, boolean, QUrl) 697 URL of the related web page and the date and time
698 of the download
699 @type QUrl, str, bool, QUrl, QDateTime
684 """ 700 """
685 self.__url = data[0] 701 self.__url = data[0]
686 self.__fileName = data[1] 702 self.__fileName = data[1]
687 self.__pageUrl = data[3] 703 self.__pageUrl = data[3]
688 self.__isFtpDownload = self.__url.scheme() == "ftp" 704 self.__isFtpDownload = self.__url.scheme() == "ftp"
689 705
690 self.filenameLabel.setText(QFileInfo(self.__fileName).fileName()) 706 self.filenameLabel.setText(QFileInfo(self.__fileName).fileName())
691 self.infoLabel.setText(self.__fileName) 707 self.infoLabel.setText(self.__fileName)
708
709 if len(data) == 5:
710 self.__setDateTime(data[4])
711 else:
712 self.__setDateTime(QDateTime())
692 713
693 self.stopButton.setEnabled(False) 714 self.stopButton.setEnabled(False)
694 self.stopButton.setVisible(False) 715 self.stopButton.setVisible(False)
695 self.pauseButton.setEnabled(False) 716 self.pauseButton.setEnabled(False)
696 self.pauseButton.setVisible(False) 717 self.pauseButton.setVisible(False)
701 if data[2]: 722 if data[2]:
702 self.__state = DownloadItem.DownloadSuccessful 723 self.__state = DownloadItem.DownloadSuccessful
703 else: 724 else:
704 self.__state = DownloadItem.DownloadCancelled 725 self.__state = DownloadItem.DownloadCancelled
705 self.progressBar.setVisible(False) 726 self.progressBar.setVisible(False)
727
728 self.__adjustSize()
706 729
707 def getInfoData(self): 730 def getInfoData(self):
708 """ 731 """
709 Public method to get the text of the info label. 732 Public method to get the text of the info label.
710 733
717 Public method to get the URL of the download page. 740 Public method to get the URL of the download page.
718 741
719 @return URL of the download page (QUrl) 742 @return URL of the download page (QUrl)
720 """ 743 """
721 return self.__pageUrl 744 return self.__pageUrl
745
746 def __adjustSize(self):
747 """
748 Private method to adjust the size of the download item.
749 """
750 self.ensurePolished()
751
752 msh = self.minimumSizeHint()
753 self.resize(max(self.width(), msh.width()), msh.height())
754
755 def __setDateTime(self, dateTime=None):
756 """
757 Private method to set the download date and time.
758
759 @param dateTime date and time to be set
760 @type QDateTime
761 """
762 if dateTime is None:
763 self.__downloadedDateTime = QDateTime.currentDateTime()
764 else:
765 self.__downloadedDateTime = dateTime
766 if self.__downloadedDateTime.isValid():
767 labelText = self.__downloadedDateTime.toString("yyyy-MM-dd hh:mm")
768 self.datetimeLabel.setText(labelText)
769 self.datetimeLabel.show()
770 else:
771 self.datetimeLabel.clear()
772 self.datetimeLabel.hide()

eric ide

mercurial