From 2fdb5060448bc28dd2ed3a5f6372ae6fbb5c379f Mon Sep 17 00:00:00 2001 From: cheykrym Date: Wed, 1 Apr 2026 02:22:17 +0300 Subject: [PATCH] fix settings dev --- build_info.py | 2 +- screens/setting/dev_screen.py | 119 ++++++---------------------------- services/bluetooth_service.py | 18 ++++- 3 files changed, 35 insertions(+), 104 deletions(-) diff --git a/build_info.py b/build_info.py index 6f56797..b4e870e 100644 --- a/build_info.py +++ b/build_info.py @@ -13,7 +13,7 @@ DEFAULT_SOUND_VOLUME = 100 DEFAULT_PREMUTE_VOLUME = 10 DEFAULT_DUCKING_VOLUME = 35 DEV_MODE_ENABLE = (Path(__file__).resolve().parent / "dev_mode_enable").exists() -BLUETOOTH_MAX_PAIRED_DEVICES = 5 +BLUETOOTH_MAX_PAIRED_DEVICES = 4 def get_device_model() -> str: diff --git a/screens/setting/dev_screen.py b/screens/setting/dev_screen.py index 801ac7a..b014c12 100644 --- a/screens/setting/dev_screen.py +++ b/screens/setting/dev_screen.py @@ -111,97 +111,11 @@ def _build_sound_toggles() -> QWidget: return container -def _build_mock_devices_toggle() -> QWidget: - settings = QSettings("car_ui", "ui") - - container = QWidget() - layout = QVBoxLayout(container) - layout.setContentsMargins(12, 6, 12, 6) - layout.setSpacing(8) - - layout.addWidget( - _toggle_row( - "Mock Bluetooth устройства", - settings, - "debug/mock_devices", - False, - flag_path=_mock_devices_flag_path(), - ) - ) - return container - - -def _build_persist_toggle() -> QWidget: - row = QWidget() - layout = QHBoxLayout(row) - layout.setContentsMargins(12, 6, 12, 6) - layout.setSpacing(12) - - lbl = QLabel("Показывать после перезагрузки") - lbl.setFont(QFont("", 14, 600)) - - btn = QPushButton("Выкл") - btn.setObjectName("SoundToggle") - btn.setCheckable(True) - btn.setChecked(_dev_flag_path().exists()) - btn.setMinimumHeight(40) - btn.setMinimumWidth(110) - btn.setFont(QFont("", 12, 700)) - - def _sync_text(is_checked: bool): - btn.setText("Вкл" if is_checked else "Выкл") - - def _persist_flag(is_checked: bool): - flag_path = _dev_flag_path() - if is_checked: - flag_path.touch(exist_ok=True) - else: - if flag_path.exists(): - flag_path.unlink() - - btn.toggled.connect(_sync_text) - btn.toggled.connect(_persist_flag) - _sync_text(btn.isChecked()) - - layout.addWidget(lbl) - layout.addStretch(1) - layout.addWidget(btn) - return row - - -def _build_sound_toggles() -> QWidget: - settings = QSettings("car_ui", "ui") - - container = QWidget() - layout = QVBoxLayout(container) - layout.setContentsMargins(12, 6, 12, 6) - layout.setSpacing(8) - - layout.addWidget( - _toggle_row( - "Премут", - settings, - "sound/premute_enabled", - False, - ) - ) - layout.addWidget( - _toggle_row( - "Ducking", - settings, - "sound/ducking_enabled", - False, - ) - ) - return container - - def _toggle_row( label: str, settings: QSettings, key: str, default: bool, - flag_path: Path | None = None, ) -> QWidget: row = QWidget() layout = QHBoxLayout(row) @@ -214,10 +128,7 @@ def _toggle_row( btn = QPushButton("Выкл") btn.setObjectName("SoundToggle") btn.setCheckable(True) - if flag_path: - btn.setChecked(flag_path.exists()) - else: - btn.setChecked(_read_bool_setting(settings, key, default)) + btn.setChecked(_read_bool_setting(settings, key, default)) btn.setMinimumHeight(40) btn.setMinimumWidth(110) btn.setFont(QFont("", 12, 700)) @@ -226,14 +137,7 @@ def _toggle_row( btn.setText("Вкл" if is_checked else "Выкл") def _persist_flag(is_checked: bool): - if flag_path: - if is_checked: - flag_path.touch(exist_ok=True) - else: - if flag_path.exists(): - flag_path.unlink() - else: - settings.setValue(key, is_checked) + settings.setValue(key, is_checked) btn.toggled.connect(_sync_text) btn.toggled.connect(_persist_flag) @@ -261,8 +165,23 @@ def _dev_flag_path() -> Path: return Path(build_info.__file__).resolve().parent / "dev_mode_enable" -def _mock_devices_flag_path() -> Path: - return Path(build_info.__file__).resolve().parent / "mock_devices_enable" +def _build_mock_devices_toggle() -> QWidget: + settings = QSettings("car_ui", "ui") + + container = QWidget() + layout = QVBoxLayout(container) + layout.setContentsMargins(12, 6, 12, 6) + layout.setSpacing(8) + + layout.addWidget( + _toggle_row( + "Mock Bluetooth устройства (debug)", + settings, + "debug/mock_devices", + False, + ) + ) + return container def _confirm_exit(on_exit): diff --git a/services/bluetooth_service.py b/services/bluetooth_service.py index 62ec303..44308eb 100644 --- a/services/bluetooth_service.py +++ b/services/bluetooth_service.py @@ -7,15 +7,27 @@ from dataclasses import dataclass from datetime import datetime from pathlib import Path -from PySide6.QtCore import QObject, Signal +from PySide6.QtCore import QObject, Signal, QSettings import build_info def _is_mock_devices_enabled() -> bool: """Проверить, включён ли режим мок-устройств.""" - flag_path = Path(build_info.__file__).resolve().parent / "mock_devices_enable" - return flag_path.exists() + settings = QSettings("car_ui", "ui") + return _read_bool_setting(settings, "debug/mock_devices", False) + + +def _read_bool_setting(settings: QSettings, key: str, default: bool) -> bool: + raw = settings.value(key, default) + if isinstance(raw, bool): + return raw + if isinstance(raw, str): + return raw.strip().lower() in ("1", "true", "yes", "on") + try: + return bool(int(raw)) + except (TypeError, ValueError): + return default @dataclass