fix: Wi-Fi 恢复失败后继续搜索设备 (#66)

This commit is contained in:
chengma
2026-08-09 22:18:55 +08:00
parent 8643c37211
commit ff8cdd77c3
4 changed files with 97 additions and 19 deletions
+35 -7
View File
@@ -18,6 +18,7 @@ from PyQt5.QtCore import (
from .android_device_service import (
AndroidDeviceConversionCancelled,
AndroidDeviceSearchError,
AndroidDeviceSearchResult,
AndroidDeviceService,
PDD_PACKAGE_NAME,
)
@@ -130,11 +131,18 @@ class AndroidDeviceSearchWorker(QObject):
def run(self) -> None:
try:
try:
restore_warning = ""
if self._restore_serial:
devices = self._service.restore_saved_device(
self._restore_serial,
lambda: self._cancelled,
)
try:
devices = self._service.restore_saved_device(
self._restore_serial,
lambda: self._cancelled,
)
except AndroidDeviceSearchError as exc:
restore_warning = str(exc)
devices = self._service.search(
lambda: self._cancelled
)
else:
devices = self._service.search(lambda: self._cancelled)
except AndroidDeviceSearchError as exc:
@@ -145,7 +153,9 @@ class AndroidDeviceSearchWorker(QObject):
self.failed.emit(str(exc) or "无法搜索 Android 设备")
else:
if not self._cancelled:
self.succeeded.emit(devices)
self.succeeded.emit(
AndroidDeviceSearchResult(devices, restore_warning)
)
finally:
self.completed.emit()
@@ -897,7 +907,7 @@ class SettingsPageEventBinder(QObject):
return AndroidDeviceInfo(serial) if serial else None
@pyqtSlot(object)
def _on_search_succeeded(self, devices) -> None:
def _on_search_succeeded(self, result: AndroidDeviceSearchResult) -> None:
if self._closing:
return
@@ -909,7 +919,7 @@ class SettingsPageEventBinder(QObject):
android_version=device.android_version,
status=device.status,
)
for device in devices
for device in result.devices
]
self._page.set_android_devices(rows)
saved_device = self._page.deviceTableModel.device_for_serial(
@@ -919,6 +929,24 @@ class SettingsPageEventBinder(QObject):
self._page.deviceTableModel.set_checked_serial(
self._saved_android_serial
)
if result.restore_warning:
action = (
"自动恢复未完成"
if self._search_is_startup_restore
else "搜索完成"
)
found_text = (
f"找到 {len(rows)} 台 Android 设备"
if rows
else "未找到其他 Android 设备"
)
self._page.deviceStatusLabel.setText(
f"{action}:{found_text};已保存设备 "
f"{self._saved_android_serial} 恢复失败:"
f"{result.restore_warning};配置已保留"
)
elif saved_device is not None and saved_device.status == "device":
action = (
"恢复完成"
if self._search_is_startup_restore