update design dev_screen

This commit is contained in:
Your Name 2026-01-09 05:17:20 +03:00
parent ecfce9dfcd
commit dfdc791d07
4 changed files with 50 additions and 1 deletions

View File

@ -32,9 +32,15 @@ def build_dev_screen(on_exit) -> QWidget:
reboot_btn.setMinimumHeight(72) reboot_btn.setMinimumHeight(72)
reboot_btn.clicked.connect(_confirm_reboot) reboot_btn.clicked.connect(_confirm_reboot)
reset_btn = QPushButton("Сброс до заводских")
reset_btn.setObjectName("DevResetBtn")
reset_btn.setMinimumHeight(72)
reset_btn.clicked.connect(_confirm_factory_reset)
layout.addLayout(hdr) layout.addLayout(hdr)
layout.addWidget(exit_btn) layout.addWidget(exit_btn)
layout.addWidget(reboot_btn) layout.addWidget(reboot_btn)
layout.addWidget(reset_btn)
layout.addStretch(1) layout.addStretch(1)
return screen return screen
@ -177,3 +183,16 @@ def _confirm_reboot():
) )
if dialog.exec() == ConfirmDialog.Accepted: if dialog.exec() == ConfirmDialog.Accepted:
subprocess.run(["sudo", "reboot"], check=False) subprocess.run(["sudo", "reboot"], check=False)
def _confirm_factory_reset():
dialog = ConfirmDialog(
"Подтверждение",
"Сбросить настройки до заводских? Приложение будет закрыто.",
"Сбросить",
ok_object_name="ConfirmOkDanger",
)
if dialog.exec() == ConfirmDialog.Accepted:
reset_marker = Path(build_info.__file__).resolve().parent / "reset"
reset_marker.touch(exist_ok=True)
subprocess.run(["sudo", "reboot"], check=False)

View File

@ -9,7 +9,7 @@ from PySide6.QtWidgets import (
QStackedWidget, QStackedWidget,
QApplication, QApplication,
) )
from PySide6.QtCore import Qt, Signal from PySide6.QtCore import Qt, Signal, QSettings
from PySide6.QtGui import QFont from PySide6.QtGui import QFont
from PySide6.QtWidgets import QScroller from PySide6.QtWidgets import QScroller
from screens.setting.bluetooth_screen import BluetoothScreen from screens.setting.bluetooth_screen import BluetoothScreen
@ -19,6 +19,7 @@ from screens.setting.sound_screen import SoundScreen
from screens.setting.eq_screen import EqualizerScreen from screens.setting.eq_screen import EqualizerScreen
from screens.setting.display_screen import DisplayScreen from screens.setting.display_screen import DisplayScreen
import build_info import build_info
from ui.language_dialog import LanguageDialog
class SettingsRow(QPushButton): class SettingsRow(QPushButton):
@ -118,10 +119,14 @@ class SettingsScreen(QWidget):
[ [
("Экран", "Яркость, сон, тема"), ("Экран", "Яркость, сон, тема"),
("Звук", "Громкость, эквалайзер"), ("Звук", "Громкость, эквалайзер"),
("Язык", "Выбор языка интерфейса"),
], ],
) )
display_row = display_rows.get("Экран") display_row = display_rows.get("Экран")
sound_row = display_rows.get("Звук") sound_row = display_rows.get("Звук")
language_row = display_rows.get("Язык")
self._add_section(content_layout, "Данные", [])
system_rows = self._add_section( system_rows = self._add_section(
content_layout, content_layout,
@ -167,6 +172,8 @@ class SettingsScreen(QWidget):
display_row.clicked.connect(self._show_display) display_row.clicked.connect(self._show_display)
if sound_row is not None: if sound_row is not None:
sound_row.clicked.connect(self._show_sound) sound_row.clicked.connect(self._show_sound)
if language_row is not None:
language_row.clicked.connect(self._show_language)
self._show_list() self._show_list()
def _add_section( def _add_section(
@ -219,6 +226,12 @@ class SettingsScreen(QWidget):
self.stack.setCurrentWidget(self._eq_screen) self.stack.setCurrentWidget(self._eq_screen)
self.view_changed.emit("Эквалайзер", True) self.view_changed.emit("Эквалайзер", True)
def _show_language(self):
dialog = LanguageDialog()
if dialog.exec() == LanguageDialog.Accepted:
settings = QSettings("car_ui", "ui")
settings.setValue("ui/language", dialog.selected_language())
def _exit_app(self): def _exit_app(self):
app = QApplication.instance() app = QApplication.instance()
if app is not None: if app is not None:

View File

@ -122,6 +122,15 @@ QScrollArea > QWidget > QWidget { background: transparent; }
font-weight: 700; font-weight: 700;
} }
#DevRebootBtn:hover { background: #FECACA; } #DevRebootBtn:hover { background: #FECACA; }
#DevResetBtn {
background: #FEE2E2;
color: #991B1B;
border-radius: 14px;
border: 1px solid #FCA5A5;
font-size: 16px;
font-weight: 700;
}
#DevResetBtn:hover { background: #FECACA; }
#BluetoothStatus { color: rgba(107,114,128,0.95); } #BluetoothStatus { color: rgba(107,114,128,0.95); }
#BluetoothList { #BluetoothList {

View File

@ -113,6 +113,14 @@ QScrollArea > QWidget > QWidget { background: transparent; }
font-weight: 700; font-weight: 700;
} }
#DevRebootBtn:hover { background: #991B1B; } #DevRebootBtn:hover { background: #991B1B; }
#DevResetBtn {
background: #7F1D1D;
color: #FEE2E2;
border-radius: 14px;
font-size: 16px;
font-weight: 700;
}
#DevResetBtn:hover { background: #991B1B; }
#BluetoothStatus { color: rgba(138,147,166,0.95); } #BluetoothStatus { color: rgba(138,147,166,0.95); }
#BluetoothList { #BluetoothList {