diff --git a/app/core/theme.py b/app/core/theme.py index f2ebf64..69f0df6 100644 --- a/app/core/theme.py +++ b/app/core/theme.py @@ -1,10 +1,16 @@ -from PySide6.QtCore import QSettings +from PySide6.QtCore import QSettings, Signal, QObject + +class ThemeManager(QObject): + theme_changed = Signal(str) -class ThemeManager: def __init__(self): + super().__init__() self.settings = QSettings("yobble_messenger", "Theme") self.theme = self.settings.value("theme", "dark") + def get_theme(self): + return self.theme + def is_dark(self): return self.theme == "dark" @@ -12,6 +18,7 @@ class ThemeManager: if theme in ("dark", "light"): self.theme = theme self.settings.setValue("theme", theme) + self.theme_changed.emit(self.theme) # Глобальный экземпляр theme_manager = ThemeManager() diff --git a/app/ui/views/login_view.py b/app/ui/views/login_view.py index f4b638b..e21c237 100644 --- a/app/ui/views/login_view.py +++ b/app/ui/views/login_view.py @@ -55,9 +55,9 @@ class LoginView(QWidget): self.on_login = on_login self.is_dark_theme = theme_manager.is_dark() print("self.is_dark_theme", self.is_dark_theme) - self.setWindowTitle(config.APP_HEADER) - # self.setFixedSize(400, 650) - self.setMinimumSize(400, 650) + # self.setWindowTitle(config.APP_HEADER) + # # self.setFixedSize(400, 650) + # self.setMinimumSize(400, 650) self.lang_combo = None self.is_registration = False @@ -166,9 +166,21 @@ class LoginView(QWidget): self.reg_password_input.textChanged.connect(self.confirm_password_input.on_text_changed) + def _update_window_title(self): + window = self.window() + if not window: + return + + if self.is_registration: + title = f"{localizer.translate('Регистрация')} | {config.APP_HEADER}" + else: + title = f"{localizer.translate('Авторизация')} | {config.APP_HEADER}" + window.setWindowTitle(title) + def render_form(self): self.clear_form() self.clear_main_layout() + self._update_window_title() if self.is_registration: self.title.setText(localizer.translate("Регистрация")) @@ -353,3 +365,4 @@ class LoginView(QWidget): def update_ui_language(self): self.theme_button.setText("🌞" if not self.is_dark_theme else "🌙") self.render_form() + self._update_window_title() diff --git a/main.py b/main.py index 92cf49b..785f5d6 100644 --- a/main.py +++ b/main.py @@ -1,26 +1,36 @@ -from PySide6.QtWidgets import QApplication +from PySide6.QtWidgets import QApplication, QMainWindow from PySide6.QtGui import QIcon from app.controllers.main_controller import MainController +from app.core.theme import theme_manager +import app.core.config as config import sys -import ctypes -def is_admin(): - """Проверяет, запущена ли программа с правами администратора""" - try: - return ctypes.windll.shell32.IsUserAnAdmin() - except: - return False +class MainWindow(QMainWindow): + def __init__(self): + super().__init__() + self.setWindowTitle(config.APP_HEADER) + self.setMinimumSize(400, 650) + + self.controller = MainController() + self.setCentralWidget(self.controller) + + theme_manager.theme_changed.connect(self.apply_theme) + self.apply_theme(theme_manager.get_theme()) + + def apply_theme(self, theme): + if theme == "dark": + self.setStyleSheet("background-color: #2e2e2e;") + else: + self.setStyleSheet("background-color: #f0f0f0;") def main(): app = QApplication(sys.argv) app.setWindowIcon(QIcon("app/icons/logo3.png")) - controller = MainController() - controller.show() + + window = MainWindow() + window.show() + sys.exit(app.exec()) if __name__ == "__main__": - # if not is_admin(): - # # Попытка перезапуска с правами администратора - # ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, " ".join(sys.argv), None, 1) - # sys.exit() - main() + main() \ No newline at end of file