new back button
This commit is contained in:
parent
3d857d7445
commit
c8ce8b4d7b
@ -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()
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user