673 lines
33 KiB
QML
673 lines
33 KiB
QML
import QtQuick 2.12
|
|
import QtQuick.Controls 2.12
|
|
|
|
import qt.koriolan.shipheart 1.0
|
|
|
|
|
|
|
|
Shipheart_page {
|
|
id: page_parametres_avances
|
|
|
|
|
|
// Mis en forme :
|
|
readonly property int menu_nombre_colonnes: 4
|
|
readonly property int menu_espace_colonnes: 20
|
|
readonly property double affichage_hauteur_utile: shipheart_hauteur_page - shipheart_hauteur_bandeau_haut - shipheart_hauteur_bandeau_bas
|
|
readonly property double pourcentage_bandeau_bas_largeur_zone_retour: 0.86
|
|
|
|
readonly property int nombre_menus_affiches_sur_une_colonne: 8
|
|
|
|
readonly property int periode_init_raffraichissement_parametres: 1 // En ms
|
|
readonly property int periode_raffraichissement_parametres: 1000 // En ms
|
|
readonly property int step_timer_reset: 10 // en ms
|
|
|
|
|
|
|
|
// Affichage :
|
|
property int niveau_page: 0
|
|
property bool bouton_bandeau_bas_zone_retour_actif: false
|
|
property bool flag_nouvelle_version: false // Permet de mémoriser et donc détecter un changement
|
|
|
|
|
|
// Données :
|
|
property int valeur_timer_reset: 0
|
|
|
|
// Modèles :
|
|
// Note : les modèles chargés dans 'main.qml' n'ont pas à être rechargés dans les pages suivantes
|
|
|
|
|
|
//===========================================================
|
|
// Timer periode raffraichissement parametres :
|
|
//===========================================================
|
|
Timer {
|
|
id: timer_raffraichissement_parametres
|
|
interval: periode_init_raffraichissement_parametres
|
|
triggeredOnStart: false
|
|
running: true
|
|
repeat: true
|
|
onTriggered: {
|
|
if (interval == periode_init_raffraichissement_parametres) { // Premier passage, 1ms après le premier chargement
|
|
interval = periode_raffraichissement_parametres;
|
|
|
|
// init_page();
|
|
}
|
|
|
|
if (stackView.depth === (niveau_page + 1)) // Désactive le raffraichissement quand la page n'est pas activée dans la pile
|
|
{
|
|
mise_a_jour_periodique();
|
|
}
|
|
}
|
|
}
|
|
|
|
//===========================================================
|
|
// Timer pour gérer l'appui long du reboot :
|
|
//===========================================================
|
|
Timer {
|
|
id: timer_reset
|
|
interval: step_timer_reset
|
|
triggeredOnStart: false
|
|
repeat: true
|
|
onTriggered: {
|
|
if (valeur_timer_reset < shipheart_mouse_press_and_hold_interval_tres_long) valeur_timer_reset+= step_timer_reset;
|
|
else // Le fait de ne pas utilise le OnPressandHold permet d'être sûr que le reset se fait au même moment que la fin du comptage (sinon, on peut avoir de petits décalages)
|
|
{
|
|
timer_reset.running = false;
|
|
valeur_timer_reset = 0;
|
|
|
|
shipheart_clic();
|
|
|
|
boite_validation_securisee.niveau = 2;
|
|
boite_validation_securisee.boutonOk = false
|
|
boite_validation_securisee.boutonAnnuler = true
|
|
boite_validation_securisee.boutonSecurise = true
|
|
boite_validation_securisee.boutonSecuriseTexte = qsTr("Confirmer");
|
|
boite_validation_securisee.imageTitreSource = "/images/attention.png";
|
|
boite_validation_securisee.message = qsTr("<b>Redémarrage</b><br /><br />Si vous confirmez, ShipHeart va redémarrer. <br />Pendant ce redémarrage (environ une minute), votre système ShipHeart ne sera pas accessible ! ")
|
|
boite_validation_securisee.alignementMessage = Text.AlignHCenter
|
|
boite_validation_securisee.affichageAscenseur = true;
|
|
boite_validation_securisee.open();
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//===========================================================
|
|
// Actions avant l'affichage proprement dit :
|
|
//===========================================================
|
|
StackView.onActivating: { // Permet que lors du retour sur la page, un traitement soit fait avant l'affichage proprement dit
|
|
init_page();
|
|
}
|
|
|
|
//===========================================================
|
|
// Titre de la page :
|
|
//===========================================================
|
|
Shipheart_titre_1 {titre:qsTr("Paramètres avancés"); hauteur: shipheart_hauteur_bandeau_haut}
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Principal Gauche :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_gauche
|
|
x: (0 * shipheart_largeur_page / menu_nombre_colonnes) + (menu_espace_colonnes / 2)
|
|
y: shipheart_hauteur_bandeau_haut
|
|
width: (shipheart_largeur_page / menu_nombre_colonnes) - menu_espace_colonnes
|
|
height: affichage_hauteur_utile
|
|
color: "transparent"
|
|
|
|
|
|
Shipheart_titre_2 {titre:qsTr("Votre installation"); hauteur: shipheart_hauteur_bandeau_haut}
|
|
|
|
ListView {
|
|
id: liste_menu_gauche
|
|
|
|
y : shipheart_hauteur_bandeau_haut
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_bandeau_haut
|
|
snapMode: GridView.SnapToRow // L'arret de l'affichage se fera sur une rangée entière
|
|
clip: true // Nécessaire pour que les Delegates s'arretent à l'intérieur de la GridView
|
|
model: ListModel {}
|
|
delegate: Rectangle {
|
|
width: liste_menu_gauche.width
|
|
height: (shipheart_niveau_acces_en_cours >= niveau_mini) ? (liste_menu_gauche.height / nombre_menus_affiches_sur_une_colonne) : 0
|
|
color: "transparent"
|
|
visible: (shipheart_niveau_acces_en_cours >= niveau_mini) ? true : false
|
|
Rectangle {
|
|
width: parent.width
|
|
height: parent.height -10
|
|
color: (libelle !== "") ? shipheart_couleur_fond_bouton : "transparent"
|
|
radius: shipheart_rayon_bouton
|
|
|
|
//--------------------------------------------------------------------
|
|
// Icone du bouton :
|
|
Rectangle { // Le passage par un rectangle avant l'image permet de centrer l'image sur le rectangle et pas juste caler les images à gaiche (elles n'ont pas la même largeur donc elles n'étaient pas centrées les unes par rapport aux autres)
|
|
width: 35
|
|
height: parent.height
|
|
x: 10
|
|
color: "transparent"
|
|
|
|
Image {
|
|
source: "/images/" + model.icone
|
|
sourceSize.height: parent.height * 0.6
|
|
sourceSize.width: parent.width
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
visible: (model.icone !== "")
|
|
}
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// Libellé du bouton :
|
|
Text {
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
font.pixelSize: 20
|
|
text: libelle;
|
|
color: couleur_blanc_casse
|
|
visible: (libelle !== "") ? true : false
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// Triangle rouge en bas à droite :
|
|
Image {
|
|
source: alarme
|
|
sourceSize.height: 20
|
|
anchors {
|
|
bottom: parent.bottom
|
|
right: parent.right
|
|
}
|
|
visible: alarme !== ""
|
|
}
|
|
|
|
//--------------------------------------------------------------------
|
|
// Zone de clic du bouton :
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
visible: (libelle !== "") ? true : false
|
|
onClicked: {
|
|
shipheart_clic();
|
|
if (page_cible !== "")
|
|
{
|
|
stackView.push(page_cible, param_cible);
|
|
}
|
|
else boite_information_en_travaux.open();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ScrollBar.vertical: ScrollBar {}
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Principal Milieu Gauche :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_milieu_gauche
|
|
x: (1 * shipheart_largeur_page / menu_nombre_colonnes) + (menu_espace_colonnes / 2)
|
|
y: shipheart_hauteur_bandeau_haut
|
|
width: (shipheart_largeur_page / menu_nombre_colonnes) - menu_espace_colonnes
|
|
height: affichage_hauteur_utile
|
|
color: "transparent"
|
|
|
|
|
|
Shipheart_titre_2 {titre:qsTr("Vos paramètres"); hauteur: shipheart_hauteur_bandeau_haut}
|
|
|
|
ListView {
|
|
id: liste_menu_milieu_gauche
|
|
|
|
y : shipheart_hauteur_bandeau_haut
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_bandeau_haut
|
|
snapMode: GridView.SnapToRow // L'arret de l'affichage se fera sur une rangée entière
|
|
clip: true // Nécessaire pour que les Delegates s'arretent à l'intérieur de la GridView
|
|
model: ListModel {}
|
|
delegate: Rectangle {
|
|
width: liste_menu_milieu_gauche.width
|
|
height: (shipheart_niveau_acces_en_cours >= niveau_mini) ? (liste_menu_milieu_gauche.height / nombre_menus_affiches_sur_une_colonne) : 0
|
|
color: "transparent"
|
|
visible: (shipheart_niveau_acces_en_cours >= niveau_mini) ? true : false
|
|
Rectangle {
|
|
width: parent.width
|
|
height: parent.height -10
|
|
color: (libelle !== "") ? shipheart_couleur_fond_bouton : "transparent"
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
font.pixelSize: 20
|
|
text: libelle;
|
|
color: couleur_blanc_casse
|
|
visible: (libelle !== "") ? true : false
|
|
}
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
visible: (libelle !== "") ? true : false
|
|
onClicked: {
|
|
shipheart_clic();
|
|
if (page_cible !== "")
|
|
{
|
|
stackView.push(page_cible, param_cible);
|
|
}
|
|
else boite_information_en_travaux.open();
|
|
}
|
|
}
|
|
Image {
|
|
source: alarme
|
|
sourceSize.height: 20
|
|
anchors {
|
|
bottom: parent.bottom
|
|
right: parent.right
|
|
}
|
|
visible: alarme !== ""
|
|
}
|
|
}
|
|
}
|
|
ScrollBar.vertical: ScrollBar {}
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Principal Milieu Droite :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_milieu_droite
|
|
x: (2 * shipheart_largeur_page / menu_nombre_colonnes) + (menu_espace_colonnes / 2)
|
|
y: shipheart_hauteur_bandeau_haut
|
|
width: (shipheart_largeur_page / menu_nombre_colonnes) - menu_espace_colonnes
|
|
height: affichage_hauteur_utile
|
|
color: "transparent"
|
|
|
|
|
|
Shipheart_titre_2 {titre:qsTr("Réseaux"); hauteur: shipheart_hauteur_bandeau_haut}
|
|
|
|
ListView {
|
|
id: liste_menu_milieu_droite
|
|
|
|
y : shipheart_hauteur_bandeau_haut
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_bandeau_haut
|
|
snapMode: GridView.SnapToRow // L'arret de l'affichage se fera sur une rangée entière
|
|
clip: true // Nécessaire pour que les Delegates s'arretent à l'intérieur de la GridView
|
|
model: ListModel {}
|
|
delegate: Rectangle {
|
|
width: liste_menu_milieu_droite.width
|
|
height: (shipheart_niveau_acces_en_cours >= niveau_mini) ? (liste_menu_milieu_droite.height / nombre_menus_affiches_sur_une_colonne) : 0
|
|
color: "transparent"
|
|
visible: (shipheart_niveau_acces_en_cours >= niveau_mini) ? true : false
|
|
Rectangle {
|
|
width: parent.width
|
|
height: parent.height -10
|
|
color: shipheart_couleur_fond_bouton
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
font.pixelSize: 20
|
|
text: libelle;
|
|
color: couleur_blanc_casse
|
|
visible: (libelle !== "") ? true : false
|
|
}
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
if (page_cible !== "")
|
|
{
|
|
stackView.push(page_cible, param_cible);
|
|
}
|
|
else boite_information_en_travaux.open();
|
|
}
|
|
}
|
|
Image {
|
|
source: alarme
|
|
sourceSize.height: 20
|
|
anchors {
|
|
bottom: parent.bottom
|
|
right: parent.right
|
|
}
|
|
visible: alarme !== ""
|
|
}
|
|
}
|
|
}
|
|
ScrollBar.vertical: ScrollBar {}
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Principal Droite :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_droite
|
|
x: (3 * shipheart_largeur_page / menu_nombre_colonnes) + (menu_espace_colonnes / 2)
|
|
y: shipheart_hauteur_bandeau_haut
|
|
width: (shipheart_largeur_page / menu_nombre_colonnes) - menu_espace_colonnes
|
|
height: affichage_hauteur_utile
|
|
color: "transparent"
|
|
|
|
|
|
Shipheart_titre_2 {titre:qsTr("Système"); hauteur: shipheart_hauteur_bandeau_haut}
|
|
|
|
ListView {
|
|
id: liste_menu_droite
|
|
|
|
y : shipheart_hauteur_bandeau_haut
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_bandeau_haut
|
|
snapMode: GridView.SnapToRow // L'arret de l'affichage se fera sur une rangée entière
|
|
clip: true // Nécessaire pour que les Delegates s'arretent à l'intérieur de la GridView
|
|
model: ListModel {}
|
|
delegate: Rectangle {
|
|
width: liste_menu_droite.width
|
|
height: (shipheart_niveau_acces_en_cours >= niveau_mini) ? (liste_menu_droite.height / nombre_menus_affiches_sur_une_colonne) : 0
|
|
color: "transparent"
|
|
visible: (shipheart_niveau_acces_en_cours >= niveau_mini) ? true : false
|
|
Rectangle {
|
|
width: parent.width
|
|
height: parent.height -10
|
|
color: shipheart_couleur_fond_bouton
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
font.pixelSize: 20
|
|
text: libelle;
|
|
color: couleur_blanc_casse
|
|
visible: (libelle !== "") ? true : false
|
|
}
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
|
|
if (page_cible !== "")
|
|
{
|
|
stackView.push(page_cible, param_cible);
|
|
}
|
|
else boite_information_en_travaux.open();
|
|
}
|
|
}
|
|
Image {
|
|
source: alarme
|
|
sourceSize.height: 20
|
|
anchors {
|
|
bottom: parent.bottom
|
|
right: parent.right
|
|
}
|
|
visible: alarme !== ""
|
|
}
|
|
}
|
|
}
|
|
ScrollBar.vertical: ScrollBar {}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// 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
|
|
|
|
//.................................................
|
|
// Bouton retour
|
|
//.................................................
|
|
Rectangle {
|
|
id: bandeau_bas_zone_retour
|
|
width: (bandeau_bas_zone_bouton_reset.visible) ?
|
|
(parent.width * pourcentage_bandeau_bas_largeur_zone_retour - (parent.spacing / 2)) :
|
|
(parent.width - (2 * parent.padding))
|
|
height: shipheart_hauteur_bandeau_bas - parent.topPadding - parent.bottomPadding;
|
|
radius: shipheart_rayon_bouton
|
|
color: shipheart_couleur_fond_bouton
|
|
|
|
Image {
|
|
source: "/images/icone_retour.png"
|
|
sourceSize.height: 30
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
}
|
|
|
|
MouseArea {
|
|
id: mouse_area_bandeau_bas_zone_retour
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
|
|
shipheart_compteur_time_out_niveau_acces = shipheart_time_out_niveau_acces; // Rechargement au moment de la sortie (SDIR #187)
|
|
shipheart_flag_blocage_compteurs_pendant_config = false; // Déblocage du comptage (SDIR #187)
|
|
|
|
stackView.pop(stackView.get(shipheart_niveau_home)); // Retour direct à la Home Page quand on quitte les Paramètres Avancés...
|
|
}
|
|
}
|
|
}
|
|
|
|
//.................................................
|
|
// Bouton Reset :
|
|
//.................................................
|
|
Rectangle {
|
|
id: bandeau_bas_zone_bouton_reset
|
|
width: (parent.width * (1 - pourcentage_bandeau_bas_largeur_zone_retour)) - (parent.spacing / 2)
|
|
height: shipheart_hauteur_bandeau_bas - parent.topPadding - parent.bottomPadding;
|
|
radius: shipheart_rayon_bouton
|
|
color: shipheart_couleur_fond_bouton
|
|
visible: (shipheart_generation_shipbase >= shipheart_generation_shipbase_v2) &&
|
|
(shipheart_type_installation === shipheart_type_installation_shipbase)
|
|
Rectangle { // Barre grandissante pour montrer durée d'appui vs tempo nécessaire :
|
|
width: (valeur_timer_reset / shipheart_mouse_press_and_hold_interval_tres_long) * parent.width
|
|
height: parent.height
|
|
color: couleur_rouge_transparent
|
|
radius: shipheart_rayon_bouton
|
|
visible: mousearea_reset.pressed
|
|
}
|
|
Image {
|
|
source: mousearea_reset.pressed ? "/images/reset_actif.png" : "/images/reset_sombre.png"
|
|
sourceSize.height: 30
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
}
|
|
MouseArea {
|
|
id: mousearea_reset
|
|
anchors.fill: parent
|
|
onPressed: { // Déclenché lors de l'appui inital
|
|
valeur_timer_reset = 0;
|
|
timer_reset.running = true;
|
|
}
|
|
onClicked: { // Déclenché si l'appui n'a pas été suffisement long pour avoir un Press&Hold :
|
|
timer_reset.running = false;
|
|
valeur_timer_reset = 0;
|
|
}
|
|
onExited: { // Déclenché si le doigt sort de la zone du bouton (sinon, on continue à compter alors qu'on est sorti de la zone et même relaché le doigt !!)
|
|
timer_reset.running = false;
|
|
valeur_timer_reset = 0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// Boite en travaux :
|
|
//-------------------------------------------------------
|
|
Shipheart_boite_dialogue {
|
|
id: boite_information_en_travaux
|
|
niveau: 0
|
|
imageTitreSource: "/images/cone_chantier.png";
|
|
message: qsTr("Cette page est actuellement en travaux. <br />Elle sera rendue disponible très rapidement à travers une mise à jour.<br /><br />Merci de votre patience...<br /><br />L'équipe ShipHeart")
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// Boite d'information :
|
|
//-------------------------------------------------------
|
|
Shipheart_boite_dialogue_validation_securisee {
|
|
id: boite_validation_securisee
|
|
onClicked: {
|
|
switch(bouton)
|
|
{
|
|
case shipheart_boite_dialogue_bouton_4: // Confirmation sécurisée :
|
|
rebooter();
|
|
break;
|
|
|
|
case shipheart_boite_dialogue_bouton_2: // Annuler : on revient sur la page pour que l'on puisse enregistrer.
|
|
break;
|
|
|
|
default:
|
|
}
|
|
boite_validation_securisee.close();
|
|
}
|
|
}
|
|
|
|
//===========================================================
|
|
// 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()
|
|
{
|
|
|
|
mise_en_veille(0);
|
|
niveau_page = stackView.depth - 1; // Permet de stocker le niveau de la page dans la Stackview
|
|
|
|
shipheart_flag_blocage_compteurs_pendant_config = true; // Blocage du comptage pendant tout le temps où on est en config (SDIR #187)
|
|
|
|
//-----------------------------------------
|
|
// Nouvelle version :
|
|
if ((shipheart_fichier_a_charger !== "") || (shipheart_fichier_a_valider !== "")) flag_nouvelle_version = true;
|
|
else flag_nouvelle_version = false;
|
|
|
|
//-------------------------------------
|
|
// Menu de gauche :
|
|
//-------------------------------------
|
|
liste_menu_gauche.model.clear();
|
|
liste_menu_gauche.model.append({ libelle: qsTr("Circuits"), page_cible: "config_circuits.qml", param_cible: {}, icone: "icone_consommation_electrique.png", niveau_mini: 0, alarme: "" });
|
|
liste_menu_gauche.model.append({ libelle: qsTr("Réservoirs"), page_cible: "config_reservoirs.qml", param_cible: {}, icone: "reservoir_eau.png", niveau_mini: 0, alarme: "" });
|
|
liste_menu_gauche.model.append({ libelle: qsTr("Batteries"), page_cible: "config_batteries.qml", param_cible: {}, icone: "batterie_moyen.png", niveau_mini: 0, alarme: "" });
|
|
liste_menu_gauche.model.append({ libelle: qsTr("Capteurs"), page_cible: "config_capteurs.qml", param_cible: {}, icone: "icone_auxiliaires.png", niveau_mini: 0, alarme: "" });
|
|
liste_menu_gauche.model.append({ libelle: qsTr("Evènements"), page_cible: "config_events.qml", param_cible: {}, icone: "event.png", niveau_mini: 0, alarme: "" });
|
|
//liste_menu_gauche.model.append({ libelle: qsTr("TEST"), page_cible: "test_batterie.qml", param_cible: {}, niveau_mini: 0 });
|
|
//liste_menu_gauche.model.append({ libelle: qsTr("TEST"), page_cible: "test_tri_liste.qml", param_cible: {}, niveau_mini: 0 });
|
|
|
|
//-------------------------------------
|
|
// Menu de milieu gauche :
|
|
//-------------------------------------
|
|
liste_menu_milieu_gauche.model.clear();
|
|
liste_menu_milieu_gauche.model.append({ libelle: qsTr("Affichage"), page_cible: "config_affichage.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_milieu_gauche.model.append({ libelle: qsTr("Image d'accueil"), page_cible: "config_fichiers.qml", param_cible: {"mode_config_fichiers": shipheart_mode_config_fichiers_image_accueil}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_milieu_gauche.model.append({ libelle: qsTr("Pages personnalisées"), page_cible: "config_pages.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_milieu_gauche.model.append({ libelle: qsTr("Audio"), page_cible: "config_audio.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
// liste_menu_milieu_gauche.model.append({ libelle: qsTr("Evènements"), page_cible: "config_events.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
|
|
|
|
//-------------------------------------
|
|
// Menu du milieu droite :
|
|
//-------------------------------------
|
|
liste_menu_milieu_droite.model.clear();
|
|
liste_menu_milieu_droite.model.append({ libelle: qsTr("ShipHeart"), page_cible: "config_reseau_k_bus.qml", param_cible: {}, niveau_mini: 0, alarme: (shipheart_defaut_config_k_bus !== 0) ? "/images/coin_bas_droite_rouge.png" : ""});
|
|
liste_menu_milieu_droite.model.append({ libelle: qsTr("Ethernet & Wifi"), page_cible: "config_reseau_ethernet_wifi.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
// liste_menu_milieu.model.append({ libelle: qsTr("Wifi"), page_cible: "config_reseau_wifi.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_milieu_droite.model.append({ libelle: qsTr("One Wire"), page_cible: "config_reseau_one_wire.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_milieu_droite.model.append({ libelle: qsTr("NMEA 2000"), page_cible: "config_reseau_nmea.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_milieu_droite.model.append({ libelle: qsTr("J1939"), page_cible: "", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_milieu_droite.model.append({ libelle: qsTr("DMX"), page_cible: "", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
|
|
//-------------------------------------
|
|
// Menu de droite :
|
|
//-------------------------------------
|
|
liste_menu_droite.model.clear();
|
|
liste_menu_droite.model.append({ libelle: qsTr("Accès au paramètres"), page_cible: "config_acces_parametres.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_droite.model.append({ libelle: qsTr("Ship2net"), page_cible: "config_ship2net.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_droite.model.append({ libelle: qsTr("Journal de bord"), page_cible: "journal_de_bord.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
// liste_menu_droite.model.append({ libelle: qsTr("Protection"), page_cible: "", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
if (shipheart_type_installation !== shipheart_type_installation_shipbase)
|
|
{
|
|
liste_menu_droite.model.append({ libelle: qsTr("Configuration ShipRS"), page_cible: "config_shiprs.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
}
|
|
liste_menu_droite.model.append({ libelle: qsTr("Installation"), page_cible: "config_fichiers.qml", param_cible: {"mode_config_fichiers": shipheart_mode_config_fichiers_rapports}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_droite.model.append({ libelle: qsTr("Sauvegardes"), page_cible: "config_fichiers.qml", param_cible: {"mode_config_fichiers": shipheart_mode_config_fichiers_sauvegardes}, niveau_mini: 0, alarme: "" });
|
|
liste_menu_droite.model.append({ libelle: qsTr("Version"), page_cible: "config_version.qml", param_cible: {}, niveau_mini: 0, alarme: flag_nouvelle_version ? "/images/coin_bas_droite_bleu_koriolan.png" : "" });
|
|
|
|
switch(Number(shipheart_specifique_client[0]))
|
|
{
|
|
case shipheart_specifique_client_suncy: // Suncy Concept
|
|
liste_menu_droite.model.append({libelle: qsTr("Spécifique Suncy"), page_cible: "config_specifique_client_suncy.qml", param_cible: {}, niveau_mini: 0, alarme: "" });
|
|
break;
|
|
default: break;
|
|
}
|
|
|
|
liste_menu_droite.model.append({ libelle: qsTr("Accès réservé Koriolan"), page_cible: "config_koriolan.qml", param_cible: {}, niveau_mini: 10, alarme: "" });
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour périodique
|
|
//=============================================================================================================
|
|
function mise_a_jour_periodique()
|
|
{
|
|
var req, res;
|
|
|
|
//-----------------------------------------
|
|
// Etat config K-bus :
|
|
req = 'SELECT Valeur FROM TB_Systeme WHERE Nom="Defaut_config_k_bus" ';
|
|
res = bdd.requete_unique(req);
|
|
if (shipheart_defaut_config_k_bus !== Number(res[0]))
|
|
{
|
|
shipheart_defaut_config_k_bus = Number(res[0]);
|
|
init_page(); // Permet de mettre à jour le champ 'alarme' de tous les boutons... Un peu brut mais efficace.
|
|
}
|
|
|
|
//-----------------------------------------
|
|
// Nouvelle version :
|
|
if ((shipheart_fichier_a_charger !== "") || (shipheart_fichier_a_valider !== "")) // Nouvelle version présente :
|
|
{
|
|
if (!flag_nouvelle_version) // Etat précédent = pas de nouvelle version
|
|
{
|
|
flag_nouvelle_version = true;
|
|
init_page(); // Permet de mettre à jour le champ 'alarme' de tous les boutons... Un peu brut mais efficace.
|
|
}
|
|
}
|
|
else // Nouvelle version absente :
|
|
{
|
|
if (flag_nouvelle_version) // Etat précédent = nouvelle version présente
|
|
{
|
|
flag_nouvelle_version = false;
|
|
init_page(); // Permet de mettre à jour le champ 'alarme' de tous les boutons... Un peu brut mais efficace.
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|
|
|