add params for ir
This commit is contained in:
parent
9bb3c1b2df
commit
65f5f1fee3
2
app.py
2
app.py
@ -69,6 +69,8 @@ def _apply_startup_display_defaults():
|
||||
settings.setValue("display/theme", "night")
|
||||
if not settings.contains("media/source_mode"):
|
||||
settings.setValue("media/source_mode", "bluetooth")
|
||||
if not settings.contains("ir_remote/enabled"):
|
||||
settings.setValue("ir_remote/enabled", False)
|
||||
|
||||
|
||||
def _apply_reset_if_requested():
|
||||
|
||||
@ -3,13 +3,13 @@ import subprocess
|
||||
|
||||
from PySide6.QtCore import Qt, QSettings
|
||||
from PySide6.QtGui import QFont
|
||||
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel
|
||||
from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QPushButton, QLabel, QFrame
|
||||
|
||||
import build_info
|
||||
from ui.confirm_dialog import ConfirmDialog
|
||||
|
||||
|
||||
def build_dev_screen(on_exit) -> QWidget:
|
||||
def build_dev_screen(on_exit, on_ir_toggle=None) -> QWidget:
|
||||
screen = QWidget()
|
||||
layout = QVBoxLayout(screen)
|
||||
layout.setContentsMargins(0, 0, 0, 0)
|
||||
@ -18,6 +18,7 @@ def build_dev_screen(on_exit) -> QWidget:
|
||||
layout.addWidget(_build_persist_toggle())
|
||||
layout.addWidget(_build_sound_toggles())
|
||||
layout.addWidget(_build_mock_devices_toggle())
|
||||
layout.addWidget(_build_ir_remote_toggle(on_ir_toggle))
|
||||
|
||||
hdr = QHBoxLayout()
|
||||
hdr.setContentsMargins(0, 0, 0, 0)
|
||||
@ -184,6 +185,30 @@ def _build_mock_devices_toggle() -> QWidget:
|
||||
return container
|
||||
|
||||
|
||||
def _build_ir_remote_toggle(on_ir_toggle=None) -> QWidget:
|
||||
"""Переключатель ИК-пульта."""
|
||||
settings = QSettings("car_ui", "ui")
|
||||
|
||||
container = QWidget()
|
||||
layout = QVBoxLayout(container)
|
||||
layout.setContentsMargins(12, 6, 12, 6)
|
||||
layout.setSpacing(8)
|
||||
|
||||
row = _toggle_row(
|
||||
"ИК-пульт (требуется перезапуск)",
|
||||
settings,
|
||||
"ir_remote/enabled",
|
||||
False,
|
||||
)
|
||||
layout.addWidget(row)
|
||||
|
||||
# Подключаем callback
|
||||
if on_ir_toggle:
|
||||
row.findChild(QPushButton).toggled.connect(on_ir_toggle)
|
||||
|
||||
return container
|
||||
|
||||
|
||||
def _confirm_exit(on_exit):
|
||||
dialog = ConfirmDialog(
|
||||
"Подтверждение",
|
||||
|
||||
@ -153,7 +153,7 @@ class SettingsScreen(QWidget):
|
||||
scroll.setWidget(content)
|
||||
list_layout.addWidget(scroll, 1)
|
||||
|
||||
self._dev_screen = build_dev_screen(self._exit_app)
|
||||
self._dev_screen = build_dev_screen(self._exit_app, self._on_ir_toggle)
|
||||
self._about_screen = AboutScreen()
|
||||
self._about_screen.dev_unlocked.connect(self._enable_dev_mode)
|
||||
self._bt_screen = BluetoothScreen(self._show_list)
|
||||
@ -211,6 +211,16 @@ class SettingsScreen(QWidget):
|
||||
self.stack.setCurrentWidget(self._list_screen)
|
||||
self.view_changed.emit("Настройки", False)
|
||||
|
||||
def _on_ir_toggle(self, enabled: bool):
|
||||
"""Обработчик переключения ИК-пульта."""
|
||||
# Находим main_window и вызываем метод
|
||||
from ui.main_window_new import MainWindowNew
|
||||
main_window = self.parent()
|
||||
while main_window and not isinstance(main_window, MainWindowNew):
|
||||
main_window = main_window.parent()
|
||||
if main_window:
|
||||
main_window.set_ir_remote_enabled(enabled)
|
||||
|
||||
def _show_bluetooth(self):
|
||||
self.stack.setCurrentWidget(self._bt_screen)
|
||||
self.view_changed.emit("Bluetooth", True)
|
||||
|
||||
@ -108,9 +108,12 @@ class MainWindowNew(QMainWindow):
|
||||
self._bt_service = BluetoothService(self)
|
||||
self._media_controller = MediaController(self._bt_service, self)
|
||||
|
||||
# ИК-пульт
|
||||
# ИК-пульт (только если включено в настройках)
|
||||
self._ir_service = IrRemoteService(self)
|
||||
self._connect_ir_remote()
|
||||
self._ir_enabled = self._settings.value("ir_remote/enabled", False)
|
||||
if self._ir_enabled:
|
||||
self._connect_ir_remote()
|
||||
self._ir_service.start()
|
||||
|
||||
self.media_screen = MediaScreen(self._media_controller)
|
||||
self.stack.addWidget(self.media_screen) # 0
|
||||
@ -221,6 +224,19 @@ class MainWindowNew(QMainWindow):
|
||||
# TODO: реализовать быстрое уменьшение громкости
|
||||
pass
|
||||
|
||||
def set_ir_remote_enabled(self, enabled: bool):
|
||||
"""Включить или выключить ИК-пульт."""
|
||||
self._settings.setValue("ir_remote/enabled", enabled)
|
||||
self._ir_enabled = enabled
|
||||
|
||||
if enabled:
|
||||
self._connect_ir_remote()
|
||||
self._ir_service.start()
|
||||
logger.info("IR remote enabled")
|
||||
else:
|
||||
self._ir_service.stop()
|
||||
logger.info("IR remote disabled")
|
||||
|
||||
def apply_theme(self):
|
||||
self.app.setStyleSheet(THEME_NIGHT if self.is_night else THEME_DAY)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user