80 lines
2.9 KiB
Python
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)
|