Première tranche verticale : domaine circuit via DataProvider/API
This commit is contained in:
@@ -0,0 +1,171 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
|
||||
// Shipheart_page est un composant au sens QML. Il commence donc par une majuscule.
|
||||
// Il peut être utilisé partout dans le projet.
|
||||
|
||||
Page {
|
||||
|
||||
id: page
|
||||
|
||||
background: Rectangle { // Attention : Background ne peut avoir qu'un seul élément [a priori, pas complètement sûr...] => on créé un Rectangle de plus haut niveau et on met ensuite dedans ce qu'on veut...
|
||||
anchors.fill: parent
|
||||
color: shipheart_theme_couleur_fond_ecran
|
||||
|
||||
Image {
|
||||
anchors.fill: parent
|
||||
fillMode: Image.Tile
|
||||
// fillMode: Image.PreserveAspectCrop
|
||||
source: shipheart_theme_fichier_fond_ecran
|
||||
visible: (shipheart_theme_fichier_fond_ecran !== "")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//=================================================================================================
|
||||
// Fonction : Shipheart_clic
|
||||
// Cette fonction est normalement appelé à chaque appel d'un 'MouseArea.OnClick'
|
||||
//=================================================================================================
|
||||
function shipheart_clic()
|
||||
{
|
||||
emission_bip();
|
||||
reload_economiseur();
|
||||
}
|
||||
|
||||
//=====================================================================================
|
||||
// Fonction : Vérifie si la configuration en cours nécessite l'émission d'un bip.
|
||||
// Si oui, met à jour le champ correspondant dans la BDD et fait une demande
|
||||
// de synchro pour que celle-ci soit prise en compte rapidmeent.
|
||||
// Reçoit : Rien
|
||||
// Retour : Rien
|
||||
//=====================================================================================
|
||||
function emission_bip()
|
||||
{
|
||||
|
||||
if ((shipheart_bips !== "") && // Si shipheart_bips = "", il n'y a aucun bip à émettre...
|
||||
(shipheart_type_installation === shipheart_type_installation_shipbase)) // SDIR 317 : ... et si on est sur ShipRS, on n'émet pas de bips
|
||||
{
|
||||
bdd.requete_unique("UPDATE TB_Systeme SET Valeur='" + shipheart_bips + "/0/0/0' WHERE Nom='New_bip'");
|
||||
synchro_bdd(shipheart_type_synchro_data);
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
// Fonction : Réarmement économiseur
|
||||
//=================================================================================================
|
||||
function reload_economiseur()
|
||||
{
|
||||
var req, res;
|
||||
|
||||
/* // La valeur est relue à chaque fois dans la BDD pour être certain d'avoir la dernière valeur :
|
||||
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom LIKE "%Time_out_economiseur%" ';
|
||||
res = bdd.requete_unique(req);
|
||||
shipheart_compteur_economiseur = Number(res[0]);
|
||||
*/
|
||||
shipheart_compteur_economiseur = shipheart_time_out_economiseur;
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
// Fonction : Demande de mise en veille (on ou off)
|
||||
//=================================================================================================
|
||||
function mise_en_veille(veille)
|
||||
{
|
||||
if (shipheart_type_installation !== shipheart_type_installation_shipbase) return; // SDIR #251
|
||||
|
||||
if (veille === 0) // On sort toujours du mode veille si c'est demandé
|
||||
{
|
||||
bdd.requete_unique('UPDATE TB_Systeme SET Valeur=' + veille + ' WHERE Nom="Veille"');
|
||||
synchro_bdd(shipheart_type_synchro_data);
|
||||
//console.log("Sortie de veille");
|
||||
|
||||
flag_economiseur_actif = false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ((veille === 1) && (get_validation_economiseur() === 1)) // On ne rentre en veille que si c'est demandé (le time-out a expiré ET l'économiseur est valide)
|
||||
{
|
||||
bdd.requete_unique('UPDATE TB_Systeme SET Valeur=' + veille + ' WHERE Nom="Veille"');
|
||||
synchro_bdd(shipheart_type_synchro_data);
|
||||
|
||||
flag_economiseur_actif = true;
|
||||
}
|
||||
//else console.log("Demande d'activation de l'économiseur alors qu'il est dévalidé")
|
||||
}
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
// Fonction : Change l'état de la validation économiseur
|
||||
//=================================================================================================
|
||||
function changer_validation_economiseur()
|
||||
{
|
||||
var req, res;
|
||||
var new_val;
|
||||
|
||||
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom LIKE "%Validation_economiseur%" ';
|
||||
res = bdd.requete_unique(req);
|
||||
|
||||
if (Number(res[0]) === 0) new_val = '1';
|
||||
else new_val = '0';
|
||||
|
||||
bdd.requete_unique('UPDATE TB_Configuration SET Valeur=' + new_val + ' WHERE Nom LIKE "%Validation_economiseur%" ');
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
// Fonction : Retourne l'état actuel de la validation de l'économiseur
|
||||
//=================================================================================================
|
||||
function get_validation_economiseur()
|
||||
{
|
||||
var req, res;
|
||||
|
||||
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom LIKE "%Validation_economiseur%" ';
|
||||
res = bdd.requete_unique(req);
|
||||
|
||||
return(Number(res[0]));
|
||||
}
|
||||
|
||||
//=================================================================================================
|
||||
// Fonction : Charge les paramètres du thème en cours
|
||||
//=================================================================================================
|
||||
function chargement_theme()
|
||||
{
|
||||
var req, res;
|
||||
|
||||
// Récupération du paramètre 'TB_Configuration.Theme'
|
||||
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Theme" ';
|
||||
res = bdd.requete_unique(req);
|
||||
|
||||
// Vérifie que la n° de thème sélectionné est bien compatible avec les thèmes présents sur cette version (on peut imaginer qu'on en ait supprimé...) :
|
||||
if (Number(res[0]) >= shipheart_config_themes.length)
|
||||
{
|
||||
shipheart_theme = 0; // Valeur par défaut
|
||||
req = 'UPDATE TB_Configuration '; // Mise à jour dans la BDD pour les prochains démarrages
|
||||
req += ' SET Valeur="' + shipheart_theme + '" ';
|
||||
req += ' WHERE Nom="Theme" ';
|
||||
//console.log("Requête = " + req)
|
||||
bdd.requete_unique(req);
|
||||
}
|
||||
else shipheart_theme = Number(res[0]); // Cas normal
|
||||
|
||||
// Mise à jour des paramètres d'affcihage liés au thème choisit :
|
||||
shipheart_theme_fichier_fond_ecran = shipheart_config_themes[shipheart_theme][shipheart_index_theme_fichier_fond_ecran];
|
||||
shipheart_theme_couleur_fond_ecran = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_ecran];
|
||||
shipheart_couleur_fond_bouton_actif = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_bouton_actif];
|
||||
shipheart_couleur_texte_titre_1 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_titre_1];
|
||||
shipheart_couleur_texte_titre_2 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_titre_2];
|
||||
shipheart_couleur_texte_titre_3 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_titre_3];
|
||||
shipheart_couleur_fond_boite_dialogue_niveau_0 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0];
|
||||
shipheart_couleur_fond_boite_dialogue_niveau_1 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1];
|
||||
shipheart_couleur_fond_boite_dialogue_niveau_2 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2];
|
||||
shipheart_couleur_texte_boite_dialogue_niveau_0 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0];
|
||||
shipheart_couleur_texte_boite_dialogue_niveau_1 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1];
|
||||
shipheart_couleur_texte_boite_dialogue_niveau_2 = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2];
|
||||
shipheart_couleur_texte_slider = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_texte_slider];
|
||||
shipheart_couleur_bordure_courbes = shipheart_config_themes[shipheart_theme][shipheart_index_theme_couleur_bordure_courbes];
|
||||
|
||||
//console.log("Thème d'affichage à utiliser = " + shipheart_theme + " [fichier = '" + shipheart_theme_fichier_fond_ecran + "' et couleur = '" + shipheart_theme_couleur_fond_ecran + "']");
|
||||
}
|
||||
}
|
||||
+183
@@ -0,0 +1,183 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
import QtQuick.Layouts 1.12
|
||||
|
||||
import qt.koriolan.shipheart 1.0
|
||||
|
||||
// ============================================================================
|
||||
// home.qml (EMBRYON - POC WASM production, domaine circuit uniquement)
|
||||
// ----------------------------------------------------------------------------
|
||||
// Version très réduite du vrai home.qml (~3880 lignes, tous domaines) :
|
||||
// couvre uniquement l'affichage des circuits, via l'API réelle (DataProvider)
|
||||
// au lieu de bdd.*. Objectif : valider la chaîne complète (HTTP réel, JSON,
|
||||
// affichage QML) sur un seul domaine avant de généraliser.
|
||||
//
|
||||
// Simplifications volontaires par rapport au vrai home.qml :
|
||||
// - Lecture seule (pas de changement de consigne au clic - l'endpoint
|
||||
// d'écriture n'est pas encore construit côté API, cf synthèse §20.7)
|
||||
// - Un seul domaine affiché (pas de batteries/réservoirs/capteurs/pages
|
||||
// personnalisées/messages/réveils/minuteur)
|
||||
// - Délégué d'affichage simplifié (pas Shipheart_bouton_circuit, qui
|
||||
// embarque des actions d'écriture non encore branchées)
|
||||
// - mise_a_jour_onglets_circuits() n'existe plus : l'API renvoie déjà
|
||||
// l'état agrégé par famille dans /elements/familles (cf §20.7/21.5)
|
||||
// ============================================================================
|
||||
|
||||
Shipheart_page {
|
||||
id: page_accueil
|
||||
|
||||
readonly property int deport_haut_masquage_onglets: 20
|
||||
readonly property int rayon_onglets: 20
|
||||
property int nombre_colonnes_affichage_circuits: 2
|
||||
property int nombre_circuits_affiches_sur_une_colonne: 4
|
||||
property int id_groupe_circuits: 0
|
||||
|
||||
ListModel { id: modele_onglets_circuits }
|
||||
ListModel { id: modele_circuits }
|
||||
|
||||
property DataProvider dataProvider: DataProvider {}
|
||||
|
||||
Connections {
|
||||
target: dataProvider
|
||||
|
||||
function onFamillesRecues(familles) {
|
||||
modele_onglets_circuits.clear();
|
||||
for (var i = 0; i < familles.length; i++) {
|
||||
var f = familles[i];
|
||||
modele_onglets_circuits.append({
|
||||
"id": f.id,
|
||||
"libelle": f.nom,
|
||||
"etat": f.etat,
|
||||
"actif": (f.id === id_groupe_circuits)
|
||||
});
|
||||
// Sélectionne la première famille par défaut si aucune n'est choisie :
|
||||
if (id_groupe_circuits === 0 && i === 0) {
|
||||
id_groupe_circuits = f.id;
|
||||
dataProvider.get_elements("circuit", id_groupe_circuits);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function onElementsRecus(elements) {
|
||||
modele_circuits.clear();
|
||||
for (var j = 0; j < elements.length; j++) {
|
||||
modele_circuits.append(elements[j]);
|
||||
}
|
||||
}
|
||||
|
||||
function onErreur(message) {
|
||||
console.log("DataProvider erreur : " + message);
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
dataProvider.get_familles("circuit");
|
||||
}
|
||||
|
||||
// Rafraîchissement périodique (remplace mise_a_jour_circuits(), appelée chaque seconde côté natif) :
|
||||
Timer {
|
||||
interval: 1000
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: {
|
||||
if (id_groupe_circuits > 0) dataProvider.get_elements("circuit", id_groupe_circuits);
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
spacing: 10
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Onglets (familles) :
|
||||
Rectangle {
|
||||
id: onglets_circuits
|
||||
Layout.fillWidth: true
|
||||
height: shipheart_hauteur_bandeau_haut
|
||||
color: "transparent"
|
||||
visible: modele_onglets_circuits.count > 1
|
||||
|
||||
GridView {
|
||||
id: grille_onglets_circuits
|
||||
anchors.fill: parent
|
||||
cellWidth: width / Math.max(1, Math.min(modele_onglets_circuits.count, 5))
|
||||
cellHeight: shipheart_hauteur_bandeau_haut
|
||||
model: modele_onglets_circuits
|
||||
clip: true
|
||||
|
||||
delegate: Rectangle {
|
||||
width: grille_onglets_circuits.cellWidth - 2
|
||||
height: grille_onglets_circuits.cellHeight
|
||||
radius: rayon_onglets
|
||||
color: model.actif ? shipheart_couleur_fond_bouton_actif : shipheart_couleur_fond_bouton
|
||||
|
||||
Text {
|
||||
text: model.libelle
|
||||
anchors.centerIn: parent
|
||||
color: couleur_blanc_casse
|
||||
font.pixelSize: 14
|
||||
font.bold: model.actif
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
id_groupe_circuits = model.id;
|
||||
for (var k = 0; k < modele_onglets_circuits.count; k++) {
|
||||
modele_onglets_circuits.set(k, {"actif": (modele_onglets_circuits.get(k).id === model.id)});
|
||||
}
|
||||
dataProvider.get_elements("circuit", id_groupe_circuits);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------
|
||||
// Circuits de la famille sélectionnée :
|
||||
GridView {
|
||||
id: circuits_grid
|
||||
Layout.fillWidth: true
|
||||
Layout.fillHeight: true
|
||||
cellWidth: width / nombre_colonnes_affichage_circuits
|
||||
cellHeight: height / nombre_circuits_affiches_sur_une_colonne
|
||||
model: modele_circuits
|
||||
clip: true
|
||||
|
||||
delegate: Rectangle {
|
||||
width: circuits_grid.cellWidth - 4
|
||||
height: circuits_grid.cellHeight - 4
|
||||
radius: 10
|
||||
color: shipheart_couleur_fond_bouton
|
||||
border.color: (model.etat === 2) ? "red" : (model.etat === 1) ? "orange" : "transparent"
|
||||
border.width: 2
|
||||
|
||||
Column {
|
||||
anchors.centerIn: parent
|
||||
spacing: 4
|
||||
|
||||
Text {
|
||||
text: model.nom
|
||||
color: couleur_blanc_casse
|
||||
font.pixelSize: 14
|
||||
font.bold: true
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
Text {
|
||||
text: model.tension.toFixed(1) + " V " + model.intensite.toFixed(2) + " A"
|
||||
color: couleur_blanc_casse
|
||||
font.pixelSize: 12
|
||||
anchors.horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Label {
|
||||
anchors.centerIn: parent
|
||||
visible: circuits_grid.count === 0
|
||||
text: qsTr("Aucun circuit dans ce groupe.")
|
||||
color: couleur_rouge_transparent
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,222 @@
|
||||
//========================================================================================================================================================================
|
||||
// HOME_ACCUEIL.QML
|
||||
// Ce fichier est la page d'accueil par défaut. Il propose l'affichage du logo ShipHeart et le nom du bateau.
|
||||
// La page est appelée depuis la page main.qml lorsque le paramètre 'shipheart_specifique_client[0]' est égal à 0
|
||||
//========================================================================================================================================================================
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
|
||||
import qt.koriolan.shipheart 1.0
|
||||
|
||||
|
||||
|
||||
Shipheart_page {
|
||||
id: page_home_o_yachts
|
||||
|
||||
|
||||
// Mis en forme :
|
||||
readonly property double pourcentage_hauteur_ligne_haut: 0.7
|
||||
readonly property double espace_lignes_principales: 0 // L'espace ne sert à rien et est même contre-productif pour avoir le logo centré entre haut de l'écran et le texte "Bienvenue à bord...."
|
||||
readonly property double affichage_hauteur_utile: shipheart_hauteur_page - shipheart_hauteur_bandeau_bas
|
||||
|
||||
readonly property int periode_raffraichissement_parametres: 1000 // En ms
|
||||
readonly property int duree_affichage: 15 // En s
|
||||
|
||||
// Affichage :
|
||||
|
||||
// Données :
|
||||
property string nom_du_bateau: ""
|
||||
property int compteur_affichage: 0
|
||||
|
||||
// Modèles :
|
||||
// Note : les modèles chargés dans 'main.qml' n'ont pas à être rechargés dans les pages suivantes
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// Ouverture :
|
||||
//-------------------------------------------------
|
||||
StackView.onActivating: { // Le 'onActivating' permet de ne pas voir la mise à jour puisqu'elle est lancée dès que la page va être chargée
|
||||
init_page();
|
||||
timer_raffraichissement_parametres.start();
|
||||
}
|
||||
|
||||
//-------------------------------------------------
|
||||
// Fermeture :
|
||||
//-------------------------------------------------
|
||||
StackView.onDeactivating: {
|
||||
timer_raffraichissement_parametres.stop();
|
||||
}
|
||||
|
||||
//===========================================================
|
||||
// Timer periode raffraichissement parametres :
|
||||
//===========================================================
|
||||
Timer {
|
||||
id: timer_raffraichissement_parametres
|
||||
interval: periode_raffraichissement_parametres
|
||||
triggeredOnStart: false
|
||||
running: true
|
||||
repeat: true
|
||||
onTriggered: {
|
||||
if (++ compteur_affichage > duree_affichage) sortie_page();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Ecran Haut :
|
||||
//-------------------------------------------------------
|
||||
Rectangle {
|
||||
id: zone_affichage_haut_gauche
|
||||
x: 0
|
||||
y: 0
|
||||
width: shipheart_largeur_page
|
||||
height: (affichage_hauteur_utile * pourcentage_hauteur_ligne_haut) - (espace_lignes_principales);
|
||||
color: "transparent"
|
||||
|
||||
Image {
|
||||
source: (shipheart_fichier_image_accueil !== "")
|
||||
? "file://" + shipheart_repertoire_config + shipheart_sous_repertoire_images_accueil + "/" + shipheart_fichier_image_accueil
|
||||
: "/images/" + shipheart_nom_fichier_image_accueil_par_defaut
|
||||
sourceSize.height: parent.height * 0.7
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Ecran Bas :
|
||||
//-------------------------------------------------------
|
||||
Rectangle {
|
||||
id: zone_affichage_bas_gauche
|
||||
x: 0
|
||||
y: zone_affichage_haut_gauche.height + espace_lignes_principales;
|
||||
width: shipheart_largeur_page
|
||||
height: (affichage_hauteur_utile * (1 - pourcentage_hauteur_ligne_haut)) - (espace_lignes_principales);
|
||||
color: "transparent"
|
||||
|
||||
Text {
|
||||
anchors {
|
||||
top: parent.top // Permet que ce texte soit juste en-dessous de la zone haute (sur laquelle le logo est centré => donc le logo est centré entre haut de l'écran et ce texte)
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
font.pixelSize: 24
|
||||
text: qsTr("Bienvenue à bord de");
|
||||
color: couleur_blanc_casse
|
||||
}
|
||||
|
||||
Text {
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
verticalCenterOffset: -20 // Remonté légèrement le nom du bateau...
|
||||
}
|
||||
font.pixelSize: 50
|
||||
text: '" ' + nom_du_bateau + ' "';
|
||||
color: couleur_blanc_casse
|
||||
font.weight: Font.Black
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Bandeau bas :
|
||||
//-------------------------------------------------------
|
||||
Row {
|
||||
x: 0
|
||||
y: shipheart_hauteur_page - shipheart_hauteur_bandeau_bas;
|
||||
width: shipheart_largeur_page;
|
||||
height: shipheart_hauteur_bandeau_bas;
|
||||
spacing: 5
|
||||
padding: 5
|
||||
|
||||
Rectangle {
|
||||
|
||||
width: parent.width
|
||||
height: parent.height
|
||||
color: shipheart_couleur_fond_bouton //"transparent"
|
||||
|
||||
Rectangle { // Barre augmentant selon l'évolution du compteur_affichage
|
||||
width: (compteur_affichage / duree_affichage) * parent.width
|
||||
height: parent.height
|
||||
color: shipheart_couleur_fond_bouton_actif
|
||||
opacity: 0.5
|
||||
radius: shipheart_rayon_bouton
|
||||
Behavior on width { NumberAnimation { duration: periode_raffraichissement_parametres } }
|
||||
}
|
||||
|
||||
Image {
|
||||
source: "/images/right_sombre.png"
|
||||
sourceSize.height: parent.height * 0.5
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
horizontalCenterOffset: -10
|
||||
}
|
||||
}
|
||||
Image {
|
||||
source: "/images/right_sombre.png"
|
||||
sourceSize.height: parent.height * 0.5
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
horizontalCenterOffset: +10
|
||||
}
|
||||
}
|
||||
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
onClicked: {
|
||||
shipheart_clic();
|
||||
sortie_page();
|
||||
//stackView.push("parametres_avances.qml");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//===========================================================
|
||||
// Economiseur : Doit être placé en fin de page pour fonctionner
|
||||
//===========================================================
|
||||
MouseArea {
|
||||
anchors.fill: parent
|
||||
preventStealing: true // Permet que cela fonctionne même si un élément flickable (notamment) soit derrière et "vole" le click
|
||||
enabled: flag_economiseur_actif
|
||||
onClicked: {
|
||||
mise_en_veille(0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================================================
|
||||
// Init de la page
|
||||
//=============================================================================================================
|
||||
function init_page()
|
||||
{
|
||||
var req, res
|
||||
|
||||
mise_en_veille(0);
|
||||
console.log("Init de Home_accueil...");
|
||||
|
||||
// Mise à jour du nom du bateau :
|
||||
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Nom_du_bateau" ';
|
||||
res = bdd.requete_unique(req);
|
||||
nom_du_bateau = res[0];
|
||||
|
||||
compteur_affichage = 0;
|
||||
}
|
||||
|
||||
//=============================================================================================================
|
||||
// Sortie de la page
|
||||
//=============================================================================================================
|
||||
function sortie_page()
|
||||
{
|
||||
|
||||
compteur_affichage = 0; // Pour le cas où on réouvrirait la page (via le bouton paramètres / appui long) ; dans ce cas, la remise à 0 du compteur prend quelques secondes (ce sera donc fait avant si on le remet de suite à 0)
|
||||
stackView.push("home.qml");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,285 @@
|
||||
//========================================================================================================================================================================
|
||||
// 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_largeur_page = Qt.application.screens[0].width
|
||||
shipheart_hauteur_page = Qt.application.screens[0].height
|
||||
|
||||
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, "");
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
+1069
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user