# -*- coding: utf-8 -*-
# handler.py

import os
from qtvcp.core import Handler, Info
from qtvcp.widgets.widget_base import WidgetBase
from PyQt5.QtWidgets import QPushButton

print("Plik handler.py został załadowany przez Pythona.")

# Pobierz sciezke do naszej konfiguracji
PATH = Info().get_config_path()

class MyHandler(Handler):
    """
    Główna klasa handlera, która dynamicznie ładuje zakładkę użytkownika.
    WERSJA DEBUG.
    """

    def __init__(self, *args, **kwargs):
        """
        Metoda __init__ jest wywoływana przy starcie.
        """
        super(MyHandler, self).__init__(*args, **kwargs)
        print(">>> HANDLER: __init__ został wykonany. Obiekt MyHandler stworzony.")

        # Tworzymy pin HAL dla naszego własnego przycisku
        self.my_custom_button_pin = self.hal.newpin("wlasny-przycisk_is-on", "HAL_BIT", "out")
        print(f">>> HANDLER: Pin HAL '{self.my_custom_button_pin.name}' został stworzony.")

    def initialized(self):
        """
        Ta metoda jest wywoływana, gdy interfejs jest już załadowany.
        Tutaj wczytujemy nasz plik UI i wstawiamy go do stackedWidget.
        """
        print(">>> HANDLER: Metoda 'initialized' została wywołana.")

        # Ścieżka do naszego pliku UI z zawartością zakładki
        user_tab_ui_file = os.path.join(PATH, 'qtvcp', 'screens', 'qtdragon_hd', 'my_user_tab.ui')
        print(f">>> HANDLER: Sprawdzam ścieżkę do pliku UI: {user_tab_ui_file}")

        if not os.path.exists(user_tab_ui_file):
            print(">>> HANDLER: BŁĄD KRYTYCZNY! Nie znaleziono pliku my_user_tab.ui. Przycisk 'USER' nie zostanie aktywowany.")
            self.widgets.btn_user.setVisible(False)
            return
        
        print(">>> HANDLER: Plik my_user_tab.ui ZOSTAŁ ZNALEZIONY. Próbuję go załadować.")

        # Załaduj zawartość z pliku .ui do nowego widżetu
        self.user_tab_widget = WidgetBase()
        self.user_tab_widget.load_ui(user_tab_ui_file)
        print(">>> HANDLER: Plik UI załadowany pomyślnie do widżetu.")

        # Główne QStackedWidget z oryginalnego UI
        main_stack = self.widgets.stackedWidget_mainTab
        user_button = self.widgets.btn_user
        target_index = user_button.property('index')

        # Wstawiamy nasz nowy widżet
        main_stack.insertWidget(target_index, self.user_tab_widget)
        print(f">>> HANDLER: Widżet wstawiony do stackedWidget_mainTab na indeksie {target_index}.")
        
        # Upewnij się, że przycisk USER jest widoczny
        user_button.setVisible(True)
        print(">>> HANDLER: Próba ustawienia przycisku 'btn_user' jako WIDOCZNY.")

        # Znajdź nasz własny przycisk w załadowanym widżecie i połącz jego sygnał
        my_button = self.user_tab_widget.findChild(QPushButton, 'moj_wlasny_przycisk_1')
        if my_button:
            my_button.clicked.connect(self.on_my_custom_button_clicked)
            print(">>> HANDLER: Znaleziono 'moj_wlasny_przycisk_1' i połączono jego sygnał 'clicked'.")
        else:
            print(">>> HANDLER: OSTRZEŻENIE: Nie znaleziono przycisku 'moj_wlasny_przycisk_1' w my_user_tab.ui")

    def on_my_custom_button_clicked(self):
        current_state = self.my_custom_button_pin.get()
        self.my_custom_button_pin.set(not current_state)
        print(f">>> HANDLER: Kliknięto własny przycisk! Nowy stan pinu HAL: {not current_state}")
