30 lines
		
	
	
		
			892 B
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			30 lines
		
	
	
		
			892 B
		
	
	
	
		
			Python
		
	
	
	
	
	
from PySide6.QtCore import QSettings, Signal, QObject
 | 
						|
 | 
						|
class ThemeManager(QObject):
 | 
						|
    theme_changed = Signal(str)
 | 
						|
 | 
						|
    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"
 | 
						|
 | 
						|
    def set_theme(self, theme: str):
 | 
						|
        if theme in ("dark", "light"):
 | 
						|
            self.theme = theme
 | 
						|
            self.settings.setValue("theme", theme)
 | 
						|
            self.theme_changed.emit(self.theme)
 | 
						|
 | 
						|
    def toggle_theme(self):
 | 
						|
        """Переключает тему между светлой и темной."""
 | 
						|
        new_theme = "light" if self.is_dark() else "dark"
 | 
						|
        self.set_theme(new_theme)
 | 
						|
 | 
						|
# Глобальный экземпляр
 | 
						|
theme_manager = ThemeManager()
 |