feat: auto-detect iPod connection via QTimer polling + fix AlreadyMounted in _mount_linux

This commit is contained in:
Maksim Totmin
2026-06-01 12:29:43 +07:00
parent 71d162520c
commit 25bb8105ac
5 changed files with 97 additions and 1 deletions
+38
View File
@@ -0,0 +1,38 @@
import logging
from typing import Set
from PyQt6.QtCore import QObject, QTimer, pyqtSignal
from ipod_device import IPodDevice
logger = logging.getLogger(__name__)
class DeviceMonitor(QObject):
state_changed = pyqtSignal(list)
def __init__(self, parent=None):
super().__init__(parent)
self.timer = QTimer(self)
self.timer.timeout.connect(self._poll)
self._device_ids: Set[str] = set()
def start(self, interval_ms: int = 3000):
self._device_ids.clear()
self._poll()
self.timer.start(interval_ms)
def stop(self):
self.timer.stop()
self._device_ids.clear()
def _poll(self):
try:
devices = IPodDevice().detect_devices()
current_ids = {d["id"] for d in devices}
if current_ids != self._device_ids:
self._device_ids = current_ids
self.state_changed.emit(devices)
except Exception:
logger.exception("DeviceMonitor poll failed")