mirror of
https://github.com/Ultimaker/Cura.git
synced 2025-07-12 09:17:50 -06:00
Add timeout for manual IP requests
CURA-6483
This commit is contained in:
parent
9868dee474
commit
b22073e170
2 changed files with 24 additions and 1 deletions
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
from typing import Callable, Dict, List, Optional, TYPE_CHECKING
|
from typing import Callable, Dict, List, Optional, TYPE_CHECKING
|
||||||
|
|
||||||
from PyQt5.QtCore import pyqtSlot, pyqtProperty, pyqtSignal, QObject
|
from PyQt5.QtCore import pyqtSlot, pyqtProperty, pyqtSignal, QObject, QTimer
|
||||||
|
|
||||||
from UM.i18n import i18nCatalog
|
from UM.i18n import i18nCatalog
|
||||||
from UM.Logger import Logger
|
from UM.Logger import Logger
|
||||||
|
@ -109,6 +109,12 @@ class DiscoveredPrintersModel(QObject):
|
||||||
self._plugin_for_manual_device = None # type: Optional[OutputDevicePlugin]
|
self._plugin_for_manual_device = None # type: Optional[OutputDevicePlugin]
|
||||||
self._manual_device_address = ""
|
self._manual_device_address = ""
|
||||||
|
|
||||||
|
self._manual_device_request_timeout_in_seconds = 5 # timeout for adding a manual device in seconds
|
||||||
|
self._manual_device_request_timer = QTimer()
|
||||||
|
self._manual_device_request_timer.setInterval(self._manual_device_request_timeout_in_seconds * 1000)
|
||||||
|
self._manual_device_request_timer.setSingleShot(True)
|
||||||
|
self._manual_device_request_timer.timeout.connect(self._onManualRequestTimeout)
|
||||||
|
|
||||||
discoveredPrintersChanged = pyqtSignal()
|
discoveredPrintersChanged = pyqtSignal()
|
||||||
|
|
||||||
@pyqtSlot(str)
|
@pyqtSlot(str)
|
||||||
|
@ -137,10 +143,13 @@ class DiscoveredPrintersModel(QObject):
|
||||||
self._plugin_for_manual_device = plugin
|
self._plugin_for_manual_device = plugin
|
||||||
self._plugin_for_manual_device.addManualDevice(address, callback = self._onManualDeviceRequestFinished)
|
self._plugin_for_manual_device.addManualDevice(address, callback = self._onManualDeviceRequestFinished)
|
||||||
self._manual_device_address = address
|
self._manual_device_address = address
|
||||||
|
self._manual_device_request_timer.start()
|
||||||
self.hasManualDeviceRequestInProgressChanged.emit()
|
self.hasManualDeviceRequestInProgressChanged.emit()
|
||||||
|
|
||||||
@pyqtSlot()
|
@pyqtSlot()
|
||||||
def cancelCurrentManualDeviceRequest(self) -> None:
|
def cancelCurrentManualDeviceRequest(self) -> None:
|
||||||
|
self._manual_device_request_timer.stop()
|
||||||
|
|
||||||
if self._manual_device_address:
|
if self._manual_device_address:
|
||||||
if self._plugin_for_manual_device is not None:
|
if self._plugin_for_manual_device is not None:
|
||||||
self._plugin_for_manual_device.removeManualDevice(self._manual_device_address, address = self._manual_device_address)
|
self._plugin_for_manual_device.removeManualDevice(self._manual_device_address, address = self._manual_device_address)
|
||||||
|
@ -149,6 +158,10 @@ class DiscoveredPrintersModel(QObject):
|
||||||
self.hasManualDeviceRequestInProgressChanged.emit()
|
self.hasManualDeviceRequestInProgressChanged.emit()
|
||||||
self.manualDeviceRequestFinished.emit(False)
|
self.manualDeviceRequestFinished.emit(False)
|
||||||
|
|
||||||
|
def _onManualRequestTimeout(self) -> None:
|
||||||
|
Logger.log("w", "Manual printer [%s] request timed out. Cancel the current request.", self._manual_device_address)
|
||||||
|
self.cancelCurrentManualDeviceRequest()
|
||||||
|
|
||||||
hasManualDeviceRequestInProgressChanged = pyqtSignal()
|
hasManualDeviceRequestInProgressChanged = pyqtSignal()
|
||||||
|
|
||||||
@pyqtProperty(bool, notify = hasManualDeviceRequestInProgressChanged)
|
@pyqtProperty(bool, notify = hasManualDeviceRequestInProgressChanged)
|
||||||
|
@ -158,6 +171,7 @@ class DiscoveredPrintersModel(QObject):
|
||||||
manualDeviceRequestFinished = pyqtSignal(bool, arguments = ["success"])
|
manualDeviceRequestFinished = pyqtSignal(bool, arguments = ["success"])
|
||||||
|
|
||||||
def _onManualDeviceRequestFinished(self, success: bool, address: str) -> None:
|
def _onManualDeviceRequestFinished(self, success: bool, address: str) -> None:
|
||||||
|
self._manual_device_request_timer.stop()
|
||||||
if address == self._manual_device_address:
|
if address == self._manual_device_address:
|
||||||
self._manual_device_address = ""
|
self._manual_device_address = ""
|
||||||
self.hasManualDeviceRequestInProgressChanged.emit()
|
self.hasManualDeviceRequestInProgressChanged.emit()
|
||||||
|
|
|
@ -26,6 +26,15 @@ Item
|
||||||
property var discoveredPrinter: null
|
property var discoveredPrinter: null
|
||||||
property var isPrinterDiscovered: discoveredPrinter != null
|
property var isPrinterDiscovered: discoveredPrinter != null
|
||||||
|
|
||||||
|
// Make sure to cancel the current request when this page closes.
|
||||||
|
onVisibleChanged:
|
||||||
|
{
|
||||||
|
if (!visible)
|
||||||
|
{
|
||||||
|
CuraApplication.getDiscoveredPrintersModel().cancelCurrentManualDeviceRequest()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Label
|
Label
|
||||||
{
|
{
|
||||||
id: titleLabel
|
id: titleLabel
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue