KNEO-Academy/src/views/components/device_list.py

60 lines
2.3 KiB
Python

from PyQt5.QtWidgets import QFrame, QVBoxLayout, QHBoxLayout, QLabel, QListWidget, QWidget, QPushButton
from PyQt5.QtSvg import QSvgWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QPixmap
import os
from src.config import SECONDARY_COLOR, UXUI_ASSETS, BUTTON_STYLE, DongleIconMap
def create_device_layout(parent, device_controller):
"""Create the device list layout"""
try:
devices_frame = QFrame(parent)
devices_frame.setStyleSheet(f"border: none; background: {SECONDARY_COLOR}; border-radius: 15px;")
# Set height based on connected devices
base_height = 250
extra_height = 100 if len(device_controller.connected_devices) > 1 else 0
devices_frame.setFixedHeight(base_height + extra_height)
devices_frame.setFixedWidth(240)
devices_layout = QVBoxLayout(devices_frame)
# Title
title_layout = QHBoxLayout()
title_container = QWidget()
container_layout = QHBoxLayout(title_container)
container_layout.setSpacing(10)
device_icon = QSvgWidget(os.path.join(UXUI_ASSETS, "Assets_svg/ic_window_device.svg"))
device_icon.setFixedSize(20, 20)
container_layout.addWidget(device_icon)
title_label = QLabel("Device")
title_label.setStyleSheet("color: white; font-size: 20px; font-weight: bold;")
container_layout.addWidget(title_label)
title_layout.addWidget(title_container)
devices_layout.addLayout(title_layout)
# Device list
device_list_widget = QListWidget(parent)
devices_layout.addWidget(device_list_widget)
# Detail button
detail_button = QPushButton("Details", parent)
detail_button.setStyleSheet(BUTTON_STYLE)
detail_button.setFixedSize(72, 30)
detail_button.clicked.connect(parent.show_device_popup)
button_container = QWidget()
button_layout = QHBoxLayout(button_container)
button_layout.addWidget(detail_button, alignment=Qt.AlignCenter)
button_layout.setContentsMargins(0, 0, 0, 0)
devices_layout.addWidget(button_container)
return devices_frame, device_list_widget
except Exception as e:
print(f"Error in create_device_layout: {e}")
return QFrame(parent), QListWidget(parent)