# -*- coding: utf-8 -*- """ 팀확인 다이얼로그 모듈 레코드의 팀 확인 상태를 관리하는 다이얼로그입니다. """ from typing import Dict from PySide6.QtWidgets import QVBoxLayout, QDialogButtonBox from PySide6.QtCore import Qt from ui.base.base_dialog import BaseDialog from ui.components.team_confirmation_widget import TeamConfirmationWidget from database.models import SectionBase from core.logger import get_logger import json logger = get_logger(__name__) class TeamConfirmationDialog(BaseDialog): """ 팀확인 다이얼로그 레코드의 팀 확인 상태를 토글 방식으로 관리합니다. """ def __init__(self, parent=None, record: SectionBase = None): super().__init__(parent, title="팀 확인") self.record = record self.confirmations = {} if record: try: self.confirmations = json.loads(record.team_confirmations) if isinstance(record.team_confirmations, str) else record.team_confirmations if not isinstance(self.confirmations, dict): self.confirmations = {} except (json.JSONDecodeError, TypeError): self.confirmations = {} self._setup_ui() def _setup_ui(self): """UI 설정""" # 팀확인 위젯 self.confirmation_widget = TeamConfirmationWidget(self.confirmations, self) self.confirmation_widget.confirmation_changed.connect(self._on_confirmation_changed) self.content_layout.addWidget(self.confirmation_widget) # 버튼 button_box = QDialogButtonBox( QDialogButtonBox.Ok | QDialogButtonBox.Cancel, Qt.Horizontal, self ) button_box.accepted.connect(self.accept) button_box.rejected.connect(self.reject) self.content_layout.addWidget(button_box) def _on_confirmation_changed(self, team: str, confirmed: bool): """확인 상태 변경""" self.confirmations[team] = confirmed logger.debug(f"팀 확인 상태 변경: {team} = {confirmed}") def get_confirmations(self) -> Dict[str, bool]: """확인 상태 반환""" return self.confirmations.copy()