//======================================================================================================================================================================== // HOME_ATTENTE.QML // Ce fichier affiche un fond d'écran standard mais avec rien dedans. Il est utilisé au démarrage, pour attendre que l'ApplicationWindow soit prête // et que l'accès à la BDD permette de décider quelle page d'accueil lancer. // Sans cette page, la StackView affiche une page toute blanche pendant 1-2s avant que la première Home page soit chargée... //======================================================================================================================================================================== import QtQuick 2.12 import QtQuick.Controls 2.12 import qt.koriolan.shipheart 1.0 Shipheart_page { id: page_home_attente //============================================================== // Recherche de la Home Page à utiliser : //============================================================== Timer { id: timer_recherche_home_page interval: 300 running: true repeat: true onTriggered: { console.log("Adresse de ShipBase = " + AppInfo.adresse_shipbase) console.log("Etat de la connexion à la BDD = " + AppInfo.etat_connexion_bdd) console.log("Type d'installation = " + AppInfo.type_installation) console.log("Taille de l'écran = " + AppInfo.taille_ecran) //---------------------------------------------------- // Valeurs correspondant au type d'installation : //---------------------------------------------------- switch (Number(AppInfo.type_installation)) { default: case shipheart_type_installation_shipbase: shipheart_type_installation = shipheart_type_installation_shipbase; break; case shipheart_type_installation_ecran_deporte: switch (Number(AppInfo.taille_ecran)) { default: case 7: shipheart_type_installation = shipheart_type_installation_ecran_deporte_7_pouces; break; case 10: shipheart_type_installation = shipheart_type_installation_ecran_deporte_10_pouces; break; case 22: shipheart_type_installation = shipheart_type_installation_ecran_deporte_22_pouces; break; } break; } console.log("Type d'installation = " + shipheart_type_installation) //shipheart_type_installation = shipheart_type_installation_shipbase //shipheart_type_installation = shipheart_type_installation_ecran_deporte_22_pouces // Valeurs par défaut : shipheart_largeur_page = 1280 shipheart_hauteur_page = 800 shipheart_hauteur_bandeau_haut = 60 shipheart_hauteur_titre_2 = 50 shipheart_hauteur_bandeau_bas = 80 shipheart_hauteur_clavier = 305 //---------------------------------------------------- // Cas où la connexion à la BDD n'a pas été possible : //---------------------------------------------------- if ((AppInfo.etat_connexion_bdd === 0) && (Number(AppInfo.type_installation) === shipheart_type_installation_ecran_deporte)) { stackView.push("config_shiprs.qml", {"connexion_impossible": true}) timer_recherche_home_page.stop(); // Arret du timer car il n'est plus utile maintenant } else { //---------------------------------------------------- // Paramètres spécifiques dans le cas des ShipRS : // NB il est important de ne PAS faire ce traitement avant l'appel // à 'connexion_impossible.qml' car, sinon, on peut se trouver dans une // config de 22" (par exemple) et ne plus avoir accès aux boutons de // configuration !! //---------------------------------------------------- switch (shipheart_type_installation) { //--------------------------------------------------------------------------- case shipheart_type_installation_ecran_deporte_7_pouces: shipheart_largeur_page = 1280; shipheart_hauteur_page = 800; synchro_repertoires_shiprs(); break; //--------------------------------------------------------------------------- case shipheart_type_installation_ecran_deporte_10_pouces: shipheart_largeur_page = 1280; // Spec de l'écran DENSITRON de ShipBase shipheart_hauteur_page = 800; // Spec de l'écran DENSITRON de ShipBase synchro_repertoires_shiprs(); break; //--------------------------------------------------------------------------- case shipheart_type_installation_ecran_deporte_22_pouces: shipheart_largeur_page = 1920; shipheart_hauteur_page = 1080; synchro_repertoires_shiprs(); break; //--------------------------------------------------------------------------- default: // Dans ce cas, ce sont les valeurs par défaut qui sont conservées. case shipheart_type_installation_shipbase: break; } //---------------------------------------------------- // Recherche de la version de ShipBase : //---------------------------------------------------- init_shipheart_version_cm(); //---------------------------------------------------- // Recherche du thème d'affichage : //---------------------------------------------------- init_shipheart_theme(); //---------------------------------------------------- // Première page à afficher selon le client : //---------------------------------------------------- var shipheart_nom_initial_page = ""; switch (Number(init_shipheart_specifique_client())) { //--------------------------------- default: case shipheart_specifique_client_tous: shipheart_nom_initial_page = "qrc:/home_accueil.qml" break; //--------------------------------- case shipheart_specifique_client_suncy: shipheart_nom_initial_page = "qrc:/home_suncy.qml"; break; } if ((shipheart_generation_shipbase != shipheart_generation_shipbase_inconnue) && // A priori, ne devrait pas arriver mais si on n'a pas trouvé, on va reommencer la recherche après une période de timer. (shipheart_nom_initial_page !== "")) { timer_recherche_home_page.stop(); // Arret du timer car il n'est plus utile maintenant stackView.push(shipheart_nom_initial_page) //console.log("La Home Page sélectionnée est '" + shipheart_nom_initial_page + "'") } } } } //============================================================== // Réactivation de la recherche lors d'un retour sur cette page : //============================================================== StackView.onActivated: { //console.log("!!! Page Home_attente activée") timer_recherche_home_page.start(); // Relance le timer pour faire une nouvelle recherche } //============================================================== // Zone d'affichage : //============================================================== Rectangle { x: 0 y: 0 width: 5000 // Permet d'être qûr qu'on couvre tout l'écran, quel qu'il soit height: 5000 // Permet d'être qûr qu'on couvre tout l'écran color: "transparent" // C'est la ligne importante qui permet de ne pas avoir un "flash' blanc au démarrage } //============================================================================ // Fonction : Récpère dans la BDD la valeur de 'Specifique_client' dans // TB_Configuration. sépare chaque champs (séparés par des ';'). // Met à jour la propriété globale 'shipheart_specifique_client' // avec toutes les valeurs. Renvoi la première. // Reçoit : Rien // Retour : La valeur de 'shipheart_specifique_client[0]' //============================================================================ function init_shipheart_specifique_client() { var req, res // Récupération du paramètre 'TB_Configuration.Specifique_client' req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Specifique_client" '; res = bdd.requete_unique(req); shipheart_specifique_client = res[0].split(';') // Mémorisation de l'ensemble du tableau return(shipheart_specifique_client[0]); // Renvoi de la première valeur } //============================================================================ // Fonction : Récupère dans la BDD la valeur de 'Theme' dans // TB_Configuration et met à jour la propriété globale 'shipheart_theme'. // Reçoit : Rien // Retour : Rien //============================================================================ function init_shipheart_theme() { var req, res; var nb; // Chargement du thème demandé en config : chargement_theme(); // Récupération du paramètre 'TB_Configuration.Fichier_image_accueil' req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Fichier_image_accueil" '; //console.log("Requête = [ " + req + "; ]"); nb = bdd.requete(req); //console.log("NB = "+nb); if (nb >0) { res = bdd.lecture_ligne(); if (!res.isEmpty) { shipheart_fichier_image_accueil = res[0]; console.log("Le fichier d'image d'accueil est : [" + shipheart_fichier_image_accueil + "]"); } else { shipheart_fichier_image_accueil = ""; console.log("/!\ Erreur dans le traitementr de la requête de recherche de fichier d'image d'accueil a échouée. Le nom de fichier est mis à sa valeur par défaut..."); } } else { shipheart_fichier_image_accueil = ""; console.log("/!\ La requête de recherche de fichier d'image d'accueil a échouée. Le nom de fichier est mis à sa valeur par défaut..."); } return; } //============================================================================ // Fonction : Récupère dans la BDD la valeur de 'Version_cm' dans // TB_Systeme et met à jour la propriété globale 'shipheart_generation_shipbase'. // Reçoit : Rien // Retour : Rien //============================================================================ function init_shipheart_version_cm() { var req, res // Récupération du paramètre 'TB_Systeme.Version_cm' req = 'SELECT Valeur FROM TB_Systeme WHERE Nom="Version_cm" '; res = bdd.requete_unique(req); if (res[0].indexOf("CM3+") !== -1) shipheart_generation_shipbase = shipheart_generation_shipbase_v1; else if (res[0].indexOf("CM4") !== -1) shipheart_generation_shipbase = shipheart_generation_shipbase_v2; else if (res[0].indexOf("CM5") !== -1) shipheart_generation_shipbase = shipheart_generation_shipbase_v3; else shipheart_generation_shipbase = shipheart_generation_shipbase_inconnue; console.log("Génération de ShipBase = " + shipheart_generation_shipbase); return; } //============================================================================================================= // Synchroniser répertoire docs ShipRS //============================================================================================================= function synchro_repertoires_shiprs() { var commande; commande = "rsync -aPs --delete -e \"ssh -p 2022 -o StrictHostKeyChecking=no \" koriolan@" + AppInfo.adresse_shipbase + ":" + shipheart_repertoire_config + "/ " + shipheart_repertoire_config + "/"; systeme.commande_shell(commande, ""); } }