import customtkinter as ctk

class NotificationView(ctk.CTkToplevel):
    """우측 하단에 나타나는 커스텀 알림 창"""
    def __init__(self, controller, title, msg, voc_id=None):
        super().__init__()
        self.controller = controller
        self.voc_id = voc_id
        
        # 1. 창 설정 (타이틀바 없음, 최상위)
        self.overrideredirect(True)
        self.attributes('-topmost', True)
        self.title("VOC 알림")
        
        # 2. 디자인 및 레이아웃
        # 다크 모드 배경
        self.configure(fg_color="#333333")
        
        # 메인 컨테이너
        container = ctk.CTkFrame(self, fg_color="transparent")
        container.pack(fill="both", expand=True, padx=15, pady=15)
        
        # 제목
        ctk.CTkLabel(
            container, 
            text=title, 
            font=("Gmarket Sans Bold", 14), 
            text_color="#3B8ED0" # 포인트 컬러
        ).pack(anchor="w", pady=(0, 5))
        
        # 내용
        ctk.CTkLabel(
            container, 
            text=msg, 
            wraplength=280, 
            justify="left",
            font=("Gmarket Sans", 12)
        ).pack(anchor="w")
        
        # 클릭 이벤트 바인딩 (전체 영역)
        for widget in [self, container] + container.winfo_children():
            widget.bind("<Button-1>", self._on_click)
            widget.bind("<Enter>", lambda e: self.configure(cursor="hand2"))
            widget.bind("<Leave>", lambda e: self.configure(cursor=""))

        # 3. 위치 지정 (우측 하단)
        self.update_idletasks()
        w, h = 320, 100 # 기본 크기
        screen_w = self.winfo_screenwidth()
        screen_h = self.winfo_screenheight()
        # 작업 표시줄 높이 대략 고려 (40~50px)
        x = screen_w - w - 20
        y = screen_h - h - 60
        self.geometry(f"{w}x{h}+{x}+{y}")
        
        # 4. 자동 종료 예약
        self.after(5000, self.destroy)
        
    def _on_click(self, event):
        """알림 클릭 시 상세 정보 열기"""
        if self.voc_id:
            self.controller.request_detail_popup(self.voc_id)
        self.destroy()
