Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/cura/API
diff options
context:
space:
mode:
authorKostas Karmas <konskarm@gmail.com>2020-06-15 10:34:56 +0300
committerKostas Karmas <konskarm@gmail.com>2020-06-15 10:34:56 +0300
commitddf312eca5687a14f31382534cc156e3688a5e45 (patch)
treecc0f43f94809a3bc85daac9198fc79363fd1561a /cura/API
parente5a7ad2eca3923ddf3d169c1415a3b8823b1d301 (diff)
Refactor the connection status to be informed by the autosync
The autosync, which happens every 30 seconds, will now also inform the connection status when the get request succeeds or fails, which is an indicator of whether the internet is reachable. CURA-7492
Diffstat (limited to 'cura/API')
-rw-r--r--cura/API/ConnectionStatus.py52
1 files changed, 12 insertions, 40 deletions
diff --git a/cura/API/ConnectionStatus.py b/cura/API/ConnectionStatus.py
index 007f03fdd1..2e73639b45 100644
--- a/cura/API/ConnectionStatus.py
+++ b/cura/API/ConnectionStatus.py
@@ -1,22 +1,16 @@
from typing import Optional
-from PyQt5.QtCore import QObject, pyqtSignal, QTimer, pyqtProperty
-from PyQt5.QtNetwork import QNetworkReply
+from PyQt5.QtCore import QObject, pyqtSignal, pyqtProperty
-from UM.TaskManagement.HttpRequestManager import HttpRequestManager
-from cura.UltimakerCloud import UltimakerCloudConstants
+from UM.Logger import Logger
class ConnectionStatus(QObject):
"""Status info for some web services"""
- UPDATE_INTERVAL = 10.0 # seconds
- ULTIMAKER_CLOUD_STATUS_URL = UltimakerCloudConstants.CuraCloudAPIRoot + "/connect/v1/"
-
__instance = None # type: Optional[ConnectionStatus]
internetReachableChanged = pyqtSignal()
- umCloudReachableChanged = pyqtSignal()
@classmethod
def getInstance(cls, *args, **kwargs) -> "ConnectionStatus":
@@ -27,38 +21,16 @@ class ConnectionStatus(QObject):
def __init__(self, parent: Optional["QObject"] = None):
super().__init__(parent)
- self._http = HttpRequestManager.getInstance()
- self._statuses = {
- self.ULTIMAKER_CLOUD_STATUS_URL: True,
- "http://example.com": True
- }
-
- # Create a timer for automatic updates
- self._update_timer = QTimer()
- self._update_timer.setInterval(int(self.UPDATE_INTERVAL * 1000))
- # The timer is restarted automatically
- self._update_timer.setSingleShot(False)
- self._update_timer.timeout.connect(self._update)
- self._update_timer.start()
+ self._is_internet_reachable: bool = True
- @pyqtProperty(bool, notify=internetReachableChanged)
+ @pyqtProperty(bool, notify = internetReachableChanged)
def isInternetReachable(self) -> bool:
- # Is any of the test urls reachable?
- return any(self._statuses.values())
-
- def _update(self):
- for url in self._statuses.keys():
- self._http.get(
- url = url,
- callback = self._statusCallback,
- error_callback = self._statusCallback,
- timeout = 5
- )
-
- def _statusCallback(self, reply: QNetworkReply, error: QNetworkReply.NetworkError = None):
- url = reply.request().url().toString()
- prev_statuses = self._statuses.copy()
- self._statuses[url] = HttpRequestManager.replyIndicatesSuccess(reply, error)
-
- if any(self._statuses.values()) != any(prev_statuses.values()):
+ return self._is_internet_reachable
+
+ def setOnlineStatus(self, new_status: bool):
+ old_status = self._is_internet_reachable
+ self._is_internet_reachable = new_status
+ if old_status != new_status:
+ Logger.debug(
+ "Connection status has been set to {}".format("online" if self._is_internet_reachable else "offline"))
self.internetReachableChanged.emit()