add language info
This commit is contained in:
parent
f2e5126fb7
commit
d68451230f
14
app.py
14
app.py
@ -6,12 +6,15 @@ from PySide6.QtWidgets import QApplication
|
||||
|
||||
import build_info
|
||||
from audio.system_volume import set_volume
|
||||
from themes import THEME_DAY, THEME_NIGHT
|
||||
from ui.language_dialog import LanguageDialog
|
||||
from ui.main_window_new import MainWindowNew
|
||||
|
||||
|
||||
def run_app():
|
||||
app = QApplication(sys.argv)
|
||||
_apply_reset_if_requested()
|
||||
_ensure_language_selected(app)
|
||||
_apply_startup_sound_defaults()
|
||||
_apply_startup_display_defaults()
|
||||
window = MainWindowNew(app)
|
||||
@ -61,3 +64,14 @@ def _apply_reset_if_requested():
|
||||
if settings_path.exists():
|
||||
settings_path.unlink()
|
||||
reset_marker.unlink()
|
||||
|
||||
|
||||
def _ensure_language_selected(app: QApplication):
|
||||
settings = QSettings("car_ui", "ui")
|
||||
if settings.contains("ui/language"):
|
||||
return
|
||||
theme_key = settings.value("display/theme", "night")
|
||||
app.setStyleSheet(THEME_NIGHT if theme_key != "day" else THEME_DAY)
|
||||
dialog = LanguageDialog()
|
||||
if dialog.exec() == LanguageDialog.Accepted:
|
||||
settings.setValue("ui/language", dialog.selected_language())
|
||||
|
||||
@ -167,4 +167,27 @@ QMenu::item:selected { background: #F3F4F6; }
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#LanguageDialog { background: #F4F6F8; }
|
||||
#LanguageCard {
|
||||
background: #FFFFFF;
|
||||
border-radius: 16px;
|
||||
border: 1px solid #E5E7EB;
|
||||
}
|
||||
#LanguageTitle { color: #111827; }
|
||||
#LanguageOption {
|
||||
background: #FFFFFF;
|
||||
color: #111827;
|
||||
border-radius: 12px;
|
||||
border: 1px solid #E5E7EB;
|
||||
padding: 8px 14px;
|
||||
}
|
||||
#LanguageOption:checked { background: #E5E7EB; }
|
||||
#LanguageConfirm {
|
||||
background: #111827;
|
||||
color: #FFFFFF;
|
||||
border-radius: 12px;
|
||||
padding: 10px 16px;
|
||||
}
|
||||
#LanguageConfirm:hover { background: #0B1220; }
|
||||
"""
|
||||
|
||||
@ -154,4 +154,26 @@ QMenu::item:selected { background: #1B2330; }
|
||||
font-size: 14px;
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
#LanguageDialog { background: #0B0E11; }
|
||||
#LanguageCard {
|
||||
background: #141A22;
|
||||
border-radius: 16px;
|
||||
}
|
||||
#LanguageTitle { color: #E6EAF0; }
|
||||
#LanguageOption {
|
||||
background: #141A22;
|
||||
color: #E6EAF0;
|
||||
border-radius: 12px;
|
||||
border: 1px solid #1B2330;
|
||||
padding: 8px 14px;
|
||||
}
|
||||
#LanguageOption:checked { background: #2A3A52; }
|
||||
#LanguageConfirm {
|
||||
background: #2A3A52;
|
||||
color: #E6EAF0;
|
||||
border-radius: 12px;
|
||||
padding: 10px 16px;
|
||||
}
|
||||
#LanguageConfirm:hover { background: #344968; }
|
||||
"""
|
||||
|
||||
77
ui/language_dialog.py
Normal file
77
ui/language_dialog.py
Normal file
@ -0,0 +1,77 @@
|
||||
from PySide6.QtCore import Qt, QSize
|
||||
from PySide6.QtGui import QFont
|
||||
from PySide6.QtWidgets import (
|
||||
QDialog,
|
||||
QWidget,
|
||||
QLabel,
|
||||
QVBoxLayout,
|
||||
QHBoxLayout,
|
||||
QPushButton,
|
||||
QButtonGroup,
|
||||
QSpacerItem,
|
||||
QSizePolicy,
|
||||
)
|
||||
|
||||
|
||||
class LanguageDialog(QDialog):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
self.setObjectName("LanguageDialog")
|
||||
self.setWindowFlags(Qt.FramelessWindowHint | Qt.Dialog)
|
||||
self.setWindowModality(Qt.ApplicationModal)
|
||||
self.setMinimumSize(QSize(1024, 600))
|
||||
|
||||
root = QVBoxLayout(self)
|
||||
root.setContentsMargins(24, 24, 24, 24)
|
||||
root.setSpacing(16)
|
||||
|
||||
root.addItem(QSpacerItem(10, 10, QSizePolicy.Minimum, QSizePolicy.Expanding))
|
||||
|
||||
card = QWidget()
|
||||
card.setObjectName("LanguageCard")
|
||||
card_layout = QVBoxLayout(card)
|
||||
card_layout.setContentsMargins(18, 18, 18, 18)
|
||||
card_layout.setSpacing(14)
|
||||
|
||||
title = QLabel("Сначала выберите язык")
|
||||
title.setObjectName("LanguageTitle")
|
||||
title.setFont(QFont("", 20, 700))
|
||||
title.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
|
||||
|
||||
options_row = QHBoxLayout()
|
||||
options_row.setContentsMargins(0, 0, 0, 0)
|
||||
options_row.setSpacing(12)
|
||||
|
||||
self._group = QButtonGroup(self)
|
||||
self._group.setExclusive(True)
|
||||
|
||||
self._btn_ru = QPushButton("Русский")
|
||||
self._btn_ru.setObjectName("LanguageOption")
|
||||
self._btn_ru.setCheckable(True)
|
||||
self._btn_ru.setChecked(True)
|
||||
self._btn_ru.setMinimumHeight(48)
|
||||
self._btn_ru.setFont(QFont("", 14, 600))
|
||||
self._group.addButton(self._btn_ru)
|
||||
|
||||
options_row.addWidget(self._btn_ru, 1)
|
||||
options_row.addStretch(1)
|
||||
|
||||
confirm = QPushButton("Продолжить")
|
||||
confirm.setObjectName("LanguageConfirm")
|
||||
confirm.setMinimumHeight(52)
|
||||
confirm.setFont(QFont("", 15, 700))
|
||||
confirm.clicked.connect(self.accept)
|
||||
|
||||
card_layout.addWidget(title)
|
||||
card_layout.addLayout(options_row)
|
||||
card_layout.addWidget(confirm)
|
||||
|
||||
root.addWidget(card)
|
||||
root.addItem(QSpacerItem(10, 10, QSizePolicy.Minimum, QSizePolicy.Expanding))
|
||||
|
||||
def reject(self):
|
||||
# Ignore reject to force a language choice.
|
||||
return
|
||||
|
||||
def selected_language(self) -> str:
|
||||
return "ru"
|
||||
Loading…
x
Reference in New Issue
Block a user