Helpviewer/Download/DownloadItem.py

changeset 2055
9165261f3e06
parent 1509
c0b5e693b0eb
child 2302
f29e9405c851
--- a/Helpviewer/Download/DownloadItem.py	Sat Sep 22 18:24:35 2012 +0200
+++ b/Helpviewer/Download/DownloadItem.py	Sat Sep 22 18:34:09 2012 +0200
@@ -37,6 +37,10 @@
     downloadFinished = pyqtSignal()
     progress = pyqtSignal(int, int)
     
+    Downloading = 0
+    DownloadSuccessful = 1
+    DownloadCancelled = 2
+    
     def __init__(self, reply=None, requestFilename=False, webPage=None,
                  download=False, parent=None, mainWindow=None):
         """
@@ -59,6 +63,8 @@
         
         self.progressBar.setMaximum(0)
         
+        self.__isFtpDownload = reply is not None and reply.url().scheme() == "ftp"
+        
         self.tryAgainButton.setIcon(UI.PixmapCache.getIcon("restart.png"))
         self.tryAgainButton.setEnabled(False)
         self.tryAgainButton.setVisible(False)
@@ -67,6 +73,13 @@
         self.openButton.setIcon(UI.PixmapCache.getIcon("open.png"))
         self.openButton.setEnabled(False)
         self.openButton.setVisible(False)
+        if self.__isFtpDownload:
+            self.stopButton.setEnabled(False)
+            self.stopButton.setVisible(False)
+            self.pauseButton.setEnabled(False)
+            self.pauseButton.setVisible(False)
+        
+        self.__state = DownloadItem.Downloading
         
         icon = self.style().standardIcon(QStyle.SP_FileIcon)
         self.fileIcon.setPixmap(icon.pixmap(48, 48))
@@ -301,10 +314,11 @@
         self.tryAgainButton.setVisible(False)
         self.openButton.setEnabled(False)
         self.openButton.setVisible(False)
-        self.stopButton.setEnabled(True)
-        self.stopButton.setVisible(True)
-        self.pauseButton.setEnabled(True)
-        self.pauseButton.setVisible(True)
+        if not self.__isFtpDownload:
+            self.stopButton.setEnabled(True)
+            self.stopButton.setVisible(True)
+            self.pauseButton.setEnabled(True)
+            self.pauseButton.setVisible(True)
         self.progressBar.setVisible(True)
         
         if self.__page:
@@ -317,6 +331,7 @@
         self.__output = QFile()
         self.__reply = reply
         self.__initialize(tryAgain=True)
+        self.__state = DownloadItem.Downloading
         self.statusChanged.emit()
     
     @pyqtSlot(bool)
@@ -345,15 +360,17 @@
         Public slot to stop the download.
         """
         self.setUpdatesEnabled(False)
-        self.stopButton.setEnabled(False)
-        self.stopButton.setVisible(False)
-        self.pauseButton.setEnabled(False)
-        self.pauseButton.setVisible(False)
+        if not self.__isFtpDownload:
+            self.stopButton.setEnabled(False)
+            self.stopButton.setVisible(False)
+            self.pauseButton.setEnabled(False)
+            self.pauseButton.setVisible(False)
         self.tryAgainButton.setEnabled(True)
         self.tryAgainButton.setVisible(True)
         self.openButton.setEnabled(False)
         self.openButton.setVisible(False)
         self.setUpdatesEnabled(True)
+        self.__state = DownloadItem.DownloadCancelled
         self.__reply.abort()
         self.downloadFinished.emit()
     
@@ -549,7 +566,7 @@
         
         @return flag indicating a download is in progress (boolean)
         """
-        return self.stopButton.isEnabled()
+        return self.__state == DownloadItem.Downloading
     
     def downloadedSuccessfully(self):
         """
@@ -557,7 +574,7 @@
         
         @return flag indicating a successful download (boolean)
         """
-        return self.stopButton.isHidden() and self.tryAgainButton.isHidden()
+        return self.__state == DownloadItem.DownloadSuccessful
     
     def downloadCanceled(self):
         """
@@ -565,7 +582,7 @@
         
         @return flag indicating a canceled download (boolean)
         """
-        return self.tryAgainButton.isEnabled()
+        return self.__state == DownloadItem.DownloadCancelled
     
     def __finished(self):
         """
@@ -578,10 +595,11 @@
         noError = self.__reply.error() == QNetworkReply.NoError
         
         self.progressBar.setVisible(False)
-        self.stopButton.setEnabled(False)
-        self.stopButton.setVisible(False)
-        self.pauseButton.setEnabled(False)
-        self.pauseButton.setVisible(False)
+        if not self.__isFtpDownload:
+            self.stopButton.setEnabled(False)
+            self.stopButton.setVisible(False)
+            self.pauseButton.setEnabled(False)
+            self.pauseButton.setVisible(False)
         self.openButton.setEnabled(noError)
         self.openButton.setVisible(noError)
         self.__output.close()
@@ -589,6 +607,7 @@
             QFile.remove(self.__fileName)
         self.__output.rename(self.__fileName)
         self.__updateInfoLabel()
+        self.__state = DownloadItem.DownloadSuccessful
         self.statusChanged.emit()
         self.downloadFinished.emit()
         
@@ -647,6 +666,7 @@
         self.__url = data[0]
         self.__fileName = data[1]
         self.__pageUrl = data[3]
+        self.__isFtpDownload = self.__url.scheme() == "ftp"
         
         self.filenameLabel.setText(QFileInfo(self.__fileName).fileName())
         self.infoLabel.setText(self.__fileName)
@@ -659,6 +679,10 @@
         self.openButton.setVisible(data[2])
         self.tryAgainButton.setEnabled(not data[2])
         self.tryAgainButton.setVisible(not data[2])
+        if data[2]:
+            self.__state = DownloadItem.DownloadSuccessful
+        else:
+            self.__state = DownloadItem.DownloadCancelled
         self.progressBar.setVisible(False)
     
     def getInfoData(self):

eric ide

mercurial