"""
Module xây dựng thanh điều khiển chính (Header) của Control Center GUI.
Bao gồm thông tin tiêu đề, trạng thái Admin/Companion và các nút hành động nhanh (F8, F11, F10, Panic).
"""

import ctypes
import customtkinter as ctk
from src.assistant_tool import ui_theme as theme


def create_header(app, parent: ctk.CTkFrame) -> None:
    """
    Tạo Header và gắn các widget vào instance `app`.
    """
    header = ctk.CTkFrame(parent, fg_color=theme.c("bg_header"), corner_radius=0, height=theme.HEADER_HEIGHT)
    header.pack(fill="x", side="top")
    header.pack_propagate(False)

    title_frame = ctk.CTkFrame(header, fg_color="transparent")
    title_frame.pack(side="left", padx=10, pady=2)

    app.lbl_window_title = ctk.CTkLabel(
        title_frame,
        text="AutoPOE2",
        font=ctk.CTkFont(family="Segoe UI", size=14, weight="bold"),
        text_color=theme.c("accent_gold")
    )
    app.lbl_window_title.pack(anchor="w")

    is_admin = False
    try:
        is_admin = ctypes.windll.shell32.IsUserAnAdmin() != 0
    except Exception:
        pass
    admin_text = "Admin" if is_admin else "User · Core tự UAC khi F8"
    admin_color = theme.c("ok") if is_admin else theme.c("warn")

    app.lbl_header_status = ctk.CTkLabel(
        title_frame,
        text=f"Companion ↔ Core SHM  |  {admin_text}",
        font=ctk.CTkFont(family="Segoe UI", size=10),
        text_color=admin_color
    )
    app.lbl_header_status.pack(anchor="w")

    btn_frame = ctk.CTkFrame(header, fg_color="transparent")
    btn_frame.pack(side="right", padx=8, pady=4)

    app.btn_toggle_bot = ctk.CTkButton(
        btn_frame,
        text="▶ BẮT ĐẦU BOT [F8]",
        font=ctk.CTkFont(family="Segoe UI", size=11, weight="bold"),
        fg_color=theme.c("start"),
        hover_color=theme.c("start_hover"),
        width=150,
        height=28,
        command=app._on_toggle_bot_clicked
    )
    app.btn_toggle_bot.pack(side="left", padx=2)

    app.btn_recalibrate = ctk.CTkButton(
        btn_frame,
        text="🎯 Định Vị XYZ (F11)",
        font=ctk.CTkFont(size=11, weight="bold"),
        fg_color=theme.c("blue"),
        hover_color=theme.c("blue_hover"),
        width=130,
        height=28,
        command=app._on_recalibrate_clicked
    )
    app.btn_recalibrate.pack(side="left", padx=2)

    app.btn_tactical_brain = ctk.CTkButton(
        btn_frame,
        text="🧠 F10",
        font=ctk.CTkFont(size=11, weight="bold"),
        fg_color=theme.c("spirit"),
        hover_color=theme.c("spirit_hover"),
        width=58,
        height=28,
        command=app._on_tactical_brain_clicked
    )
    app.btn_tactical_brain.pack(side="left", padx=2)

    app.btn_panic = ctk.CTkButton(
        btn_frame,
        text="🛑 Panic Stop",
        font=ctk.CTkFont(size=11, weight="bold"),
        fg_color=theme.c("alert_red"),
        hover_color=theme.c("alert_hover"),
        width=92,
        height=28,
        command=app._on_panic_clicked
    )
    app.btn_panic.pack(side="left", padx=2)
