add about device
This commit is contained in:
parent
f542d5f7bc
commit
4b9e326034
5
build_info.py
Normal file
5
build_info.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
APP_NAME = "Car UI"
|
||||||
|
VERSION = "0.1.0-dev"
|
||||||
|
BUILD_DATE = "dev"
|
||||||
|
GIT_HASH = "dev"
|
||||||
|
DEVICE_MODEL = "Raspberry Pi"
|
||||||
@ -13,6 +13,7 @@ from PySide6.QtCore import Qt, Signal
|
|||||||
from PySide6.QtGui import QFont
|
from PySide6.QtGui import QFont
|
||||||
from PySide6.QtWidgets import QScroller
|
from PySide6.QtWidgets import QScroller
|
||||||
from screens.bluetooth import BluetoothScreen
|
from screens.bluetooth import BluetoothScreen
|
||||||
|
import build_info
|
||||||
|
|
||||||
|
|
||||||
class SettingsRow(QPushButton):
|
class SettingsRow(QPushButton):
|
||||||
@ -93,25 +94,26 @@ class SettingsScreen(QWidget):
|
|||||||
content_layout.setContentsMargins(0, 0, 0, 0)
|
content_layout.setContentsMargins(0, 0, 0, 0)
|
||||||
content_layout.setSpacing(12)
|
content_layout.setSpacing(12)
|
||||||
|
|
||||||
bt_row = self._add_section(
|
bt_rows = self._add_section(
|
||||||
content_layout,
|
content_layout,
|
||||||
"Сеть",
|
"Сеть",
|
||||||
[
|
[
|
||||||
("Wi-Fi", "Доступные сети и подключение"),
|
("Wi-Fi", "Доступные сети и подключение"),
|
||||||
("Bluetooth", "Сопряжение и устройства"),
|
("Bluetooth", "Сопряжение и устройства"),
|
||||||
],
|
],
|
||||||
return_row_title="Bluetooth",
|
|
||||||
)
|
)
|
||||||
|
bt_row = bt_rows.get("Bluetooth")
|
||||||
|
|
||||||
dev_row = self._add_section(
|
system_rows = self._add_section(
|
||||||
content_layout,
|
content_layout,
|
||||||
"Система",
|
"Система",
|
||||||
[
|
[
|
||||||
("Об устройстве", "Версия, память, серийный номер"),
|
("Об устройстве", "Версия, память, серийный номер"),
|
||||||
("Параметры разработчика", "Отладка и логирование"),
|
("Параметры разработчика", "Отладка и логирование"),
|
||||||
],
|
],
|
||||||
return_row_title="Параметры разработчика",
|
|
||||||
)
|
)
|
||||||
|
about_row = system_rows.get("Об устройстве")
|
||||||
|
dev_row = system_rows.get("Параметры разработчика")
|
||||||
|
|
||||||
self._add_section(
|
self._add_section(
|
||||||
content_layout,
|
content_layout,
|
||||||
@ -127,13 +129,17 @@ class SettingsScreen(QWidget):
|
|||||||
list_layout.addWidget(scroll, 1)
|
list_layout.addWidget(scroll, 1)
|
||||||
|
|
||||||
self._dev_screen = self._build_dev_screen()
|
self._dev_screen = self._build_dev_screen()
|
||||||
|
self._about_screen = self._build_about_screen()
|
||||||
self._bt_screen = BluetoothScreen(self._show_list)
|
self._bt_screen = BluetoothScreen(self._show_list)
|
||||||
self.stack.addWidget(self._list_screen)
|
self.stack.addWidget(self._list_screen)
|
||||||
self.stack.addWidget(self._dev_screen)
|
self.stack.addWidget(self._dev_screen)
|
||||||
|
self.stack.addWidget(self._about_screen)
|
||||||
self.stack.addWidget(self._bt_screen)
|
self.stack.addWidget(self._bt_screen)
|
||||||
|
|
||||||
if dev_row is not None:
|
if dev_row is not None:
|
||||||
dev_row.clicked.connect(self._show_dev)
|
dev_row.clicked.connect(self._show_dev)
|
||||||
|
if about_row is not None:
|
||||||
|
about_row.clicked.connect(self._show_about)
|
||||||
if bt_row is not None:
|
if bt_row is not None:
|
||||||
bt_row.clicked.connect(self._show_bluetooth)
|
bt_row.clicked.connect(self._show_bluetooth)
|
||||||
self._show_list()
|
self._show_list()
|
||||||
@ -175,21 +181,61 @@ class SettingsScreen(QWidget):
|
|||||||
root: QVBoxLayout,
|
root: QVBoxLayout,
|
||||||
title: str,
|
title: str,
|
||||||
items: list[tuple[str, str]],
|
items: list[tuple[str, str]],
|
||||||
return_row_title: str | None = None,
|
) -> dict[str, SettingsRow]:
|
||||||
):
|
|
||||||
section = QLabel(title)
|
section = QLabel(title)
|
||||||
section.setObjectName("SettingsSection")
|
section.setObjectName("SettingsSection")
|
||||||
section.setFont(QFont("", 14, 700))
|
section.setFont(QFont("", 14, 700))
|
||||||
section.setContentsMargins(2, 8, 2, 0)
|
section.setContentsMargins(2, 8, 2, 0)
|
||||||
root.addWidget(section)
|
root.addWidget(section)
|
||||||
|
|
||||||
target_row = None
|
rows: dict[str, SettingsRow] = {}
|
||||||
for row_title, row_subtitle in items:
|
for row_title, row_subtitle in items:
|
||||||
row = SettingsRow(row_title, row_subtitle)
|
row = SettingsRow(row_title, row_subtitle)
|
||||||
root.addWidget(row)
|
root.addWidget(row)
|
||||||
if return_row_title and row_title == return_row_title:
|
rows[row_title] = row
|
||||||
target_row = row
|
return rows
|
||||||
return target_row
|
|
||||||
|
def _build_about_screen(self) -> QWidget:
|
||||||
|
screen = QWidget()
|
||||||
|
layout = QVBoxLayout(screen)
|
||||||
|
layout.setContentsMargins(0, 0, 0, 0)
|
||||||
|
layout.setSpacing(12)
|
||||||
|
|
||||||
|
title = QLabel("Об устройстве")
|
||||||
|
title.setFont(QFont("", 22, 700))
|
||||||
|
layout.addWidget(title)
|
||||||
|
|
||||||
|
info = QVBoxLayout()
|
||||||
|
info.setContentsMargins(0, 0, 0, 0)
|
||||||
|
info.setSpacing(8)
|
||||||
|
|
||||||
|
info.addWidget(self._info_row("Приложение", build_info.APP_NAME))
|
||||||
|
info.addWidget(self._info_row("Версия", build_info.VERSION))
|
||||||
|
info.addWidget(self._info_row("Сборка", build_info.BUILD_DATE))
|
||||||
|
info.addWidget(self._info_row("Коммит", build_info.GIT_HASH))
|
||||||
|
info.addWidget(self._info_row("Устройство", build_info.DEVICE_MODEL))
|
||||||
|
|
||||||
|
layout.addLayout(info)
|
||||||
|
layout.addStretch(1)
|
||||||
|
return screen
|
||||||
|
|
||||||
|
def _info_row(self, label: str, value: str) -> QWidget:
|
||||||
|
row = QWidget()
|
||||||
|
layout = QHBoxLayout(row)
|
||||||
|
layout.setContentsMargins(12, 6, 12, 6)
|
||||||
|
layout.setSpacing(12)
|
||||||
|
|
||||||
|
lbl = QLabel(label)
|
||||||
|
lbl.setFont(QFont("", 15, 600))
|
||||||
|
|
||||||
|
val = QLabel(value)
|
||||||
|
val.setFont(QFont("", 15))
|
||||||
|
val.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
|
||||||
|
|
||||||
|
layout.addWidget(lbl)
|
||||||
|
layout.addStretch(1)
|
||||||
|
layout.addWidget(val)
|
||||||
|
return row
|
||||||
|
|
||||||
def _show_dev(self):
|
def _show_dev(self):
|
||||||
self.stack.setCurrentWidget(self._dev_screen)
|
self.stack.setCurrentWidget(self._dev_screen)
|
||||||
@ -203,6 +249,10 @@ class SettingsScreen(QWidget):
|
|||||||
self.stack.setCurrentWidget(self._bt_screen)
|
self.stack.setCurrentWidget(self._bt_screen)
|
||||||
self.view_changed.emit("Bluetooth", True)
|
self.view_changed.emit("Bluetooth", True)
|
||||||
|
|
||||||
|
def _show_about(self):
|
||||||
|
self.stack.setCurrentWidget(self._about_screen)
|
||||||
|
self.view_changed.emit("Об устройстве", True)
|
||||||
|
|
||||||
def show_list(self):
|
def show_list(self):
|
||||||
self._show_list()
|
self._show_list()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user