# This Python file uses the following encoding: utf-8
import toml
from platformdirs import user_config_dir
from pathlib import Path
from PySide6.QtCore import QObject, Slot
from .Vermasseln import Vermasseln
import shutil
from urllib.parse import urlparse
import os

class ConfigLoader(QObject):
    __config = None

    def __init__(self):
        super().__init__()
        self.config_dir = user_config_dir() + '/pyqcrm' #user_config_dir = Funktion platformdirs
        config_dir = Path(self.config_dir)

        if config_dir.exists():
            self.__configLoad()
        else:
            config_dir.mkdir(0o750, True, True)

    @Slot(str, str)
    def importConfig(self, confile, password):

        confile = urlparse(confile)
        confile = confile.path

        if os.name == "nt":
            confile = confile[1:]
        shutil.copyfile(confile, self.config_dir+ '/pyqcrm.toml')

    @Slot(dict)
    def setConfig(self, app_config):
        try:
            with open (self.config_dir + '/pyqcrm.toml', 'w') as f:
                config = Vermasseln().oscarVermasseln(toml.dumps(app_config))
                f.write(config)
        except FileNotFoundError:
            print("Konnte die Konfiguration nicht speichern.")


    def __configLoad(self):
        try:
            with open (self.config_dir + '/pyqcrm.toml', 'r') as f:
                config = f.read()
                self.__config = toml.loads(Vermasseln().entschluesseln(config))
        except FileNotFoundError:
            print("Konnte die Konfiguration nicht laden.")



    def getConfig(self):

        return self.__config

    def createConfig(self):

        with open(self.config_dir + '/pyqcrm.toml', "w") as datei:
            datei.write("[pyqcrm]")
