from PySide6.QtCore import QSettings import logging class SettingsManager: def __init__(self, logger): self.logger = logger self.settings = QSettings("WhenRideMycar", "AutoPercenty3") def save_user_info(self, user_info: dict): for key, value in user_info.items(): self.settings.setValue(f"user/{key}", value) self.settings.sync() def load_user_info(self) -> dict: info = {} for key in ["email", "password", "id", "membership_level", "name"]: info[key] = self.settings.value(f"user/{key}", "") return info def save_gui_settings(self, toggle_states: dict): """ GUI에서 사용하는 각종 토글 및 기타 설정 정보를 저장합니다. """ for key, value in toggle_states.items(): self.settings.setValue(f"toggle/{key}", value) self.settings.sync() def load_gui_settings(self) -> dict: """ 저장된 GUI 토글 및 기타 설정을 불러와 딕셔너리로 반환합니다. """ loaded = {} # 토글 키 목록 예시 toggle_keys = ["title", "use_API", "optionTrnas", "optionIMGTrans", "optionAutoSelect", "price", "thumb", "tag", "detail_Option", "detail_IMGTrans", "debug_mode", "recovery_mode", "ed_mode", "watermark", "opacity_percent", "max_option_count", "clientID", "clientSecret"] for key in toggle_keys: # 기본값은 False 또는 0, "" 등으로 설정 (필요에 따라 조정) loaded[key] = self.settings.value(f"toggle/{key}", False) return loaded def save_session_id(self, session_id: str) -> None: """ 사용자 세션 ID를 저장합니다. :param session_id: 저장할 세션 ID """ try: self.settings.setValue("session/id", session_id) self.settings.sync() self.logger.log(f"세션 ID 저장 완료: {session_id}", level=logging.DEBUG) except Exception as e: self.logger.log(f"세션 ID 저장 실패: {e}", level=logging.ERROR) def get_session_id(self) -> str: """ 저장된 세션 ID를 반환합니다. :return: 세션 ID 또는 빈 문자열 """ try: session_id = self.settings.value("session/id", "") return session_id except Exception as e: self.logger.log(f"세션 ID 불러오기 실패: {e}", level=logging.ERROR) return "" def remove_session_id(self) -> None: """ 저장된 세션 ID를 제거합니다. """ try: self.settings.remove("session/id") self.settings.sync() self.logger.log("세션 ID 제거 완료", level=logging.DEBUG) except Exception as e: self.logger.log(f"세션 ID 제거 실패: {e}", level=logging.ERROR)