Skip to content

Commit a9842f0

Browse files
committed
Hide parent device of QVC webcam
1 parent 86c835d commit a9842f0

1 file changed

Lines changed: 20 additions & 0 deletions

File tree

qui/devices/device_widget.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ def __init__(self, app_name, qapp, dispatcher):
112112
self.vms: Set[backend.VM] = set()
113113
self.dispvm_templates: Set[backend.VM] = set()
114114
self.parent_ports_to_hide = []
115+
self.cameras_to_hide = []
115116
self.active_usbvms: Set[backend.VM] = set()
116117
self.dormant_usbvms: Set[backend.VM] = set()
117118
self.dev_update_queue: Set = set()
@@ -266,6 +267,10 @@ def device_added(self, vm, _event, device):
266267
if dev.parent:
267268
for potential_parent in self.devices.values():
268269
if potential_parent.port == dev.parent:
270+
# hide parents of webcams
271+
if dev.device_class == "webcam":
272+
self.cameras_to_hide.append(dev.parent)
273+
potential_parent.hide_this_device = True
269274
potential_parent.has_children = True
270275
break
271276

@@ -310,6 +315,12 @@ def device_removed(self, vm, _event, port):
310315
microphone.devices_to_attach_with_me.remove(dev)
311316
if dev.port in self.parent_ports_to_hide:
312317
self.parent_ports_to_hide.remove(dev.port)
318+
if dev.parent in self.cameras_to_hide:
319+
for potential_parent in self.devices.values():
320+
if potential_parent.port == dev.parent:
321+
potential_parent.hide_this_device = False
322+
break
323+
self.cameras_to_hide.remove(dev.parent)
313324
del self.devices[dev_id]
314325

315326
def initialize_dev_data(self):
@@ -351,6 +362,12 @@ def initialize_dev_data(self):
351362
# we have no permission to access VM's devices
352363
continue
353364

365+
# hide parents of webcams
366+
for device in self.devices.values():
367+
if device.device_class == "webcam":
368+
if device.parent:
369+
self.cameras_to_hide.append(device.parent)
370+
354371
def device_assigned(self, vm, _event, device, **_kwargs):
355372
dev_id = backend.Device.id_from_device(device)
356373
if dev_id not in self.devices:
@@ -519,6 +536,9 @@ def initialize_features(self, *_args, **_kwargs):
519536
dev.show_children = False
520537

521538
self.hide_child_devices()
539+
for dev in self.devices.values():
540+
if dev.port in self.cameras_to_hide:
541+
dev.hide_this_device = True
522542

523543
def hide_child_devices(
524544
self, parent_port: Optional[str] = None, state: bool = False

0 commit comments

Comments
 (0)