Helpviewer/DownloadDialog.py

changeset 256
04083f42042d
parent 168
3383117f894b
child 277
c1a90bd43161
child 278
c93823b96faa
diff -r eb0ffc3f12a2 -r 04083f42042d Helpviewer/DownloadDialog.py
--- a/Helpviewer/DownloadDialog.py	Sat May 15 16:13:24 2010 +0200
+++ b/Helpviewer/DownloadDialog.py	Sun May 16 18:21:41 2010 +0200
@@ -67,12 +67,12 @@
         self.__bytesReceived = 0
         self.__downloadTime = QTime()
         self.__output = QFile()
+    
+    def initialize(self):
+        """
+        Public method to (re)initialize the dialog.
         
-        self.__initialize()
-    
-    def __initialize(self):
-        """
-        Private method to (re)initialize the dialog.
+        @return flag indicating success (boolean)
         """
         if self.__reply is None:
             return
@@ -94,7 +94,8 @@
         # reset info
         self.infoLabel.clear()
         self.progressBar.setValue(0)
-        self.__getFileName()
+        if not self.__getFileName():
+            return False
         
         # start timer for the download estimation
         self.__downloadTime.start()
@@ -102,10 +103,15 @@
         if self.__reply.error() != QNetworkReply.NoError:
             self.__networkError()
             self.__finished()
+            return False
+        
+        return True
     
     def __getFileName(self):
         """
         Private method to get the filename to save to from the user.
+        
+        @return flag indicating success (boolean)
         """
         downloadDirectory = Preferences.getUI("DownloadPath")
         if not downloadDirectory:
@@ -130,7 +136,7 @@
             if res == QMessageBox.Cancel:
                 self.__stop()
                 self.close()
-                return
+                return False
             
             self.__autoOpen = res == QMessageBox.Open
             fileName = QDesktopServices.storageLocation(QDesktopServices.TempLocation) + \
@@ -146,16 +152,19 @@
                 self.__reply.close()
                 if not self.keepOpenCheckBox.isChecked():
                     self.close()
+                    return False
                 else:
                     self.filenameLabel.setText(self.trUtf8("Download canceled: {0}")\
                         .format(QFileInfo(defaultFileName).fileName()))
                     self.__stop()
-                return
+                    return True
         
         self.__output.setFileName(fileName)
         self.filenameLabel.setText(QFileInfo(self.__output.fileName()).fileName())
         if self.__requestFilename:
             self.__readyRead()
+        
+        return True
     
     def __saveFileName(self, directory):
         """
@@ -244,7 +253,7 @@
         if self.__output.exists():
             self.__output.remove()
         self.__reply = reply
-        self.__initialize()
+        self.initialize()
     
     def __readyRead(self):
         """
@@ -297,7 +306,7 @@
             self.__url = locationHeader
             self.__reply = Helpviewer.HelpWindow.HelpWindow.networkAccessManager().get(
                            QNetworkRequest(self.__url))
-            self.__initialize()
+            self.initialize()
     
     def __downloadProgress(self, received, total):
         """
@@ -375,12 +384,12 @@
         if size < 1024:
             unit = self.trUtf8("bytes")
         elif size < 1024 * 1024:
-            size //= 1024
+            size /= 1024
             unit = self.trUtf8("kB")
         else:
-            size //= 1024 * 1024
+            size /= 1024 * 1024
             unit = self.trUtf8("MB")
-        return "{0} {1}".format(size, unit)
+        return "{0:.1f} {1}".format(size, unit)
     
     def __downloading(self):
         """
@@ -416,4 +425,16 @@
         Protected method called when the dialog is closed.
         """
         self.__output.close()
+        
+        self.disconnect(self.__reply, SIGNAL("readyRead()"), self.__readyRead)
+        self.disconnect(self.__reply, SIGNAL("error(QNetworkReply::NetworkError)"), 
+                        self.__networkError)
+        self.disconnect(self.__reply, SIGNAL("downloadProgress(qint64, qint64)"), 
+                        self.__downloadProgress)
+        self.disconnect(self.__reply, SIGNAL("metaDataChanged()"), 
+                        self.__metaDataChanged)
+        self.disconnect(self.__reply, SIGNAL("finished()"), self.__finished)
+        self.__reply.close()
+        self.__reply.deleteLater()
+        
         self.done.emit()

eric ide

mercurial