import inspect
import os
import sys
from os.path import dirname, abspath, join

import time
from PyQt6.QtCore import QVariant, pyqtSignal, pyqtSlot, Qt
from PyQt6.QtCore import pyqtProperty
from PyQt6.QtGui import QIcon
from PyQt6.QtGui import QMovie
from PyQt6.QtWidgets import QApplication
from PyQt6.QtWidgets import QDockWidget, QTreeWidgetItem
from PyQt6.uic import loadUi

sys.path.append(os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe()) + "\\..\\..")))
from IFikatia import IFikatia
from IProcessDokuman import IProcessDokuman
from IDialoglar.IFikoDokumantasyon.threadManager import Async


class QDockSol(QDockWidget):
    sinyal = pyqtSignal(str, QVariant)

    def __init__(self, parent=None, widget=None):
        super(QDockSol, self).__init__()

        self.ScriptYolu = dirname(abspath(
                inspect.getfile(inspect.currentframe())))
        self.ui = loadUi(self.ScriptYolu + r'\\formAna.ui', self)
        # self.setTitleBarWidget(QWidget())
        self.fikatia = parent.fikatia
        self.processDokuman = self.fikatia.aktifDokuman.asProcessDokuman

        self.sahip = parent

        # AÇIKLAMA İndicatör Animasyon
        lbl = self.ui.labelMesgulLogo
        movie = QMovie(join(self.ScriptYolu, "..", "Resimler", "load1.gif"))
        lbl.setMovie(movie)
        lbl.show()
        movie.start()

        # self.listeTumProgramlariAl()
        self.sinyal.connect(self.sinyalFunc)

        # --->

    @pyqtSlot(str, QVariant)
    def sinyalFunc(self, ismi, params):
        if ismi == "uyariGoster":
            self.ui.stackedWidget.setCurrentIndex(2)
            self.ui.progressMesgul.setMaximum(
                    self.ui.progressMesgul.maximum() if not "max" in params else params["max"])
            self.ui.progressMesgul.setValue(
                    self.ui.progressMesgul.value() if not "value" in params else params["value"])
            self.ui.labelMesgul.setText(self.ui.labelMesgul.text() if not "mesaj" in params else params["mesaj"])
        elif ismi == "listeTemizle":
            pass
        elif ismi == "gecerliSayfa":
            if not "sayfa" in params:
                self.ui.stackedWidget.setCurrentIndex(0)
            else:
                if isinstance(params["sayfa"],int):
                    self.ui.stackedWidget.setCurrentIndex(params["sayfa"])
                elif isinstance(params["sayfa"],str):
                    print("geldii")
                    self.ui.stackedWidget.setCurrentPageName(params["sayfa"])
        elif ismi == "ncListeEsitle":
            pass

    @pyqtSlot()
    def on_actionAnaSayfa_triggered(self):
        self.sinyal.emit("gecerliSayfa", {"sayfa": 0})
        self.sahip.statusAna.ui.progressStatus.setValue(0)
        self.sahip.statusAna.ui.progressStatus.setMaximum(0)

    @pyqtSlot()
    def on_btnTakimlar_clicked(self):
        self.sinyal.emit("gecerliSayfa", {"sayfa": 1})
        self.sahip.statusAna.ui.progressStatus.setValue(25)
        self.sahip.statusAna.ui.progressStatus.setMaximum(100)

    @pyqtSlot()
    def on_btnMagazinYonetimi_clicked(self):
        self.sinyal.emit("gecerliSayfa", {"sayfa": 2})
        self.sahip.statusAna.ui.progressStatus.setValue(60)
        self.sahip.statusAna.ui.progressStatus.setMaximum(100)

    @pyqtSlot()
    def on_btnFirmalar_clicked(self):
        self.sinyal.emit("gecerliSayfa", {"sayfa": 3})
        self.sahip.statusAna.ui.progressStatus.setValue(100)
        self.sahip.statusAna.ui.progressStatus.setMaximum(100)