7003 |
7003 |
7004 @param manual flag indicating an invocation via the menu (boolean) |
7004 @param manual flag indicating an invocation via the menu (boolean) |
7005 @param alternative index of server to download from (integer) |
7005 @param alternative index of server to download from (integer) |
7006 @param showVersions flag indicating the show versions mode (boolean) |
7006 @param showVersions flag indicating the show versions mode (boolean) |
7007 """ |
7007 """ |
7008 if self.isOnline(): |
7008 if not manual: |
7009 if not manual: |
7009 if VersionOnly.startswith("@@"): |
7010 if VersionOnly.startswith("@@"): |
7010 return |
|
7011 else: |
|
7012 period = Preferences.getUI("PerformVersionCheck") |
|
7013 if period == 0: |
7011 return |
7014 return |
7012 else: |
7015 elif period in [2, 3, 4]: |
7013 period = Preferences.getUI("PerformVersionCheck") |
7016 lastCheck = Preferences.Prefs.settings.value( |
7014 if period == 0: |
7017 "Updates/LastCheckDate", QDate(1970, 1, 1)) |
7015 return |
7018 if lastCheck.isValid(): |
7016 elif period in [2, 3, 4]: |
7019 now = QDate.currentDate() |
7017 lastCheck = Preferences.Prefs.settings.value( |
7020 if period == 2 and lastCheck.day() == now.day(): |
7018 "Updates/LastCheckDate", QDate(1970, 1, 1)) |
7021 # daily |
7019 if lastCheck.isValid(): |
7022 return |
7020 now = QDate.currentDate() |
7023 elif period == 3 and lastCheck.daysTo(now) < 7: |
7021 if period == 2 and lastCheck.day() == now.day(): |
7024 # weekly |
7022 # daily |
7025 return |
7023 return |
7026 elif period == 4 and (lastCheck.daysTo(now) < |
7024 elif period == 3 and lastCheck.daysTo(now) < 7: |
7027 lastCheck.daysInMonth()): |
7025 # weekly |
7028 # monthly |
7026 return |
7029 return |
7027 elif period == 4 and (lastCheck.daysTo(now) < |
7030 |
7028 lastCheck.daysInMonth()): |
7031 self.__inVersionCheck = True |
7029 # monthly |
7032 self.manualUpdatesCheck = manual |
7030 return |
7033 self.showAvailableVersions = showVersions |
7031 |
7034 self.httpAlternative = alternative |
7032 self.__inVersionCheck = True |
7035 url = QUrl(self.__httpAlternatives[alternative]) |
7033 self.manualUpdatesCheck = manual |
7036 self.__versionCheckCanceled = False |
7034 self.showAvailableVersions = showVersions |
7037 if manual: |
7035 self.httpAlternative = alternative |
7038 if self.__versionCheckProgress is None: |
7036 url = QUrl(self.__httpAlternatives[alternative]) |
7039 self.__versionCheckProgress = E5ProgressDialog( |
7037 self.__versionCheckCanceled = False |
7040 "", self.tr("&Cancel"), |
7038 if manual: |
7041 0, len(self.__httpAlternatives), |
7039 if self.__versionCheckProgress is None: |
7042 self.tr("%v/%m"), self) |
7040 self.__versionCheckProgress = E5ProgressDialog( |
7043 self.__versionCheckProgress.setWindowTitle( |
7041 "", self.tr("&Cancel"), |
7044 self.tr("Version Check")) |
7042 0, len(self.__httpAlternatives), |
7045 self.__versionCheckProgress.setMinimumDuration(0) |
7043 self.tr("%v/%m"), self) |
7046 self.__versionCheckProgress.canceled.connect( |
7044 self.__versionCheckProgress.setWindowTitle( |
7047 self.__versionsDownloadCanceled) |
7045 self.tr("Version Check")) |
7048 self.__versionCheckProgress.setLabelText( |
7046 self.__versionCheckProgress.setMinimumDuration(0) |
7049 self.tr("Trying host {0}").format(url.host())) |
7047 self.__versionCheckProgress.canceled.connect( |
7050 self.__versionCheckProgress.setValue(alternative) |
7048 self.__versionsDownloadCanceled) |
7051 request = QNetworkRequest(url) |
7049 self.__versionCheckProgress.setLabelText( |
7052 request.setAttribute(QNetworkRequest.CacheLoadControlAttribute, |
7050 self.tr("Trying host {0}").format(url.host())) |
7053 QNetworkRequest.AlwaysNetwork) |
7051 self.__versionCheckProgress.setValue(alternative) |
7054 reply = self.__networkManager.get(request) |
7052 request = QNetworkRequest(url) |
7055 reply.finished.connect(lambda: self.__versionsDownloadDone(reply)) |
7053 request.setAttribute(QNetworkRequest.CacheLoadControlAttribute, |
7056 self.__replies.append(reply) |
7054 QNetworkRequest.AlwaysNetwork) |
7057 |
7055 reply = self.__networkManager.get(request) |
|
7056 reply.finished.connect(lambda: self.__versionsDownloadDone(reply)) |
|
7057 self.__replies.append(reply) |
|
7058 else: |
|
7059 if manual: |
|
7060 E5MessageBox.warning( |
|
7061 self, |
|
7062 self.tr("Error getting versions information"), |
|
7063 self.tr("""The versions information cannot not be""" |
|
7064 """ downloaded because you are <b>offline</b>.""" |
|
7065 """ Please go online and try again.""")) |
|
7066 |
|
7067 @pyqtSlot() |
7058 @pyqtSlot() |
7068 def __versionsDownloadDone(self, reply): |
7059 def __versionsDownloadDone(self, reply): |
7069 """ |
7060 """ |
7070 Private slot called, after the versions file has been downloaded |
7061 Private slot called, after the versions file has been downloaded |
7071 from the internet. |
7062 from the internet. |