From 8638c322a338c5b2694c376de6f47618886e6c4e Mon Sep 17 00:00:00 2001 From: cheykrym Date: Wed, 1 Apr 2026 03:09:44 +0300 Subject: [PATCH] add new selector --- app.py | 4 ++-- ui/main_window_new.py | 46 +++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/app.py b/app.py index a1f9cfa..49776b2 100644 --- a/app.py +++ b/app.py @@ -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(): diff --git a/ui/main_window_new.py b/ui/main_window_new.py index ec981ce..e87143a 100644 --- a/ui/main_window_new.py +++ b/ui/main_window_new.py @@ -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