"""
Exemple d'intégration du tableau de bord résumé avec MinimalGUI
"""

from PyQt5.QtWidgets import QMainWindow, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont

from .summary_dashboard import SummaryDashboard


class EnhancedMinimalGUI(QMainWindow):
    """
    Exemple d'extension de MinimalGUI avec bouton tableau de bord
    """
    
    def __init__(self, orchestrator=None):
        super().__init__()
        self.orchestrator = orchestrator
        self.dashboard = None
        
        self.init_ui()
    
    def init_ui(self):
        """Initialiser l'interface avec bouton tableau de bord"""
        self.setWindowTitle("RPA Vision V2 - Enhanced")
        self.setGeometry(100, 100, 400, 250)
        
        central_widget = QWidget()
        self.setCentralWidget(central_widget)
        
        layout = QVBoxLayout()
        central_widget.setLayout(layout)
        
        # Bouton pour ouvrir le tableau de bord
        dashboard_button = QPushButton("📊 Ouvrir Tableau de Bord")
        dashboard_button.setFont(QFont("Arial", 12))
        dashboard_button.setStyleSheet("""
            QPushButton {
                background-color: #2196F3;
                color: white;
                border: none;
                padding: 15px 30px;
                border-radius: 5px;
            }
            QPushButton:hover {
                background-color: #1976D2;
            }
        """)
        dashboard_button.clicked.connect(self.show_dashboard)
        layout.addWidget(dashboard_button)
        
        # Autres contrôles...
        layout.addStretch()
    
    def show_dashboard(self):
        """Afficher le tableau de bord"""
        if not self.orchestrator:
            print("Aucun orchestrateur disponible")
            return
        
        # Créer le tableau de bord si nécessaire
        if not self.dashboard:
            learning_manager = self.orchestrator.learning_manager
            self.dashboard = SummaryDashboard(learning_manager, parent=self)
            
            # Connecter au signal de sélection de tâche
            self.dashboard.task_selected.connect(self.on_task_selected)
        
        # Afficher le tableau de bord
        self.dashboard.show()
        self.dashboard.raise_()
        self.dashboard.activateWindow()
    
    def on_task_selected(self, task_id: str):
        """
        Gestionnaire de sélection de tâche depuis le tableau de bord
        
        Args:
            task_id: ID de la tâche sélectionnée
        """
        print(f"Tâche sélectionnée: {task_id}")
        
        # Ici, on pourrait:
        # - Charger la tâche dans l'orchestrateur
        # - Afficher plus de détails
        # - Permettre la modification de la tâche
        # etc.


# Exemple d'utilisation avec l'orchestrateur
def example_usage():
    """Exemple d'utilisation du tableau de bord"""
    from PyQt5.QtWidgets import QApplication
    import sys
    
    # Créer l'application
    app = QApplication(sys.argv)
    
    # Créer l'orchestrateur (simulé ici)
    class MockOrchestrator:
        def __init__(self):
            # Simuler un learning_manager
            from datetime import datetime
            
            class MockLearningManager:
                def get_all_tasks(self):
                    return [
                        {
                            "task_id": "task_001",
                            "task_name": "Ouvrir Facture",
                            "mode": "auto",
                            "confidence_score": 0.97,
                            "observation_count": 45,
                            "concordance_rate": 0.98,
                            "correction_count": 1,
                            "correction_rate": 0.022,
                            "last_execution": datetime.now().isoformat()
                        },
                        {
                            "task_id": "task_002",
                            "task_name": "Valider Commande",
                            "mode": "assist",
                            "confidence_score": 0.89,
                            "observation_count": 12,
                            "concordance_rate": 0.92,
                            "correction_count": 2,
                            "correction_rate": 0.167,
                            "last_execution": datetime.now().isoformat()
                        }
                    ]
                
                def get_task_stats(self):
                    return {
                        "total_tasks": 2,
                        "shadow_tasks": 0,
                        "assist_tasks": 1,
                        "auto_tasks": 1,
                        "current_mode": "assist"
                    }
            
            self.learning_manager = MockLearningManager()
    
    orchestrator = MockOrchestrator()
    
    # Créer l'interface
    gui = EnhancedMinimalGUI(orchestrator)
    gui.show()
    
    # Afficher automatiquement le tableau de bord
    gui.show_dashboard()
    
    sys.exit(app.exec_())


if __name__ == "__main__":
    example_usage()
