From c8ce8b4d7b51dd32233a67912dfcc943946d7c41 Mon Sep 17 00:00:00 2001 From: Your Name Date: Thu, 8 Jan 2026 23:27:18 +0300 Subject: [PATCH] new back button --- screens/settings.py | 17 +++++++++++++---- themes/day.py | 9 +++++++++ themes/night.py | 8 ++++++++ ui/main_window_new.py | 25 +++++++++++++++++++++++-- 4 files changed, 53 insertions(+), 6 deletions(-) diff --git a/screens/settings.py b/screens/settings.py index a6c96c1..63bdae3 100644 --- a/screens/settings.py +++ b/screens/settings.py @@ -9,7 +9,7 @@ from PySide6.QtWidgets import ( QStackedWidget, QApplication, ) -from PySide6.QtCore import Qt +from PySide6.QtCore import Qt, Signal from PySide6.QtGui import QFont from PySide6.QtWidgets import QScroller from screens.bluetooth import BluetoothScreen @@ -55,6 +55,8 @@ class SettingsRow(QPushButton): class SettingsScreen(QWidget): + view_changed = Signal(str, bool) + def __init__(self): super().__init__() root = QVBoxLayout(self) @@ -69,9 +71,9 @@ class SettingsScreen(QWidget): list_layout.setContentsMargins(0, 0, 0, 0) list_layout.setSpacing(12) - list_title = QLabel("Настройки") - list_title.setFont(QFont("", 24, 700)) - list_layout.addWidget(list_title) + # list_title = QLabel("Настройки") + # list_title.setFont(QFont("", 24, 700)) + # list_layout.addWidget(list_title) scroll = QScrollArea() scroll.setWidgetResizable(True) @@ -134,6 +136,7 @@ class SettingsScreen(QWidget): dev_row.clicked.connect(self._show_dev) if bt_row is not None: bt_row.clicked.connect(self._show_bluetooth) + self._show_list() def _build_dev_screen(self) -> QWidget: screen = QWidget() @@ -190,12 +193,18 @@ class SettingsScreen(QWidget): def _show_dev(self): self.stack.setCurrentWidget(self._dev_screen) + self.view_changed.emit("Параметры разработчика", True) def _show_list(self): self.stack.setCurrentWidget(self._list_screen) + self.view_changed.emit("Настройки", False) def _show_bluetooth(self): self.stack.setCurrentWidget(self._bt_screen) + self.view_changed.emit("Bluetooth", True) + + def show_list(self): + self._show_list() def _exit_app(self): app = QApplication.instance() diff --git a/themes/day.py b/themes/day.py index 95b4b9a..6b6b231 100644 --- a/themes/day.py +++ b/themes/day.py @@ -12,6 +12,15 @@ QWidget { background: #F4F6F8; color: #111827; } font-weight: 700; } #MenuButton:hover, #SettingsButton:hover { background: #F9FAFB; } +#TopBackBtn { + background: #FFFFFF; + border-radius: 12px; + border: 1px solid #E5E7EB; + padding: 8px 14px; + font-size: 16px; + font-weight: 600; +} +#TopBackBtn:hover { background: #F9FAFB; } QToolButton::menu-indicator { image: none; } QMenu { background: #FFFFFF; diff --git a/themes/night.py b/themes/night.py index 481a89a..9fc63ef 100644 --- a/themes/night.py +++ b/themes/night.py @@ -11,6 +11,14 @@ QWidget { background: #0B0E11; color: #E6EAF0; } font-weight: 700; } #MenuButton:hover, #SettingsButton:hover { background: #1B2330; } +#TopBackBtn { + background: #141A22; + border-radius: 12px; + padding: 8px 14px; + font-size: 16px; + font-weight: 600; +} +#TopBackBtn:hover { background: #1B2330; } QToolButton::menu-indicator { image: none; } QMenu { background: #0F1318; diff --git a/ui/main_window_new.py b/ui/main_window_new.py index eb35678..e4aac40 100644 --- a/ui/main_window_new.py +++ b/ui/main_window_new.py @@ -54,6 +54,11 @@ class MainWindowNew(QMainWindow): self.act_car = menu.addAction("Car") self.act_maps = menu.addAction("Maps") + self.btn_back = QPushButton("Назад") + self.btn_back.setObjectName("TopBackBtn") + self.btn_back.setMinimumSize(120, 48) + self.btn_back.setVisible(False) + self.lbl_source = QLabel("Media") self.lbl_source.setFont(QFont("", 20, 600)) @@ -70,6 +75,7 @@ class MainWindowNew(QMainWindow): self.btn_settings.clicked.connect(self.toggle_settings) top.addWidget(self.menu_button) + top.addWidget(self.btn_back) top.addWidget(self.lbl_source) top.addStretch(1) top.addWidget(self.lbl_bt) @@ -81,15 +87,20 @@ class MainWindowNew(QMainWindow): self.stack.addWidget(self.media_screen) # 0 self.stack.addWidget(StubScreen("Car")) # 1 self.stack.addWidget(StubScreen("Maps")) # 2 - self.stack.addWidget(SettingsScreen()) # 3 + self.settings_screen = SettingsScreen() + self.stack.addWidget(self.settings_screen) # 3 self.settings_idx = 3 self.last_non_settings_idx = 0 + self.settings_title = "Настройки" + self.settings_show_back = False self.act_media.triggered.connect(lambda: self.go(0)) 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) + self.settings_screen.view_changed.connect(self._on_settings_view_changed) + self.btn_back.clicked.connect(self._settings_back) outer.addWidget(self.topbar) outer.addWidget(self.stack, 1) @@ -110,11 +121,12 @@ class MainWindowNew(QMainWindow): def _sync_topbar(self, idx: int): is_settings = idx == self.settings_idx self.menu_button.setVisible(not is_settings) + self.btn_back.setVisible(is_settings and self.settings_show_back) self.lbl_bt.setVisible(not is_settings) self.lbl_time.setVisible(not is_settings) self.btn_settings.setText("✕" if is_settings else "⚙") if is_settings: - self.lbl_source.setText("Настройки") + self.lbl_source.setText(self.settings_title) def toggle_settings(self): if self.stack.currentIndex() == self.settings_idx: @@ -137,3 +149,12 @@ class MainWindowNew(QMainWindow): elif idx == 2: self.lbl_source.setText("Maps") self._sync_topbar(idx) + + def _on_settings_view_changed(self, title: str, show_back: bool): + self.settings_title = title + self.settings_show_back = show_back + if self.stack.currentIndex() == self.settings_idx: + self._sync_topbar(self.settings_idx) + + def _settings_back(self): + self.settings_screen.show_list()