UI/UserInterface.py

changeset 1217
f3d57bb18bdb
parent 1196
77da430b4080
child 1221
291dc0a51947
diff -r a65a4f31b051 -r f3d57bb18bdb UI/UserInterface.py
--- a/UI/UserInterface.py	Tue Aug 16 17:02:38 2011 +0200
+++ b/UI/UserInterface.py	Wed Aug 17 19:49:44 2011 +0200
@@ -5461,7 +5461,7 @@
         """
         self.performVersionCheck(manual=True, showVersions=True)
         
-    def performVersionCheck(self, manual=True,  alternative=0, showVersions=False):
+    def performVersionCheck(self, manual=True, alternative=0, showVersions=False):
         """
         Public method to check the internet for an eric5 update.
         
@@ -5527,17 +5527,34 @@
         reply = self.sender()
         if reply in self.__replies:
             self.__replies.remove(reply)
-        if reply.error() != QNetworkReply.NoError:
+        if reply.error() == QNetworkReply.NoError:
+            ioEncoding = Preferences.getSystem("IOEncoding")
+            versions = str(reply.readAll(), ioEncoding, 'replace').splitlines()
+        if reply.error() != QNetworkReply.NoError or versions[0].startswith("<"):
+            # network error or an error page
             self.httpAlternative += 1
             if self.httpAlternative >= len(self.__httpAlternatives):
                 self.__inVersionCheck = False
                 if self.__versionCheckProgress is not None:
                     self.__versionCheckProgress.reset()
                     self.__versionCheckProgress = None
-                E5MessageBox.warning(self,
-                    self.trUtf8("Error getting versions information"),
-                    self.trUtf8("""The versions information could not be downloaded."""
-                                """ Please go online and try again."""))
+                firstFailure = Preferences.Prefs.settings.value(
+                    "Updates/FirstFailedCheckDate", QDate.currentDate())
+                failedDuration = firstFailure.daysTo(QDate.currentDate())
+                Preferences.Prefs.settings.setValue(
+                    "Updates/FirstFailedCheckDate", firstFailure)
+                if self.manualUpdatesCheck:
+                    E5MessageBox.warning(self,
+                        self.trUtf8("Error getting versions information"),
+                        self.trUtf8("""The versions information could not be"""
+                                    """ downloaded."""
+                                    """ Please go online and try again."""))
+                elif failedDuration > 7:
+                    E5MessageBox.warning(self,
+                        self.trUtf8("Error getting versions information"),
+                        self.trUtf8("""The versions information could not be"""
+                                    """ downloaded for the last 7 days."""
+                                    """ Please go online and try again."""))
                 return
             else:
                 self.performVersionCheck(self.manualUpdatesCheck, self.httpAlternative,
@@ -5548,12 +5565,11 @@
         if self.__versionCheckProgress is not None:
             self.__versionCheckProgress.reset()
             self.__versionCheckProgress = None
-        ioEncoding = Preferences.getSystem("IOEncoding")
-        versions = str(reply.readAll(), ioEncoding, 'replace').splitlines()
         self.__updateVersionsUrls(versions)
         if self.showAvailableVersions:
             self.__showAvailableVersionInfos(versions)
         else:
+            Preferences.Prefs.settings.remove("Updates/FirstFailedCheckDate")
             Preferences.Prefs.settings.setValue(
                 "Updates/LastCheckDate", QDate.currentDate())
             self.__versionCheckResult(versions)

eric ide

mercurial