car_ui/screens/media.py
2026-01-08 03:04:34 +03:00

119 lines
3.5 KiB
Python

from PySide6.QtWidgets import (
QWidget,
QLabel,
QVBoxLayout,
QHBoxLayout,
QPushButton,
QSlider,
QSizePolicy,
)
from PySide6.QtCore import Qt, QSize
from PySide6.QtGui import QFont
class MediaScreen(QWidget):
def __init__(self):
super().__init__()
root = QVBoxLayout(self)
root.setContentsMargins(18, 16, 18, 16)
root.setSpacing(14)
header = QHBoxLayout()
header.setContentsMargins(0, 0, 0, 0)
header.setSpacing(12)
info_col = QVBoxLayout()
info_col.setContentsMargins(0, 0, 0, 0)
info_col.setSpacing(6)
source = QLabel("Источник: Bluetooth")
source.setObjectName("MediaSource")
source.setFont(QFont("", 14, 600))
title = QLabel("Название трека")
title.setObjectName("MediaTitle")
title.setFont(QFont("", 22, 700))
artist = QLabel("Исполнитель")
artist.setObjectName("MediaArtist")
artist.setFont(QFont("", 16, 600))
info_col.addWidget(source)
info_col.addWidget(title)
info_col.addWidget(artist)
info_col.addStretch(1)
cover = QLabel("COVER")
cover.setObjectName("MediaCover")
cover.setAlignment(Qt.AlignCenter)
cover.setFixedSize(QSize(240, 240))
header.addLayout(info_col, 1)
header.addWidget(cover, 0, Qt.AlignRight | Qt.AlignTop)
controls = QVBoxLayout()
controls.setContentsMargins(0, 0, 0, 0)
controls.setSpacing(12)
progress = QSlider(Qt.Horizontal)
progress.setObjectName("MediaProgress")
progress.setRange(0, 100)
progress.setValue(35)
transport = QHBoxLayout()
transport.setContentsMargins(0, 0, 0, 0)
transport.setSpacing(16)
btn_prev = QPushButton("")
btn_prev.setObjectName("MediaTransportBtn")
btn_prev.setFixedSize(QSize(72, 72))
btn_play = QPushButton("")
btn_play.setObjectName("MediaTransportBtnPrimary")
btn_play.setFixedSize(QSize(96, 72))
btn_next = QPushButton("")
btn_next.setObjectName("MediaTransportBtn")
btn_next.setFixedSize(QSize(72, 72))
transport.addStretch(1)
transport.addWidget(btn_prev)
transport.addWidget(btn_play)
transport.addWidget(btn_next)
transport.addStretch(1)
volume_row = QHBoxLayout()
volume_row.setContentsMargins(0, 0, 0, 0)
volume_row.setSpacing(10)
volume_lbl = QLabel("Громкость")
volume_lbl.setObjectName("MediaVolumeLabel")
volume_lbl.setFont(QFont("", 14, 600))
volume = QSlider(Qt.Horizontal)
volume.setObjectName("MediaVolume")
volume.setRange(0, 100)
volume.setValue(55)
volume.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Fixed)
volume_row.addWidget(volume_lbl)
volume_row.addWidget(volume, 1)
controls.addWidget(progress)
controls.addLayout(transport)
controls.addLayout(volume_row)
soft_keys = QHBoxLayout()
soft_keys.setContentsMargins(0, 0, 0, 0)
soft_keys.setSpacing(10)
for label in ["SOURCE", "EQ", "FOLDER", "RANDOM", "REPEAT"]:
btn = QPushButton(label)
btn.setObjectName("MediaSoftBtn")
btn.setMinimumHeight(52)
soft_keys.addWidget(btn, 1)
root.addLayout(header)
root.addLayout(controls)
root.addLayout(soft_keys)