new back button

This commit is contained in:
Your Name 2026-01-08 23:27:18 +03:00
parent 3d857d7445
commit c8ce8b4d7b
4 changed files with 53 additions and 6 deletions

View File

@ -9,7 +9,7 @@ from PySide6.QtWidgets import (
QStackedWidget, QStackedWidget,
QApplication, QApplication,
) )
from PySide6.QtCore import Qt from PySide6.QtCore import Qt, Signal
from PySide6.QtGui import QFont from PySide6.QtGui import QFont
from PySide6.QtWidgets import QScroller from PySide6.QtWidgets import QScroller
from screens.bluetooth import BluetoothScreen from screens.bluetooth import BluetoothScreen
@ -55,6 +55,8 @@ class SettingsRow(QPushButton):
class SettingsScreen(QWidget): class SettingsScreen(QWidget):
view_changed = Signal(str, bool)
def __init__(self): def __init__(self):
super().__init__() super().__init__()
root = QVBoxLayout(self) root = QVBoxLayout(self)
@ -69,9 +71,9 @@ class SettingsScreen(QWidget):
list_layout.setContentsMargins(0, 0, 0, 0) list_layout.setContentsMargins(0, 0, 0, 0)
list_layout.setSpacing(12) list_layout.setSpacing(12)
list_title = QLabel("Настройки") # list_title = QLabel("Настройки")
list_title.setFont(QFont("", 24, 700)) # list_title.setFont(QFont("", 24, 700))
list_layout.addWidget(list_title) # list_layout.addWidget(list_title)
scroll = QScrollArea() scroll = QScrollArea()
scroll.setWidgetResizable(True) scroll.setWidgetResizable(True)
@ -134,6 +136,7 @@ class SettingsScreen(QWidget):
dev_row.clicked.connect(self._show_dev) dev_row.clicked.connect(self._show_dev)
if bt_row is not None: if bt_row is not None:
bt_row.clicked.connect(self._show_bluetooth) bt_row.clicked.connect(self._show_bluetooth)
self._show_list()
def _build_dev_screen(self) -> QWidget: def _build_dev_screen(self) -> QWidget:
screen = QWidget() screen = QWidget()
@ -190,12 +193,18 @@ class SettingsScreen(QWidget):
def _show_dev(self): def _show_dev(self):
self.stack.setCurrentWidget(self._dev_screen) self.stack.setCurrentWidget(self._dev_screen)
self.view_changed.emit("Параметры разработчика", True)
def _show_list(self): def _show_list(self):
self.stack.setCurrentWidget(self._list_screen) self.stack.setCurrentWidget(self._list_screen)
self.view_changed.emit("Настройки", False)
def _show_bluetooth(self): def _show_bluetooth(self):
self.stack.setCurrentWidget(self._bt_screen) self.stack.setCurrentWidget(self._bt_screen)
self.view_changed.emit("Bluetooth", True)
def show_list(self):
self._show_list()
def _exit_app(self): def _exit_app(self):
app = QApplication.instance() app = QApplication.instance()

View File

@ -12,6 +12,15 @@ QWidget { background: #F4F6F8; color: #111827; }
font-weight: 700; font-weight: 700;
} }
#MenuButton:hover, #SettingsButton:hover { background: #F9FAFB; } #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; } QToolButton::menu-indicator { image: none; }
QMenu { QMenu {
background: #FFFFFF; background: #FFFFFF;

View File

@ -11,6 +11,14 @@ QWidget { background: #0B0E11; color: #E6EAF0; }
font-weight: 700; font-weight: 700;
} }
#MenuButton:hover, #SettingsButton:hover { background: #1B2330; } #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; } QToolButton::menu-indicator { image: none; }
QMenu { QMenu {
background: #0F1318; background: #0F1318;

View File

@ -54,6 +54,11 @@ class MainWindowNew(QMainWindow):
self.act_car = menu.addAction("Car") self.act_car = menu.addAction("Car")
self.act_maps = menu.addAction("Maps") 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 = QLabel("Media")
self.lbl_source.setFont(QFont("", 20, 600)) self.lbl_source.setFont(QFont("", 20, 600))
@ -70,6 +75,7 @@ class MainWindowNew(QMainWindow):
self.btn_settings.clicked.connect(self.toggle_settings) self.btn_settings.clicked.connect(self.toggle_settings)
top.addWidget(self.menu_button) top.addWidget(self.menu_button)
top.addWidget(self.btn_back)
top.addWidget(self.lbl_source) top.addWidget(self.lbl_source)
top.addStretch(1) top.addStretch(1)
top.addWidget(self.lbl_bt) top.addWidget(self.lbl_bt)
@ -81,15 +87,20 @@ class MainWindowNew(QMainWindow):
self.stack.addWidget(self.media_screen) # 0 self.stack.addWidget(self.media_screen) # 0
self.stack.addWidget(StubScreen("Car")) # 1 self.stack.addWidget(StubScreen("Car")) # 1
self.stack.addWidget(StubScreen("Maps")) # 2 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.settings_idx = 3
self.last_non_settings_idx = 0 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_media.triggered.connect(lambda: self.go(0))
self.act_car.triggered.connect(lambda: self.go(1)) self.act_car.triggered.connect(lambda: self.go(1))
self.act_maps.triggered.connect(lambda: self.go(2)) self.act_maps.triggered.connect(lambda: self.go(2))
self.media_screen.source_changed.connect(self.lbl_bt.setText) 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.topbar)
outer.addWidget(self.stack, 1) outer.addWidget(self.stack, 1)
@ -110,11 +121,12 @@ class MainWindowNew(QMainWindow):
def _sync_topbar(self, idx: int): def _sync_topbar(self, idx: int):
is_settings = idx == self.settings_idx is_settings = idx == self.settings_idx
self.menu_button.setVisible(not is_settings) 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_bt.setVisible(not is_settings)
self.lbl_time.setVisible(not is_settings) self.lbl_time.setVisible(not is_settings)
self.btn_settings.setText("" if is_settings else "") self.btn_settings.setText("" if is_settings else "")
if is_settings: if is_settings:
self.lbl_source.setText("Настройки") self.lbl_source.setText(self.settings_title)
def toggle_settings(self): def toggle_settings(self):
if self.stack.currentIndex() == self.settings_idx: if self.stack.currentIndex() == self.settings_idx:
@ -137,3 +149,12 @@ class MainWindowNew(QMainWindow):
elif idx == 2: elif idx == 2:
self.lbl_source.setText("Maps") self.lbl_source.setText("Maps")
self._sync_topbar(idx) 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()