From 5c9dc557ddb19d1924413b31f80b6b59ecd7925a Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 9 Jan 2026 03:48:15 +0300 Subject: [PATCH] add enable dev mode info --- screens/setting/about_screen.py | 103 ++++++++++++++++++-------------- 1 file changed, 57 insertions(+), 46 deletions(-) diff --git a/screens/setting/about_screen.py b/screens/setting/about_screen.py index da35ca6..059a7f2 100644 --- a/screens/setting/about_screen.py +++ b/screens/setting/about_screen.py @@ -17,7 +17,9 @@ class AboutScreen(QWidget): def __init__(self): super().__init__() self._dev_taps = 0 - self._dev_hint = QLabel("") + self._build_row: _InfoRow | None = None + + self.dev_is_unlocked = build_info.DEV_MODE_ENABLE layout = QVBoxLayout(self) layout.setContentsMargins(0, 0, 0, 0) @@ -44,26 +46,22 @@ class AboutScreen(QWidget): info.setContentsMargins(0, 0, 0, 0) info.setSpacing(8) - info.addWidget(_info_row("Приложение", build_info.APP_NAME)) - info.addWidget(_info_row("Версия", build_info.VERSION)) - build_row = _info_row("Сборка", build_info.BUILD_DATE, clickable=True) - build_row.clicked.connect(self._on_build_tap) - info.addWidget(build_row) - self._dev_hint.setObjectName("DevHint") - self._dev_hint.setFont(QFont("", 12, 600)) - self._dev_hint.setAlignment(Qt.AlignRight | Qt.AlignVCenter) - info.addWidget(self._dev_hint) - info.addWidget(_info_row("Коммит", build_info.GIT_HASH)) - info.addWidget(_info_row("Устройство", build_info.get_device_model())) - info.addWidget(_info_row("ОС", build_info.get_os_pretty_name())) - info.addWidget(_info_row("Ядро", build_info.get_kernel_version())) - info.addWidget(_info_row("RAM (используется/всего)", build_info.get_ram_info())) - info.addWidget(_info_row("Диск (используется/всего)", build_info.get_disk_info())) - info.addWidget(_info_row("Экран", build_info.get_display_resolution())) - info.addWidget(_info_row("Экран (факт)", _get_runtime_resolution())) - info.addWidget(_info_row("Серийный номер", build_info.get_serial_number())) - info.addWidget(_info_row("IP", build_info.get_ip_address())) - info.addWidget(_info_row("Температура CPU", build_info.get_cpu_temp())) + info.addWidget(_InfoRow("Приложение", build_info.APP_NAME)) + info.addWidget(_InfoRow("Версия", build_info.VERSION)) + self._build_row = _InfoRow("Сборка", build_info.BUILD_DATE, clickable=True) + self._build_row.clicked.connect(self._on_build_tap) + info.addWidget(self._build_row) + info.addWidget(_InfoRow("Коммит", build_info.GIT_HASH)) + info.addWidget(_InfoRow("Устройство", build_info.get_device_model())) + info.addWidget(_InfoRow("ОС", build_info.get_os_pretty_name())) + info.addWidget(_InfoRow("Ядро", build_info.get_kernel_version())) + info.addWidget(_InfoRow("RAM (используется/всего)", build_info.get_ram_info())) + info.addWidget(_InfoRow("Диск (используется/всего)", build_info.get_disk_info())) + info.addWidget(_InfoRow("Экран", build_info.get_display_resolution())) + info.addWidget(_InfoRow("Экран (факт)", _get_runtime_resolution())) + info.addWidget(_InfoRow("Серийный номер", build_info.get_serial_number())) + info.addWidget(_InfoRow("IP", build_info.get_ip_address())) + info.addWidget(_InfoRow("Температура CPU", build_info.get_cpu_temp())) content_layout.addLayout(info) content_layout.addStretch(1) @@ -72,47 +70,60 @@ class AboutScreen(QWidget): layout.addWidget(scroll) def _on_build_tap(self): + if self.dev_is_unlocked: + return + self._dev_taps += 1 remaining = 5 - self._dev_taps + if self._build_row is None: + return if remaining > 0: - self._dev_hint.setText(f"Осталось {remaining} нажат.") + self._build_row.set_suffix(f"(Осталось {remaining} нажат.)") return if self._dev_taps >= 5: - self._dev_taps = 0 - self._dev_hint.setText("Режим разработчика включен") + #self._dev_taps = 0 + self._build_row.set_suffix("(Режим разработчика включен)") self.dev_unlocked.emit() + self.dev_is_unlocked = True -class _ClickableRow(QWidget): +class _InfoRow(QWidget): clicked = Signal() - def __init__(self): + def __init__(self, label: str, value: str, clickable: bool = False): super().__init__() - self.setCursor(Qt.PointingHandCursor) + self._base_label = label + if clickable: + self.setCursor(Qt.PointingHandCursor) + + layout = QHBoxLayout(self) + layout.setContentsMargins(12, 6, 12, 6) + layout.setSpacing(12) + + self._label = QLabel(label) + self._label.setFont(QFont("", 15, 600)) + + self._value = QLabel(value) + self._value.setFont(QFont("", 15)) + self._value.setAlignment(Qt.AlignRight | Qt.AlignVCenter) + + layout.addWidget(self._label) + layout.addStretch(1) + layout.addWidget(self._value) + + self._clickable = clickable def mousePressEvent(self, event): - if event.button() == Qt.LeftButton: + if self._clickable and event.button() == Qt.LeftButton: self.clicked.emit() super().mousePressEvent(event) - -def _info_row(label: str, value: str, clickable: bool = False) -> QWidget: - row = _ClickableRow() if clickable else 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 set_suffix(self, suffix: str): + suffix = suffix.strip() + if suffix: + self._label.setText(f"{self._base_label} {suffix}") + else: + self._label.setText(self._base_label) def _get_runtime_resolution() -> str: