add new selector

This commit is contained in:
cheykrym 2026-04-01 03:09:44 +03:00
parent f1cde595ba
commit 8638c322a3
2 changed files with 46 additions and 4 deletions

4
app.py
View File

@ -51,8 +51,8 @@ def _apply_startup_display_defaults():
settings.setValue("display/auto_brightness", False)
if not settings.contains("display/theme"):
settings.setValue("display/theme", "night")
if not settings.contains("source/default_mode"):
settings.setValue("source/default_mode", "bluetooth")
if not settings.contains("media/source_mode"):
settings.setValue("media/source_mode", "bluetooth")
def _apply_reset_if_requested():

View File

@ -54,7 +54,18 @@ class MainWindowNew(QMainWindow):
menu = QMenu(self.menu_button)
menu.setMinimumWidth(340)
self.menu_button.setMenu(menu)
# Кнопка "Media" - открывает текущий режим
self.act_media = menu.addAction("Media")
menu.addSeparator()
# Подменю с переключателями Bluetooth/CarPlay
self.menu_source = menu.addMenu("Режим Media")
self.act_source_bluetooth = self.menu_source.addAction("Bluetooth")
self.act_source_carplay = self.menu_source.addAction("CarPlay")
self.act_source_bluetooth.setCheckable(True)
self.act_source_carplay.setCheckable(True)
self.act_car = menu.addAction("Car")
self.act_maps = menu.addAction("Maps")
@ -90,7 +101,7 @@ class MainWindowNew(QMainWindow):
self.media_screen = MediaScreen()
self.stack.addWidget(self.media_screen) # 0
self.stack.addWidget(StubScreen("Car")) # 1
self.stack.addWidget(StubScreen("Maps")) # 2
self.stack.addWidget(StubScreen("Maps")) # 2
self.settings_screen = SettingsScreen()
self.stack.addWidget(self.settings_screen) # 3
@ -99,7 +110,13 @@ class MainWindowNew(QMainWindow):
self.settings_title = "Настройки"
self.settings_show_back = False
self.act_media.triggered.connect(lambda: self.go(0))
# Читаем режим источника
self._source_mode = self._settings.value("media/source_mode", "bluetooth")
self._update_source_menu()
self.act_media.triggered.connect(lambda: self._open_media())
self.act_source_bluetooth.triggered.connect(lambda: self._set_source_mode("bluetooth"))
self.act_source_carplay.triggered.connect(lambda: self._set_source_mode("carplay"))
self.act_car.triggered.connect(lambda: self.go(1))
self.act_maps.triggered.connect(lambda: self.go(2))
self.media_screen.source_changed.connect(self.lbl_bt.setText)
@ -118,6 +135,9 @@ class MainWindowNew(QMainWindow):
self.apply_theme()
self.go(0)
# Обновляем заголовок с учётом режима
mode_text = "Bluetooth" if self._source_mode == "bluetooth" else "CarPlay"
self.lbl_source.setText(f"Media • {mode_text}")
self.lbl_bt.setText(self.media_screen.source.text())
def apply_theme(self):
@ -160,6 +180,28 @@ class MainWindowNew(QMainWindow):
self.lbl_source.setText("Maps")
self._sync_topbar(idx)
def _open_media(self):
"""Открыть экран Media с текущим режимом."""
self.go(0)
mode_text = "Bluetooth" if self._source_mode == "bluetooth" else "CarPlay"
self.lbl_source.setText(f"Media • {mode_text}")
self.lbl_bt.setText(self.media_screen.source.text())
def _set_source_mode(self, mode: str):
"""Установить режим источника (Bluetooth/CarPlay)."""
self._settings.setValue("media/source_mode", mode)
self._source_mode = mode
self._update_source_menu()
# Обновляем заголовок
if self.stack.currentIndex() == 0:
mode_text = "Bluetooth" if mode == "bluetooth" else "CarPlay"
self.lbl_source.setText(f"Media • {mode_text}")
def _update_source_menu(self):
"""Обновить состояние переключателей в меню."""
self.act_source_bluetooth.setChecked(self._source_mode == "bluetooth")
self.act_source_carplay.setChecked(self._source_mode == "carplay")
def _on_settings_view_changed(self, title: str, show_back: bool):
self.settings_title = title
self.settings_show_back = show_back