76 lines
2.5 KiB
Python
76 lines
2.5 KiB
Python
import sys
|
|
from pathlib import Path
|
|
|
|
from PySide6.QtCore import QSettings
|
|
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)
|
|
window.show()
|
|
sys.exit(app.exec())
|
|
|
|
|
|
def _apply_startup_sound_defaults():
|
|
settings = QSettings("car_ui", "ui")
|
|
base_volume = build_info.DEFAULT_SOUND_VOLUME
|
|
premute_volume = build_info.DEFAULT_PREMUTE_VOLUME
|
|
ducking_volume = build_info.DEFAULT_DUCKING_VOLUME
|
|
|
|
if not settings.contains("sound/base_volume"):
|
|
settings.setValue("sound/base_volume", base_volume)
|
|
if not settings.contains("sound/premute_volume"):
|
|
settings.setValue("sound/premute_volume", premute_volume)
|
|
if not settings.contains("sound/ducking_volume"):
|
|
settings.setValue("sound/ducking_volume", ducking_volume)
|
|
|
|
applied_volume = settings.value("sound/base_volume", base_volume)
|
|
try:
|
|
applied_volume = int(applied_volume)
|
|
except (TypeError, ValueError):
|
|
applied_volume = base_volume
|
|
set_volume(applied_volume)
|
|
|
|
|
|
def _apply_startup_display_defaults():
|
|
settings = QSettings("car_ui", "ui")
|
|
if not settings.contains("display/brightness"):
|
|
settings.setValue("display/brightness", 70)
|
|
if not settings.contains("display/auto_brightness"):
|
|
settings.setValue("display/auto_brightness", False)
|
|
if not settings.contains("display/theme"):
|
|
settings.setValue("display/theme", "night")
|
|
|
|
|
|
def _apply_reset_if_requested():
|
|
reset_marker = Path(__file__).resolve().parent / "reset"
|
|
if not reset_marker.exists():
|
|
return
|
|
settings = QSettings("car_ui", "ui")
|
|
settings_path = Path(settings.fileName())
|
|
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())
|