__copyright__ = "Copyright 2021, 3Liz"
__license__ = "GPL version 3"
__email__ = "info@3liz.org"


from qgis.core import QgsApplication
from qgis.PyQt.QtCore import QCoreApplication, Qt, QTranslator, QUrl
from qgis.PyQt.QtGui import QDesktopServices, QIcon
from qgis.PyQt.QtWidgets import QAction, QMessageBox
from qgis.utils import iface
import qgis


#include <QSettings>
'''
from pg_metadata.connection_manager import (
    store_connections,
    validate_connections_names,
)


from pg_metadata.locator import LocatorFilter
from pg_metadata.processing.provider import PgMetadataProvider
from pg_metadata.qgis_plugin_tools.tools.custom_logging import setup_logger
'''
import os
from .tools.resources import (
    plugin_path,
    resources_path,
    maj_verif,
)
from .canvas_editor import AutoMap_Editor
from .about_form import AutoMapAboutDialog

from PyQt5.QtCore import *

class PgAutoMap:
    def __init__(self):
        """ Constructor. """
        self.canvas_editor = None
#        self.issues = None
        self.provider = None
        self.locator_filter = None
        self.dock_action = None
        self.help_action = None
        plugin_dir = os.path.dirname(__file__)
        end_find = plugin_dir.rfind('\\')+1
        global NAME
        NAME = plugin_dir[end_find:]
        maj_verif(NAME)

        # Display About window on first use
        version = qgis.utils.pluginMetadata('CenIsere_AUTOMAP','version')
        s = QSettings()
        versionUse = s.value("automap/version", 1, type=str)
        if str(versionUse) != str(version) :
            s.setValue("automap/version", str(version))
            print(versionUse,version)
            self.open_about_dialog()

    def initGui(self):
        """ Build the plugin GUI. """

        self.toolBar = iface.addToolBar("CenIsere_AutoMap")
        self.toolBar.setObjectName("CenIsere_AutoMap")

        icon = QIcon(resources_path('icons', 'icon.png'))

        # Open the online help
        self.help_action = QAction(icon, 'CenIsere_AutoMap', iface.mainWindow())
        iface.pluginHelpMenu().addAction(self.help_action)
        self.help_action.triggered.connect(self.open_help)
        if not self.canvas_editor:
            self.canvas_editor = AutoMap_Editor()


            self.automap_action = QAction(icon, 'CenIsere_AutoMap',None)
            self.toolBar.addAction(self.automap_action)
            self.automap_action.triggered.connect(self.open_editor)
    # '''
    #     if not self.locator_filter:
    #         self.locator_filter = LocatorFilter(iface)
    #         iface.registerLocatorFilter(self.locator_filter)

    # @staticmethod
    # def check_invalid_connection_names():
    #     """ Check for invalid connection names in the QgsSettings. """
    #     valid, invalid = validate_connections_names()
    #     n_invalid = len(invalid)

    #     if n_invalid == 0:
    #         return

    #     invalid_text = ', '.join(invalid)
    #     msg = QMessageBox()
    #     msg.setIcon(QMessageBox.Warning)
    #     msg.setWindowTitle(tr('PgMetadata: Database connection(s) not available'))
    #     msg.setText(tr(
    #         f'{n_invalid} connection(s) listed in PgMetadata’s settings are invalid or '
    #         f'no longer available: {invalid_text}'))
    #     msg.setInformativeText(tr(
    #         'Do you want to remove these connection(s) from the PgMetadata settings? '
    #         '(You can also do this later with the “Set Connections” tool.)'))
    #     msg.setStandardButtons(QMessageBox.Yes | QMessageBox.No)
    #     clicked = msg.exec()

    #     if clicked == QMessageBox.Yes:
    #         iface.messageBar().pushSuccess('PgMetadata', tr(f'{n_invalid} invalid connection(s) removed.'))
    #         store_connections(valid)
    #     if clicked == QMessageBox.No:
    #         iface.messageBar().pushInfo('PgMetadata', tr(f'Keeping {n_invalid} invalid connections.'))
    # '''
    def open_about_dialog(self):
        """
        About dialog
        """
        dialog = AutoMapAboutDialog(iface)
        dialog.exec_()

    def open_help():
        """ Open the online help. """
        # QDesktopServices.openUrl(QUrl('https://plateformesig.CenIsere-outils.org/'))

    def open_editor(self):
        self.canvas_editor.show()
        self.canvas_editor.raise_()

    def unload(self):
        """ Unload the plugin. """
        if self.canvas_editor:
            iface.removePluginMenu('CenIsere_AutoMap',self.automap_action)

        if self.provider:
            QgsApplication.processingRegistry().removeProvider(self.provider)
            del self.provider

        if self.locator_filter:
            iface.deregisterLocatorFilter(self.locator_filter)
            del self.locator_filter

        if self.help_action:
            iface.pluginHelpMenu().removeAction(self.help_action)
            del self.help_action
