'''
Boite de dialogue d'édition des paramètres utilisateurs.

@author: olivier.massot, sept. 2017
'''
from PyQt5.Qt import QFileDialog
from PyQt5.QtWidgets import QDialog, QApplication
import yaml

from core import config
from core.constants import USER_DATA_PATH
from ui.qt.settings_ui import Ui_settings


class SettingsDialog(QDialog):
    def __init__(self):
        super(SettingsDialog, self).__init__()
        self.createWidgets()

    def createWidgets(self):
        self.ui = Ui_settings()
        self.ui.setupUi(self)

        self.ui.tabWidget.setCurrentIndex(0)

        self.ui.btn_repertoire_defaut.clicked.connect(self.majRepInput)
        self.ui.btn_repertoire_sortie.clicked.connect(self.majRepOutput)

        self.ui.btnOk.clicked.connect(self.ok)
        self.ui.btnCancel.clicked.connect(self.cancel)

        self.load()


    def load(self):
        self.ui.txt_repertoire_defaut.setText(config.get("repertoire_defaut"))
        self.ui.txt_repertoire_sortie.setText(config.get("repertoire_sortie"))

        self.ui.txt_RaisonSocialeExploitant.setText(config.get("donnees", "commun", "RaisonSocialeExploitant"))
        self.ui.txt_ContactExploitant.setText(config.get("donnees", "commun", "ContactExploitant"))
        self.ui.txt_NoVoieExploitant.setText(config.get("donnees", "commun", "NoVoieExploitant"))
        self.ui.txt_LieuditBPExploitant.setText(config.get("donnees", "commun", "LieuditBPExploitant"))
        self.ui.txt_CodePostalExploitant.setText(config.get("donnees", "commun", "CodePostalExploitant"))
        self.ui.txt_CommuneExploitant.setText(config.get("donnees", "commun", "CommuneExploitant"))
        self.ui.txt_TelExploitant.setText(config.get("donnees", "commun", "TelExploitant"))
        self.ui.txt_FaxExploitant.setText(config.get("donnees", "commun", "FaxExploitant"))
        self.ui.txt_NomResponsableDossier.setText(config.get("donnees", "commun", "NomResponsableDossier"))
        self.ui.txt_DesignationService.setText(config.get("donnees", "commun", "DésignationService"))
        self.ui.txt_TelResponsableDossier.setText(config.get("donnees", "commun", "TelResponsableDossier"))
        self.ui.txt_TelEndommagement.setText(config.get("donnees", "commun", "TelEndommagement"))
        self.ui.txt_NomSignataire.setText(config.get("donnees", "commun", "NomSignataire"))


    def majRepInput(self):
        inputRep = QFileDialog.getExistingDirectory(self, "Répertoire d'entrée", "")
        if inputRep :
            self.ui.txt_repertoire_defaut.setText(inputRep)

    def majRepOutput(self):
        outputRep = QFileDialog.getExistingDirectory(self, "Répertoire de sortie", "")
        if outputRep :
            self.ui.txt_repertoire_sortie.setText(outputRep)

    def save(self):

        new_config = {}

        new_config["repertoire_defaut"] = self.ui.txt_repertoire_defaut.text()
        new_config["repertoire_sortie"] = self.ui.txt_repertoire_sortie.text()

        new_config["donnees"] = {}
        new_config["donnees"]["commun"] = {}
        new_config["donnees"]["commun"]["RaisonSocialeExploitant"] = self.ui.txt_RaisonSocialeExploitant.text()
        new_config["donnees"]["commun"]["ContactExploitant"] = self.ui.txt_ContactExploitant.text()
        new_config["donnees"]["commun"]["NoVoieExploitant"] = self.ui.txt_NoVoieExploitant.text()
        new_config["donnees"]["commun"]["LieuditBPExploitant"] = self.ui.txt_LieuditBPExploitant.text()
        new_config["donnees"]["commun"]["CodePostalExploitant"] = self.ui.txt_CodePostalExploitant.text()
        new_config["donnees"]["commun"]["CommuneExploitant"] = self.ui.txt_CommuneExploitant.text()
        new_config["donnees"]["commun"]["TelExploitant"] = self.ui.txt_TelExploitant.text()
        new_config["donnees"]["commun"]["FaxExploitant"] = self.ui.txt_FaxExploitant.text()
        new_config["donnees"]["commun"]["NomResponsableDossier"] = self.ui.txt_NomResponsableDossier.text()
        new_config["donnees"]["commun"]["DésignationService"] = self.ui.txt_DesignationService.text()
        new_config["donnees"]["commun"]["TelResponsableDossier"] = self.ui.txt_TelResponsableDossier.text()
        new_config["donnees"]["commun"]["TelEndommagement"] = self.ui.txt_TelEndommagement.text()
        new_config["donnees"]["commun"]["NomSignataire"] = self.ui.txt_NomSignataire.text()

        with open(USER_DATA_PATH, "w+") as f:
            yaml.dump(new_config, f)

        # recharge la configuration de l'appli
        config.load()

    def cancel(self):
        self.done(0)

    def ok(self):
        self.save()
        self.done(1)

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    config.load()
    dlg = SettingsDialog()
    dlg.show()
    dlg.exec_()
    exit(0)
