fix settings dev

This commit is contained in:
cheykrym 2026-04-01 02:22:17 +03:00
parent 28a795558e
commit 2fdb506044
3 changed files with 35 additions and 104 deletions

View File

@ -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:

View File

@ -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):

View File

@ -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