forked from masonhuang/KNEO-Academy
60 lines
2.3 KiB
Python
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) |