AutoPercenty3/settings_manager.py

80 lines
2.9 KiB
Python

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)