import tkinter as tk
from tkinter import ttk, messagebox
from app.email.emailClient import EmailClient
import threading

class EmailTab:
    def __init__(self, notebook, panel_derecho):
        self.panel_derecho = panel_derecho  # Referencia al Panel Derecho
        self.email_client = EmailClient()

        self.tab = ttk.Frame(notebook)
        notebook.add(self.tab, text="\U0001F4E7 Correo")
        self.setup_ui()

    def setup_ui(self):
        """Configura la interfaz gráfica de la pestaña de correo."""
        frame_principal = tk.Frame(self.tab, bg="white", padx=10, pady=10)
        frame_principal.pack(fill="both", expand=True)
        frame_principal.columnconfigure(0, weight=1)

        # Enviar correo
        tk.Label(frame_principal, text="✉️ Enviar Correo", font=("Helvetica", 14, "bold"), bg="white").grid(row=1, column=0, pady=5)

        frame_envio = tk.Frame(frame_principal, bg="white")
        frame_envio.grid(row=2, column=0, pady=5, sticky="ew")
        frame_envio.columnconfigure(1, weight=1)

        tk.Label(frame_envio, text="Para:", font=("Helvetica", 11), bg="white").grid(row=0, column=0, sticky="w")
        self.entry_destinatario = tk.Entry(frame_envio, font=("Helvetica", 11))
        self.entry_destinatario.grid(row=0, column=1, sticky="ew", padx=5)

        tk.Label(frame_envio, text="Asunto:", font=("Helvetica", 11), bg="white").grid(row=1, column=0, sticky="w")
        self.entry_asunto = tk.Entry(frame_envio, font=("Helvetica", 11))
        self.entry_asunto.grid(row=1, column=1, sticky="ew", padx=5)

        tk.Label(frame_envio, text="Mensaje:", font=("Helvetica", 11), bg="white").grid(row=2, column=0, sticky="w", pady=3)
        self.text_mensaje = tk.Text(frame_envio, height=5, font=("Helvetica", 11))
        self.text_mensaje.grid(row=3, column=0, columnspan=2, sticky="ew", padx=5)

        # Botón de enviar
        tk.Button(
            frame_envio, text="📨 Enviar Correo",
            font=("Helvetica", 11, "bold"), bg="green", fg="white",
            command=self.enviar_correo
        ).grid(row=4, column=0, columnspan=2, pady=10)

    def enviar_correo(self):
        """Envía un correo en un hilo separado."""
        email, password = self.panel_derecho.get_credentials()  # Obtener credenciales del panel derecho

        if not email or not password:
            messagebox.showerror("Error", "⚠️ Debes iniciar sesión primero en el Panel Derecho.")
            return

        def envio():
            self.email_client.enviar_correo(
                email,
                password,
                self.entry_destinatario.get(),
                self.entry_asunto.get(),
                self.text_mensaje.get("1.0", tk.END).strip()
            )
            messagebox.showinfo("Éxito", "✅ Correo enviado correctamente.")
            self.entry_destinatario.delete(0, tk.END)
            self.entry_asunto.delete(0, tk.END)
            self.text_mensaje.delete("1.0", tk.END)

        threading.Thread(target=envio, daemon=True).start()


