//======================================================================================================================================================================== // HOME_ATTENTE.QML (shipheart_wasm) // Affiche un fond d'écran standard mais avec rien dedans, en attendant que l'accès à // la BDD permette de déterminer la page d'accueil à charger. Sans cette page, la // StackView affiche une page toute blanche pendant 1-2s au démarrage. // // SIMPLIFIÉ par rapport au fichier natif dont il est issu : toute la notion // "écran déporté"/ShipRS (module distant avec son propre écran physique à taille // fixe connue, synchronisation de fichiers via rsync/SSH) est retirée - elle n'a // aucun sens pour un client web wasm, qui tourne toujours dans un navigateur, jamais // comme module matériel dédié. Cf synthèse, chantier "responsive". //======================================================================================================================================================================== 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) //---------------------------------------------------- // Toujours "wasm" pour ce client - PAS "shipbase" : cette valeur // distincte empêche les bips physiques et la mise en veille de // l'écran physique du CM5 (Shipheart_page.qml) de se déclencher // à tort depuis un client web distant. //---------------------------------------------------- shipheart_type_installation = shipheart_type_installation_wasm; // Constantes de mise en page génériques (sans lien avec le concept // écran déporté/ShipRS retiré ci-dessus - utilisées dans toute // l'application) : shipheart_hauteur_bandeau_haut = 60 shipheart_hauteur_titre_2 = 50 shipheart_hauteur_bandeau_bas = 80 shipheart_hauteur_clavier = 305 //---------------------------------------------------- // 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 recommencer la recherche après une période de timer. (shipheart_nom_initial_page !== "")) { timer_recherche_home_page.stop(); // Arrêt du timer car il n'est plus utile maintenant stackView.push(shipheart_nom_initial_page) } } } //============================================================== // Réactivation de la recherche lors d'un retour sur cette page : //============================================================== StackView.onActivated: { timer_recherche_home_page.start(); // Relance le timer pour faire une nouvelle recherche } //============================================================== // Zone d'affichage : //============================================================== Rectangle { anchors.fill: parent color: "transparent" // C'est la ligne importante qui permet de ne pas avoir un "flash" blanc au démarrage } //============================================================================ // Fonction : Récupè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. //============================================================================ function init_shipheart_specifique_client() { var req, res req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Specifique_client" '; res = bdd.requete_unique(req); shipheart_specifique_client = res[0].split(';') return(shipheart_specifique_client[0]); } //============================================================================ // Fonction : Récupère dans la BDD la valeur de 'Theme' dans // TB_Configuration et met à jour la propriété globale 'shipheart_theme'. //============================================================================ function init_shipheart_theme() { var req, res; var nb; chargement_theme(); req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Fichier_image_accueil" '; nb = bdd.requete(req); 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 traitement de la requête de recherche de fichier d'image d'accueil. Valeur par défaut utilisée."); } } else { shipheart_fichier_image_accueil = ""; console.log("/!\\ La requête de recherche de fichier d'image d'accueil a échoué. Valeur par défaut utilisée."); } 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'. //============================================================================ function init_shipheart_version_cm() { var req, res 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; } }