Controller.settings_controller 源代码

"""
设置控制器模块

负责应用设置的管理、保存、加载等功能
"""

from typing import Dict, Any
from PySide6.QtCore import Signal

from .base_controller import BaseController


[文档] class SettingsController(BaseController): """ 设置控制器 负责应用设置的管理、保存、加载等功能 """ # 设置相关信号 settings_loaded = Signal(dict) # 设置数据 settings_saved = Signal() settings_changed = Signal(str, object) # 设置项名称, 新值
[文档] def __init__(self, parent=None): """初始化设置控制器""" super().__init__(parent) self._settings = { "game": { "minecraft_directory": "", "java_path": "", "max_memory": 2048, "jvm_args": "-XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200", "resolution_width": 854, "resolution_height": 480, "fullscreen": False, }, "launcher": { "language": "zh_CN", "theme": "dark", "check_updates": True, "close_launcher_when_game_starts": True, }, "download": { "download_source": "official", "concurrent_downloads": 3, "download_assets": True, "download_libraries": True, }, }
[文档] def initialize(self) -> bool: """ 初始化控制器 Returns: bool: 初始化是否成功 """ # 加载设置 self.load_settings() return True
[文档] def load_settings(self) -> None: """加载设置""" # 异步加载设置 self.run_async_task("load_settings", self._async_load_settings)
def _async_load_settings(self) -> Dict[str, Any]: """ 异步加载设置 Returns: Dict[str, Any]: 设置数据 """ # TODO: 从Core层加载设置 # 模拟加载设置 import time time.sleep(0.5) # 发送设置加载信号 self.settings_loaded.emit(self._settings) return self._settings
[文档] def save_settings(self) -> None: """保存设置""" # 异步保存设置 self.run_async_task("save_settings", self._async_save_settings)
def _async_save_settings(self) -> bool: """ 异步保存设置 Returns: bool: 保存是否成功 """ # TODO: 调用Core层保存设置 # 模拟保存设置 import time time.sleep(0.5) # 发送设置保存信号 self.settings_saved.emit() return True
[文档] def get_setting(self, section: str, key: str, default=None) -> Any: """ 获取设置项 Args: section: 设置分区 key: 设置项键名 default: 默认值 Returns: Any: 设置项值 """ if section in self._settings and key in self._settings[section]: return self._settings[section][key] return default
[文档] def set_setting(self, section: str, key: str, value: Any) -> None: """ 设置设置项 Args: section: 设置分区 key: 设置项键名 value: 设置项值 """ if section not in self._settings: self._settings[section] = {} # 检查值是否变化 old_value = self._settings[section].get(key) if old_value != value: self._settings[section][key] = value self.settings_changed.emit(f"{section}.{key}", value)
[文档] def get_all_settings(self) -> Dict[str, Dict[str, Any]]: """ 获取所有设置 Returns: Dict[str, Dict[str, Any]]: 所有设置 """ return self._settings