1303 lines
60 KiB
QML
1303 lines
60 KiB
QML
import QtQuick 2.12
|
|
import QtQuick.Controls 2.12
|
|
|
|
import qt.koriolan.shipheart 1.0
|
|
import"fonctions_localisation.js" as Fonctions_localisation
|
|
|
|
|
|
|
|
Shipheart_page {
|
|
id: page_parametres
|
|
|
|
|
|
// Mis en forme :
|
|
readonly property double pourcentage_largeur_colonne_1: 0.25
|
|
readonly property double pourcentage_largeur_colonne_2: 0.25
|
|
readonly property double pourcentage_largeur_colonne_3: 0.25
|
|
readonly property double pourcentage_largeur_colonne_4: (1 - pourcentage_largeur_colonne_1 - pourcentage_largeur_colonne_2 - pourcentage_largeur_colonne_3)
|
|
readonly property int espace_colonnes_principales: 10
|
|
readonly property double pourcentage_hauteur_ligne_haut: 0.4
|
|
readonly property double pourcentage_hauteur_ligne_milieu: 0.4
|
|
readonly property int espace_lignes_principales: 10
|
|
readonly property double affichage_hauteur_utile: shipheart_hauteur_page - shipheart_hauteur_bandeau_haut - shipheart_hauteur_bandeau_bas - (3 * espace_lignes_principales)
|
|
|
|
readonly property double pourcentage_bandeau_bas_largeur_zone_retour: 0.93
|
|
readonly property double pourcentage_bandeau_bas_largeur_zone_parametres_avances: (1 - pourcentage_bandeau_bas_largeur_zone_retour)
|
|
|
|
readonly property int langues_nombre_colonnes_affichage: 1
|
|
readonly property int langues_nombre_lignes_affichage: 7
|
|
|
|
readonly property int temperatures_nombre_colonnes_affichage: 1
|
|
readonly property int temperatures_nombre_lignes_affichage: 3
|
|
|
|
readonly property int volumes_nombre_colonnes_affichage: 1
|
|
readonly property int volumes_nombre_lignes_affichage: 3
|
|
|
|
readonly property int affichage_nombre_colonnes_affichage: 1
|
|
readonly property int affichage_nombre_lignes_affichage: 3
|
|
|
|
readonly property int date_heure_nombre_colonnes_affichage: 1
|
|
readonly property int date_heure_nombre_lignes_affichage: 3
|
|
|
|
|
|
|
|
readonly property int periode_init_raffraichissement_parametres: 1 // En ms
|
|
readonly property int periode_raffraichissement_parametres: 1000 // En ms
|
|
|
|
|
|
// Affichage :
|
|
property int niveau_page: 0
|
|
property bool bouton_bandeau_bas_zone_retour_actif: false
|
|
property bool bouton_bandeau_bas_zone_parametres_actif: false
|
|
|
|
|
|
|
|
// Données :
|
|
property var table_backlight: [0, 13.75, 26.30, 37.85, 48.54, 58.50, 67.81, 76.55, 84.80, 92.60, 100.00] // Les valeurs correspondent à 0, 10%, 20%,... 90%, 100%
|
|
property var table_volume: [0, 30, 48, 60, 70, 79, 86, 91, 95, 98, 100] // Les valeurs correspondent à 0, 10%, 20%,... 90%, 100%
|
|
|
|
// 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();
|
|
}
|
|
}
|
|
}
|
|
|
|
// Titre de la page :
|
|
Shipheart_titre_1 {titre:qsTr("Paramètres"); hauteur: shipheart_hauteur_bandeau_haut}
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Colonne 1 :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_colonne_1
|
|
x: 0
|
|
y: shipheart_hauteur_bandeau_haut;
|
|
width: (shipheart_largeur_page * pourcentage_largeur_colonne_1) - (espace_colonnes_principales / 2);
|
|
height: affichage_hauteur_utile * (pourcentage_hauteur_ligne_haut + pourcentage_hauteur_ligne_milieu) + espace_lignes_principales;
|
|
color: "transparent"
|
|
|
|
// Titre du paragrapahe :
|
|
Shipheart_titre_2 {titre:qsTr("Langue"); hauteur: shipheart_hauteur_titre_2}
|
|
|
|
GridView {
|
|
id: grid_langues
|
|
x: 0
|
|
y: shipheart_hauteur_titre_2
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_titre_2;
|
|
cellWidth: parent.width / langues_nombre_colonnes_affichage;
|
|
cellHeight: height / langues_nombre_lignes_affichage;
|
|
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: modele_langues
|
|
|
|
delegate: Item {
|
|
Rectangle {
|
|
x: 5
|
|
width:grid_langues.cellWidth - 10
|
|
height:grid_langues.cellHeight - 10
|
|
color: actif ? shipheart_couleur_fond_bouton_actif : shipheart_couleur_fond_bouton
|
|
opacity: 0.5
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
text: nom
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignLeft
|
|
leftPadding: 10
|
|
font.pixelSize: 15
|
|
font.weight: actif ? Font.Bold : Font.Normal
|
|
color: couleur_blanc_casse
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
mise_a_jour_langue(index);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ListModel {
|
|
id: modele_langues
|
|
}
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Colonne 2 - Haut :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_colonne_2_haut
|
|
x: (shipheart_largeur_page * pourcentage_largeur_colonne_1) + (espace_colonnes_principales / 2);
|
|
y: shipheart_hauteur_bandeau_haut;
|
|
width: (shipheart_largeur_page * pourcentage_largeur_colonne_2) - (espace_colonnes_principales / 2);
|
|
height: affichage_hauteur_utile * pourcentage_hauteur_ligne_haut;
|
|
color: "transparent"
|
|
|
|
|
|
// Titre du paragrapahe :
|
|
Shipheart_titre_2 {titre:qsTr("Températures")}
|
|
|
|
GridView {
|
|
id: grid_temperatures
|
|
x: 0
|
|
y: shipheart_hauteur_titre_2
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_titre_2;
|
|
cellWidth: parent.width / temperatures_nombre_colonnes_affichage;
|
|
cellHeight: height / temperatures_nombre_lignes_affichage;
|
|
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: modele_temperatures
|
|
|
|
delegate: Item {
|
|
Rectangle {
|
|
x: 5
|
|
width:grid_temperatures.cellWidth - 10
|
|
height:grid_temperatures.cellHeight - 10
|
|
color: actif ? shipheart_couleur_fond_bouton_actif : shipheart_couleur_fond_bouton
|
|
opacity: 0.5
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
text: nom
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignLeft
|
|
leftPadding: 10
|
|
font.pixelSize: 15
|
|
font.weight: actif ? Font.Bold : Font.Normal
|
|
color: couleur_blanc_casse
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
mise_a_jour_temperatures(index);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ListModel {
|
|
id: modele_temperatures
|
|
}
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Colonne 2 - Bas :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_colonne_2_bas
|
|
|
|
x: (shipheart_largeur_page * pourcentage_largeur_colonne_1) + (espace_colonnes_principales / 2);
|
|
y: shipheart_hauteur_bandeau_haut + zone_affichage_colonne_2_haut.height + espace_lignes_principales;
|
|
width: (shipheart_largeur_page * pourcentage_largeur_colonne_2) - (espace_colonnes_principales / 2);
|
|
height: affichage_hauteur_utile * pourcentage_hauteur_ligne_milieu;
|
|
color: "transparent"
|
|
|
|
// Titre du paragrapahe :
|
|
Shipheart_titre_2 {titre:qsTr("Volumes")}
|
|
|
|
GridView {
|
|
id: grid_volumes
|
|
x: 0
|
|
y: shipheart_hauteur_titre_2
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_titre_2;
|
|
cellWidth: parent.width / volumes_nombre_colonnes_affichage;
|
|
cellHeight: height / volumes_nombre_lignes_affichage;
|
|
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: modele_volumes
|
|
|
|
delegate: Item {
|
|
Rectangle {
|
|
x: 5
|
|
width:grid_volumes.cellWidth - 10
|
|
height:grid_volumes.cellHeight - 10
|
|
color: actif ? shipheart_couleur_fond_bouton_actif : shipheart_couleur_fond_bouton
|
|
opacity: 0.5
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
text: nom
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignLeft
|
|
leftPadding: 10
|
|
font.pixelSize: 15
|
|
font.weight: actif ? Font.Bold : Font.Normal
|
|
color: couleur_blanc_casse
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
mise_a_jour_volumes(index);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ListModel {
|
|
id: modele_volumes
|
|
}
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Colonne 3 - Haut :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_colonne_3_haut
|
|
|
|
x: (shipheart_largeur_page * (pourcentage_largeur_colonne_1 + pourcentage_largeur_colonne_2)) + (espace_colonnes_principales / 2);
|
|
y: shipheart_hauteur_bandeau_haut;
|
|
width: (shipheart_largeur_page * pourcentage_largeur_colonne_3) - (espace_colonnes_principales / 2);
|
|
height: affichage_hauteur_utile * pourcentage_hauteur_ligne_haut;
|
|
color: "transparent"
|
|
visible: (shipheart_type_installation === shipheart_type_installation_shipbase)
|
|
|
|
// Titre du paragrapahe :
|
|
Shipheart_titre_2 {titre:qsTr("Affichage"); hauteur: shipheart_hauteur_titre_2}
|
|
|
|
GridView {
|
|
id: grid_affichage
|
|
x: 0
|
|
y: shipheart_hauteur_titre_2
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_titre_2;
|
|
cellWidth: parent.width / affichage_nombre_colonnes_affichage;
|
|
cellHeight: height / affichage_nombre_lignes_affichage;
|
|
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: modele_affichage
|
|
|
|
delegate: Item {
|
|
Rectangle {
|
|
x: 5
|
|
width:grid_affichage.cellWidth - 10
|
|
height:grid_affichage.cellHeight - 10
|
|
color: actif ? shipheart_couleur_fond_bouton_actif : shipheart_couleur_fond_bouton
|
|
opacity: 0.5
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
text: actif ? texte_actif : texte_inactif
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignLeft
|
|
leftPadding: 10
|
|
font.pixelSize: 15
|
|
font.weight: actif ? Font.Bold : Font.Normal
|
|
color: couleur_blanc_casse
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
mise_a_jour_affichage(model.index);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ListModel {
|
|
id: modele_affichage
|
|
}
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Colonne 3 - Bas :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_colonne_3_bas
|
|
|
|
x: (shipheart_largeur_page * (pourcentage_largeur_colonne_1 + pourcentage_largeur_colonne_2)) + (espace_colonnes_principales / 2);
|
|
y: shipheart_hauteur_bandeau_haut + zone_affichage_colonne_3_haut.height + espace_lignes_principales;
|
|
width: (shipheart_largeur_page * pourcentage_largeur_colonne_3) - (espace_colonnes_principales / 2);
|
|
height: affichage_hauteur_utile * pourcentage_hauteur_ligne_milieu;
|
|
color: "transparent"
|
|
|
|
// Titre du paragrapahe :
|
|
Shipheart_titre_2 {titre:qsTr("Date et heure")}
|
|
|
|
GridView {
|
|
id: grid_date_heure
|
|
x: 0
|
|
y: shipheart_hauteur_titre_2
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_titre_2;
|
|
cellWidth: parent.width / date_heure_nombre_colonnes_affichage;
|
|
cellHeight: height / date_heure_nombre_lignes_affichage;
|
|
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: modele_date_heure
|
|
|
|
delegate: Item {
|
|
Rectangle {
|
|
x: 5
|
|
width:grid_date_heure.cellWidth - 10
|
|
height:grid_date_heure.cellHeight - 10
|
|
color: actif ? shipheart_couleur_fond_bouton_actif : shipheart_couleur_fond_bouton
|
|
opacity: 0.5
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
text: actif ? texte_actif : texte_inactif
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignLeft
|
|
leftPadding: 10
|
|
font.pixelSize: 15
|
|
font.weight: actif ? Font.Bold : Font.Normal
|
|
color: couleur_blanc_casse
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
mise_a_jour_date_heure(model.index);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ListModel {
|
|
id: modele_date_heure
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran Colonne 4 :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_colonne_4
|
|
|
|
x: (shipheart_largeur_page * (pourcentage_largeur_colonne_1 + pourcentage_largeur_colonne_2 + pourcentage_largeur_colonne_3)) + (espace_colonnes_principales / 2);
|
|
y: shipheart_hauteur_bandeau_haut;
|
|
width: (shipheart_largeur_page * pourcentage_largeur_colonne_4) - (espace_colonnes_principales / 2);
|
|
height: affichage_hauteur_utile * (pourcentage_hauteur_ligne_haut + pourcentage_hauteur_ligne_milieu) + espace_lignes_principales;
|
|
|
|
color: "transparent"
|
|
|
|
// Titre du paragrapahe :
|
|
Shipheart_titre_2 {titre:qsTr("Protection"); hauteur: shipheart_hauteur_titre_2; visible: (modele_parametres_4.count > 0) ? true : false}
|
|
|
|
GridView {
|
|
id: grid_parametres_4
|
|
x: 0
|
|
y: shipheart_hauteur_titre_2
|
|
width: parent.width
|
|
height: parent.height - shipheart_hauteur_titre_2;
|
|
cellWidth: parent.width / langues_nombre_colonnes_affichage;
|
|
cellHeight: height / langues_nombre_lignes_affichage;
|
|
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: modele_parametres_4
|
|
|
|
delegate: Item {
|
|
Rectangle {
|
|
x: 5
|
|
width:grid_affichage.cellWidth - 10
|
|
height:grid_affichage.cellHeight - 10
|
|
color: actif ? shipheart_couleur_fond_bouton_actif : shipheart_couleur_fond_bouton
|
|
opacity: 0.5
|
|
radius: shipheart_rayon_bouton
|
|
Text {
|
|
text: actif ? texte_actif : texte_inactif
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignLeft
|
|
leftPadding: 10
|
|
font.pixelSize: 15
|
|
font.weight: actif ? Font.Bold : Font.Normal
|
|
color: couleur_blanc_casse
|
|
}
|
|
|
|
MouseArea {
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
//A supprimer probablement changer_validation_economiseur();
|
|
mise_a_jour_parametre_4(nom);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
ListModel {
|
|
id: modele_parametres_4
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran bas - Gauche :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_bas_gauche
|
|
x: 0;
|
|
y: shipheart_hauteur_bandeau_haut + zone_affichage_colonne_1.height + espace_lignes_principales;
|
|
width: (shipheart_largeur_page * (pourcentage_largeur_colonne_1 + pourcentage_largeur_colonne_2)) - (espace_colonnes_principales / 2)
|
|
height: affichage_hauteur_utile * (1 - pourcentage_hauteur_ligne_haut - pourcentage_hauteur_ligne_milieu) + 5; // +5 pour compenser margin-top du bandeau bas
|
|
color: "transparent"
|
|
visible: (shipheart_type_installation === shipheart_type_installation_shipbase)
|
|
|
|
// Titre du paragraphe :
|
|
Shipheart_titre_2 {titre:qsTr("Son")}
|
|
|
|
Slider {
|
|
id: slider_volume
|
|
|
|
y: shipheart_hauteur_titre_2
|
|
width: parent.width * 0.9
|
|
height: (parent.height - shipheart_hauteur_titre_2) * 0.8
|
|
padding: 0
|
|
anchors {
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
from: 0
|
|
value: 25
|
|
to: 100
|
|
stepSize:1 // Permet de n'avoir que des valeurs en %, sans décimales (il est probable que cela accélère le traitement mais pas vérifié...)
|
|
|
|
background: Rectangle {
|
|
x: parent.leftPadding
|
|
y: 0
|
|
width: parent.width
|
|
height: parent.height
|
|
radius: shipheart_rayon_bouton
|
|
color: shipheart_couleur_fond_bouton
|
|
|
|
Rectangle {
|
|
width: slider_volume.visualPosition * parent.width
|
|
height: parent.height
|
|
color: shipheart_couleur_fond_bouton_actif
|
|
radius: shipheart_rayon_bouton
|
|
Behavior on width {
|
|
NumberAnimation {
|
|
properties:"width"
|
|
duration: 350
|
|
easing.type: Easing.OutQuad
|
|
}
|
|
}
|
|
|
|
Text { // Affichage de la valeur dans la barre lorsque le circuit est ON :
|
|
text: slider_volume.value.toFixed(0) + "%"
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
font.pixelSize: 18
|
|
font.weight: Font.Bold
|
|
color: shipheart_couleur_texte_slider
|
|
visible: (slider_volume.value === 0) ? false : true
|
|
}
|
|
}
|
|
}
|
|
|
|
handle: Rectangle {
|
|
x: parent.leftPadding + (parent.visualPosition * (parent.availableWidth - width))
|
|
y: (parent.availableHeight / 2) - (height / 2)
|
|
implicitWidth: 80 // Le bouton n'étant pas visible
|
|
implicitHeight: parent.height
|
|
color: couleur_rouge_transparent
|
|
visible: (slider_volume.value === 0) ? true : false
|
|
|
|
Text { // Affichage de la valeur dans le bouton lorsque le circuit est OFF :
|
|
text: "Off"
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
font.pixelSize: 18
|
|
font.weight: Font.Bold
|
|
color: couleur_rouge
|
|
visible: (slider_volume.value === 0) ? true : false
|
|
}
|
|
}
|
|
onMoved: {
|
|
// shipheart_clic(); // SDIR #145
|
|
reload_economiseur(); // SDIR #145 Permet de réarmer l'économiseur mais par démettre de bip qui viendrait perturber les bips de réglage de niveau sonore.
|
|
if (!timer_time_out_volume.running)
|
|
{
|
|
timer_time_out_volume.running = true
|
|
|
|
var req
|
|
req = 'UPDATE TB_Configuration SET Valeur="' + consigne_volume(slider_volume.value) + '" WHERE Nom="Consigne_volume" '
|
|
bdd.requete_unique(req);
|
|
synchro_bdd(shipheart_type_synchro_data);
|
|
//console.log("ON MOVED : Nouvelle valeur de Volume = " + slider_volume.value + "% et la requête est : " + req)
|
|
}
|
|
}
|
|
Timer { // Timer qui permet de brider les envoi de mise à jour dans la BDD
|
|
id: timer_time_out_volume
|
|
interval: 400
|
|
triggeredOnStart: false
|
|
running: false
|
|
repeat: false
|
|
onTriggered: { // Permet d'être sûr que la dernière position est bien enregistrée dans la BDD, même si l'arrêt s'est produit pendant que le timer tournait
|
|
var req
|
|
req = 'UPDATE TB_Configuration SET Valeur="' + consigne_volume(slider_volume.value) + '" WHERE Nom="Consigne_volume" '
|
|
bdd.requete_unique(req);
|
|
synchro_bdd(shipheart_type_synchro_data);
|
|
//console.log("TIMER : Nouvelle valeur de Volume = " + slider_volume.value + "% et la requête est : " + req)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------
|
|
// Ecran bas - Droite :
|
|
//-------------------------------------------------------
|
|
Rectangle {
|
|
id: zone_affichage_bas_droite
|
|
x: zone_affichage_bas_gauche.width + (espace_colonnes_principales / 2)
|
|
y: shipheart_hauteur_bandeau_haut + zone_affichage_colonne_1.height + espace_lignes_principales;
|
|
width: (shipheart_largeur_page * (pourcentage_largeur_colonne_3 + pourcentage_largeur_colonne_4)) - (espace_colonnes_principales / 2)
|
|
height: affichage_hauteur_utile * (1 - pourcentage_hauteur_ligne_haut - pourcentage_hauteur_ligne_milieu) + 5; // +5 pour compenser margin-top du bandeau bas
|
|
color: "transparent"
|
|
visible: (shipheart_type_installation === shipheart_type_installation_shipbase)
|
|
|
|
// Titre du paragraphe :
|
|
Shipheart_titre_2 {titre:qsTr("Luminosité")}
|
|
|
|
Slider {
|
|
id: slider_backlight
|
|
|
|
y: shipheart_hauteur_titre_2
|
|
width: parent.width * 0.9
|
|
height: (parent.height - shipheart_hauteur_titre_2) * 0.8
|
|
padding: 0
|
|
anchors {
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
from: 20
|
|
value: 25
|
|
to: 100
|
|
stepSize:1 // Permet de n'avoir que des valeurs en %, sans décimales (il est probable que cela accélère le traitement mais pas vérifié...)
|
|
|
|
background: Rectangle {
|
|
x: parent.leftPadding
|
|
y: 0
|
|
width: parent.width
|
|
height: parent.height
|
|
radius: shipheart_rayon_bouton
|
|
color: shipheart_couleur_fond_bouton
|
|
|
|
Rectangle {
|
|
width: slider_backlight.visualPosition * parent.width
|
|
height: parent.height
|
|
color: shipheart_couleur_fond_bouton_actif
|
|
radius: shipheart_rayon_bouton
|
|
Behavior on width {
|
|
NumberAnimation {
|
|
properties:"width"
|
|
duration: 350
|
|
easing.type: Easing.OutQuad
|
|
}
|
|
}
|
|
|
|
Text { // Affichage de la valeur dans la barre
|
|
text: slider_backlight.value.toFixed(0) + "%"
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
verticalAlignment: Text.AlignVCenter
|
|
horizontalAlignment: Text.AlignHCenter
|
|
font.pixelSize: 18
|
|
font.weight: Font.Bold
|
|
color: shipheart_couleur_texte_slider
|
|
}
|
|
}
|
|
}
|
|
|
|
handle: Rectangle {
|
|
x: parent.leftPadding + (parent.visualPosition * (parent.availableWidth - width))
|
|
y: (parent.availableHeight / 2) - (height / 2)
|
|
implicitWidth: 80 // Le bouton n'étant pas visible
|
|
implicitHeight: parent.height
|
|
color: "transparent"
|
|
visible: false
|
|
}
|
|
onMoved: {
|
|
shipheart_clic();
|
|
if (!timer_time_out_backlight.running)
|
|
{
|
|
timer_time_out_backlight.running = true
|
|
|
|
var req
|
|
req = 'UPDATE TB_Configuration SET Valeur="' + consigne_backlight(slider_backlight.value) + '" WHERE Nom="Consigne_backlight" '
|
|
bdd.requete_unique(req);
|
|
synchro_bdd(shipheart_type_synchro_data);
|
|
console.log("ON MOVED : Nouvelle valeur de backlight = " + value + " et la requête est : " + req)
|
|
}
|
|
}
|
|
Timer { // Timer qui permet de brider les envoi de mise à jour dans la BDD
|
|
id: timer_time_out_backlight
|
|
interval: 400
|
|
triggeredOnStart: false
|
|
running: false
|
|
repeat: false
|
|
onTriggered: { // Permet d'être sûr que la dernière position est bien enregistrée dans la BDD, même si l'arrêt s'est produit pendant que le timer tournait
|
|
var req
|
|
req = 'UPDATE TB_Configuration SET Valeur="' + consigne_backlight(slider_backlight.value) + '" WHERE Nom="Consigne_backlight" '
|
|
bdd.requete_unique(req);
|
|
req = 'UPDATE TB_Configuration SET Valeur="' + consigne_backlight(slider_backlight.value) + '" WHERE Nom="Consigne_leds" '
|
|
bdd.requete_unique(req);
|
|
synchro_bdd(shipheart_type_synchro_data);
|
|
//console.log("TIMER : Nouvelle valeur de backlight = " + slider_backlight.value + " et la requête est : " + req)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//-------------------------------------------------------
|
|
// Bandeau bas :
|
|
//-------------------------------------------------------
|
|
Row {
|
|
x: 0
|
|
y: shipheart_hauteur_page - shipheart_hauteur_bandeau_bas;
|
|
width: shipheart_largeur_page;
|
|
height: shipheart_hauteur_bandeau_bas;
|
|
spacing: bandeau_bas_spacing * shipheart_largeur_page;
|
|
topPadding: 5
|
|
bottomPadding:5
|
|
|
|
|
|
//.................................................
|
|
// Bouton retour
|
|
//.................................................
|
|
Rectangle {
|
|
id: bandeau_bas_zone_retour
|
|
width: parent.width * 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
|
|
|
|
Image {
|
|
source: "/images/icone_retour.png"
|
|
sourceSize.height: 30
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
}
|
|
|
|
MouseArea { // Zone d'interaction. On est obligé de la mettre dans la grille pour que Rectangle et MouseArea soient frères ou parent/enfant ET qu'on n'occupe qu'un espace dans la grille.
|
|
id: mouse_area_bandeau_bas_zone_retour
|
|
anchors.fill: parent
|
|
onClicked: {
|
|
shipheart_clic();
|
|
stackView.pop()
|
|
}
|
|
}
|
|
}
|
|
|
|
//.................................................
|
|
// Paramètres avancés
|
|
//.................................................
|
|
Rectangle {
|
|
id: bandeau_bas_zone_parametres_avances
|
|
width: parent.width * pourcentage_bandeau_bas_largeur_zone_parametres_avances - (parent.spacing / 2)
|
|
height: shipheart_hauteur_bandeau_bas - parent.topPadding - parent.bottomPadding; //- (bandeau_bas_marge_verticale * 2);
|
|
radius: shipheart_rayon_bouton
|
|
color: shipheart_couleur_fond_bouton
|
|
|
|
Rectangle { // Barre diminuant selon l'évolution du compteur de time-out d'accès
|
|
width: (shipheart_compteur_time_out_niveau_acces / shipheart_time_out_niveau_acces) * parent.width
|
|
height: parent.height
|
|
color: couleur_green_yellow_transparent
|
|
opacity: 0.5
|
|
radius: shipheart_rayon_bouton
|
|
visible: (shipheart_time_out_niveau_acces > 0) && (shipheart_compteur_time_out_niveau_acces > 0)
|
|
}
|
|
|
|
/* ChartView {
|
|
anchors {
|
|
horizontalCenter: parent.horizontalCenter
|
|
verticalCenter: parent.verticalCenter
|
|
}
|
|
width: parent.width * 1.1
|
|
height: parent.height * 1.1
|
|
legend.visible: false
|
|
antialiasing: true
|
|
backgroundColor: "transparent"
|
|
margins.bottom: 0
|
|
margins.top: 0
|
|
margins.left: 0
|
|
margins.right: 0
|
|
visible: (shipheart_time_out_niveau_acces > 0) && (shipheart_compteur_time_out_niveau_acces > 0)
|
|
PieSeries {
|
|
size: 1.0
|
|
holeSize: 0.9
|
|
startAngle: 0
|
|
endAngle: visible ? (shipheart_compteur_time_out_niveau_acces * 360) / shipheart_time_out_niveau_acces : 0
|
|
|
|
PieSlice {
|
|
value: 2
|
|
color: couleur_green_yellow
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
|
|
Image {
|
|
id: image_parametres
|
|
source: (shipheart_compteur_time_out_niveau_acces === 0) && (shipheart_time_out_niveau_acces !== -1) ? "/images/icone_parametres.png" : "/images/icone_parametres_acces_autorise.png"
|
|
sourceSize.height: 25
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
}
|
|
|
|
Image {
|
|
id: image_alarme_paramètres // Affichage du coin inférieur-droit en rouge si une erreur de paramètres est détectée
|
|
source: "/images/coin_bas_droite_rouge.png"
|
|
sourceSize.height: 20
|
|
anchors {
|
|
bottom: parent.bottom
|
|
right: parent.right
|
|
}
|
|
visible: shipheart_defaut_config_k_bus
|
|
}
|
|
Image {
|
|
id: image_info_paramètres // Affichage du coin inférieur-droit en bleu si une nouvelle version est dispo
|
|
source: "/images/coin_bas_droite_bleu_koriolan.png"
|
|
sourceSize.height: 20
|
|
anchors {
|
|
bottom: parent.bottom
|
|
right: parent.right
|
|
}
|
|
visible: !image_alarme_paramètres.visible &&
|
|
((shipheart_fichier_a_charger !== "") || (shipheart_fichier_a_valider !== ""))
|
|
}
|
|
|
|
/* Text { // Affichage de la valeur dans la barre
|
|
text: (shipheart_compteur_time_out_niveau_acces > 59) ? (Math.trunc(shipheart_compteur_time_out_niveau_acces / 60) + " min " + (shipheart_compteur_time_out_niveau_acces % 60) + " s") : (shipheart_compteur_time_out_niveau_acces + " s")
|
|
anchors.fill: parent // Permet que le texte occupe tout l'espace du parent (et que le centrage vertical qui suit fonctionne...)
|
|
// bottomPadding: 5
|
|
verticalAlignment: Text.AlignBottom
|
|
horizontalAlignment: Text.AlignHCenter
|
|
font.pixelSize: 10
|
|
color: couleur_gris_tres_pale
|
|
visible: (shipheart_compteur_time_out_niveau_acces === 0) || (shipheart_time_out_niveau_acces === -1) ? false : true
|
|
}
|
|
*/
|
|
MouseArea { // Zone d'interaction. On est obligé de la mettre dans la grille pour que Rectangle et MouseArea soient frères ou parent/enfant ET qu'on n'occupe qu'un espace dans la grille.
|
|
id: mouse_area_bandeau_bas_zone_parametres
|
|
anchors.fill: parent
|
|
pressAndHoldInterval: shipheart_mouse_press_and_hold_interval_long
|
|
onClicked: {
|
|
shipheart_clic();
|
|
|
|
console.log("shipheart_compteur_time_out_niveau_acces = " + shipheart_compteur_time_out_niveau_acces + ", shipheart_time_out_niveau_acces = " + shipheart_time_out_niveau_acces + " et shipheart_niveau_acces_en_cours = " + shipheart_niveau_acces_en_cours)
|
|
|
|
if (shipheart_time_out_niveau_acces === -1) // Cas où il n'y a aucune protection :
|
|
{
|
|
console.log("L'accès est validé sans entrer de code car 'time_out_access' = -1");
|
|
shipheart_compteur_time_out_niveau_acces = 0; // ... le compteur est laissé à 0 car inutile,
|
|
shipheart_niveau_acces_en_cours = shipheart_niveau_acces_user; // ... et on donne un accès USER (si on veut accéder en Admin ou Koriolan, il faut d'abord revalider un contrôle d'accès)
|
|
}
|
|
|
|
if(shipheart_niveau_acces_en_cours > shipheart_niveau_acces_aucun) stackView.push("parametres_avances.qml")
|
|
else stackView.push("protection.qml", {"protection_mode": protection_mode_access_parametres_avances})
|
|
}
|
|
onPressAndHold: {
|
|
shipheart_compteur_time_out_niveau_acces = 0; // Dans le cas d'un appui long, on dévalide l'autorisation d'accès en cours...
|
|
shipheart_niveau_acces_en_cours = shipheart_niveau_acces_aucun;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//-------------------------------------------------------
|
|
// Nettoyage de l'écran :
|
|
//-------------------------------------------------------
|
|
Shipheart_boite_dialogue_nettoyage_ecran {
|
|
id: boite_dialogue_nettoyage_ecran
|
|
onOpened: {
|
|
shipheart_flag_nettoyage_ecran_en_cours = true;
|
|
}
|
|
onClosed: {
|
|
shipheart_flag_nettoyage_ecran_en_cours = false;
|
|
}
|
|
}
|
|
|
|
//===========================================================
|
|
// 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;
|
|
var i;
|
|
|
|
mise_en_veille(0);
|
|
niveau_page = stackView.depth - 1; // Permet de stocker le niveau de la page dans la Stackview
|
|
|
|
//---------------------------------------------
|
|
// Init des différentes modèles :
|
|
//---------------------------------------------
|
|
init_modeles();
|
|
|
|
//---------------------------------------------
|
|
// Init des paramètres d'accès :
|
|
//---------------------------------------------
|
|
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Time_out_acces" ';
|
|
res = bdd.requete_unique(req);
|
|
shipheart_time_out_niveau_acces = Number(res[0]);
|
|
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Init des modèles
|
|
//=============================================================================================================
|
|
function init_modeles()
|
|
{
|
|
var req, res;
|
|
var i;
|
|
|
|
|
|
//---------------------------------------------
|
|
// Init des langues :
|
|
// NB : la valeur de 'shipheart_langue' a été initialisée dans 'home.qml' avec la valeur actuelle de TB_Configuration.Langue
|
|
//---------------------------------------------
|
|
modele_langues.clear(); // RAZ des valeurs existantes
|
|
|
|
for (i = 0; i < Fonctions_localisation.nb_langues(); i ++)
|
|
{
|
|
modele_langues.append({"nom": Fonctions_localisation.nom_langue(i), "code_langue": Fonctions_localisation.code_langue(i), "actif": (shipheart_langue === i)});
|
|
}
|
|
|
|
//---------------------------------------------
|
|
// Init des températures :
|
|
// NB : la valeur de 'shipheart_unite_temperature' a été initialisée dans 'home.qml' avec la valeur actuelle de TB_Configuration.Unite_temperature
|
|
//---------------------------------------------
|
|
modele_temperatures.clear(); // RAZ des valeurs existantes
|
|
|
|
for (i = 0; i < Fonctions_localisation.nb_unites_temperature(); i ++)
|
|
{
|
|
modele_temperatures.append({"nom": Fonctions_localisation.nom_unite_temperature(i), "symbole": Fonctions_localisation.symbole_unite_temperature(i), "actif": (shipheart_unite_temperature === i)});
|
|
}
|
|
|
|
//---------------------------------------------
|
|
// Init des volumes :
|
|
// NB : la valeur de 'shipheart_unite_volume' a été initialisée dans 'home.qml' avec la valeur actuelle de TB_Configuration.Unite_volume
|
|
//---------------------------------------------
|
|
modele_volumes.clear(); // RAZ des valeurs existantes
|
|
|
|
for (i = 0; i < Fonctions_localisation.nb_unites_volume(); i ++)
|
|
{
|
|
modele_volumes.append({"nom": Fonctions_localisation.nom_unite_volume(i), "symbole": Fonctions_localisation.symbole_unite_volume(i), "actif": (shipheart_unite_volume === i)});
|
|
}
|
|
|
|
|
|
//---------------------------------------------------
|
|
// Init des paramètres des la 3ième colonne - haut :
|
|
//---------------------------------------------------
|
|
modele_affichage.clear();
|
|
modele_affichage.append({"nom": "Validation_economiseur", "texte_actif": qsTr("Economiseur d'écran : désactivé"), "texte_inactif": qsTr("Economiseur d'écran : normal"), "actif": !get_validation_economiseur()});
|
|
modele_affichage.append({"nom": "Validation_leds", "texte_actif": qsTr("Flash LEDs : désactivé"), "texte_inactif": qsTr("Flash LEDs : normal"), "actif": !get_validation_leds()});
|
|
modele_affichage.append({"nom": "Nettoyage_ecran", "texte_actif": qsTr("Nettoyage de l'écran"), "texte_inactif": qsTr("Nettoyage de l'écran"), "actif": false});
|
|
|
|
//-------------------------------------------------
|
|
// Init des paramètres des la 3ième colonne - bas :
|
|
//-------------------------------------------------
|
|
modele_date_heure.clear();
|
|
modele_date_heure.append({"nom": "Heure_ete", "texte_actif": qsTr("Heure d'été"), "texte_inactif": qsTr("Heure d'hiver"), "actif": (shipheart_heure_ete === 0 ? false : true)});
|
|
|
|
|
|
//---------------------------------------------
|
|
// Init des paramètres des la 4ième colonne :
|
|
//---------------------------------------------
|
|
modele_parametres_4.clear();
|
|
if (Number(shipheart_specifique_client[0]) === shipheart_specifique_client_suncy) modele_parametres_4.append({"nom": "retour_home_suncy", "texte_actif": qsTr("Verrouiller le bateau"), "texte_inactif": qsTr("Verrouiller le bateau"), "actif": false});
|
|
|
|
mise_a_jour_slider_backlight();
|
|
mise_a_jour_slider_volume();
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// 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);
|
|
shipheart_defaut_config_k_bus = Number(res[0]);
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour de la langue
|
|
//=============================================================================================================
|
|
function mise_a_jour_langue(rang)
|
|
{
|
|
var i;
|
|
var req;
|
|
|
|
|
|
// Recherche dans le modèle de l'entrée correspondant à l'entrée sélectionnée :
|
|
for (i = 0; i < modele_langues.count; i ++)
|
|
{
|
|
if (i === rang) modele_langues.setProperty(i, "actif", true); // Passage de l'entrée en actif (pour visu)
|
|
else modele_langues.setProperty(i, "actif", false); // Passage de toutes les autres entrées à inactif (pour visu)
|
|
}
|
|
|
|
// Mise à jour de la langue en cours dans TB_Configuration :
|
|
req = 'UPDATE TB_Configuration SET Valeur="' + rang + '" WHERE Nom="Langue" '
|
|
bdd.requete_unique(req);
|
|
|
|
shipheart_langue = rang;
|
|
shipheart_code_pays = Fonctions_localisation.code_pays(shipheart_langue);
|
|
shipheart_code_langue = Fonctions_localisation.code_langue(shipheart_langue);
|
|
|
|
console.log("==================> AVANT")
|
|
backend.change_langue(shipheart_code_langue);
|
|
console.log("==================> APRES")
|
|
|
|
init_modeles(); // Permet que les modèles d'affichage de la page soient mis à jour avec la nouvelle langue...
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour de l'unité de température
|
|
//=============================================================================================================
|
|
function mise_a_jour_temperatures(rang)
|
|
{
|
|
var i;
|
|
var req;
|
|
|
|
// Recherche dans le modèle de l'entrée correspondant à l'entrée sélectionnée :
|
|
for (i = 0; i < modele_temperatures.count; i ++)
|
|
{
|
|
if (i === rang) modele_temperatures.setProperty(i, "actif", true); // Passage de l'entrée en actif (pour visu)
|
|
else modele_temperatures.setProperty(i, "actif", false); // Passage de toutes les autres entrées à inactif (pour visu)
|
|
}
|
|
|
|
shipheart_unite_temperature = rang;
|
|
shipheart_unite_temperature_symbole = modele_temperatures.get(rang).symbole;
|
|
|
|
// Mise à jour de l'unité de température en cours dans TB_Configuration :
|
|
req = 'UPDATE TB_Configuration SET Valeur="' + rang + '" WHERE Nom="Unite_temperature" '
|
|
//console.log("Requête = [" + req + "]");
|
|
bdd.requete_unique(req);
|
|
}
|
|
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour de l'unité de volumes
|
|
//=============================================================================================================
|
|
function mise_a_jour_volumes(rang)
|
|
{
|
|
var i;
|
|
var req;
|
|
|
|
// Recherche dans le modèle de l'entrée correspondant à l'entrée sélectionnée :
|
|
for (i = 0; i < modele_volumes.count; i ++)
|
|
{
|
|
if (i === rang) modele_volumes.setProperty(i, "actif", true); // Passage de l'entrée en actif (pour visu)
|
|
else modele_volumes.setProperty(i, "actif", false); // Passage de toutes les autres entrées à inactif (pour visu)
|
|
}
|
|
|
|
shipheart_unite_volume = rang;
|
|
shipheart_unite_volume_symbole = modele_volumes.get(rang).symbole;
|
|
|
|
// Mise à jour de l'unité de volumes en cours dans TB_Configuration :
|
|
req = 'UPDATE TB_Configuration SET Valeur="' + rang + '" WHERE Nom="Unite_volume" '
|
|
bdd.requete_unique(req);
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour des paramètrs de la 3ième colonne - haut
|
|
//=============================================================================================================
|
|
function mise_a_jour_affichage(index)
|
|
{
|
|
var i;
|
|
var nb;
|
|
|
|
// Mise à jour du paramètre ayant été touché dans la BDD :
|
|
if (modele_affichage.get(index).nom === "Validation_economiseur") changer_validation_economiseur();
|
|
else if (modele_affichage.get(index).nom === "Validation_leds") changer_validation_leds();
|
|
else if (modele_affichage.get(index).nom === "Nettoyage_ecran") boite_dialogue_nettoyage_ecran.open();
|
|
|
|
// Mise à jour de l'état de chaque paramètres :
|
|
nb = modele_affichage.count;
|
|
|
|
for (i = 0; i < nb; i ++)
|
|
{
|
|
if (modele_affichage.get(i).nom === "Validation_economiseur") modele_affichage.setProperty(i, "actif", !get_validation_economiseur());
|
|
else if (modele_affichage.get(i).nom === "Validation_leds") modele_affichage.setProperty(i, "actif", !get_validation_leds());
|
|
}
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour des paramètrs de la 3ième colonne - bas
|
|
//=============================================================================================================
|
|
function mise_a_jour_date_heure(index)
|
|
{
|
|
var i;
|
|
var nb;
|
|
|
|
|
|
// Mise à jour du paramètre ayant été touché dans la BDD :
|
|
if (modele_date_heure.get(index).nom === "Heure_ete")
|
|
{
|
|
if (shipheart_heure_ete === 0) mise_a_jour_heure_ete(1);
|
|
else mise_a_jour_heure_ete(0);
|
|
}
|
|
|
|
// Mise à jour de l'état de chaque paramètres :
|
|
nb = modele_date_heure.count;
|
|
|
|
for (i = 0; i < nb; i ++)
|
|
{
|
|
if (modele_date_heure.get(i).nom === "Heure_ete") modele_date_heure.setProperty(i, "actif", (shipheart_heure_ete === 0 ? false : true));
|
|
}
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour des paramètres de la 4ième colonne
|
|
//=============================================================================================================
|
|
function mise_a_jour_parametre_4(nom)
|
|
{
|
|
var res;
|
|
var nb;
|
|
var i;
|
|
|
|
nb = modele_parametres_4.count;
|
|
|
|
for (i = 0; i < nb; i ++)
|
|
{
|
|
switch (modele_parametres_4.get(i).nom)
|
|
{
|
|
//--------------------------------------
|
|
case "retour_home_suncy":
|
|
|
|
// Désactivation du moteur si un numéro de circuit valide pour le faire existe :
|
|
for (i = 1; i < shipheart_specifique_client.length; i ++) // Parcourt de tous les paramètres spécifiques au client (sauf le 1er qui est le n° de client et qui est déjà connu et testé)
|
|
{
|
|
var parametre = shipheart_specifique_client[i].split('='); // Séparation du nom du champ et de sa valeur
|
|
if (parametre[0] === 'id_circuit_activation_moteur') // Si le paramètre en cours est bien celui concernant l'ID du circuit d'activation du moteur
|
|
{
|
|
bdd.requete_unique("UPDATE TB_Circuits SET New_consigne=0 WHERE Cle_primaire='" + Number(parametre[1]) + "' ")
|
|
break; // Inutile d'aller plus loin...
|
|
}
|
|
}
|
|
|
|
// Coupure de tous les circuits par défaut :
|
|
// bdd.requete_unique('UPDATE TB_Circuits SET New_consigne=0 ');
|
|
|
|
|
|
stackView.pop(null); // retour directement à la page "home_attente.qml" qui va se charger de trouver la Home Page à utiliser et va la charger.
|
|
|
|
break;
|
|
|
|
default:
|
|
break;
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour du slider du backlight
|
|
//=============================================================================================================
|
|
function mise_a_jour_slider_backlight()
|
|
{
|
|
var res;
|
|
|
|
//var i;
|
|
//for (i = 0; i < 11; i ++)
|
|
//{
|
|
// console.log("Table Backlight " + Number(i) + " = " + Number(table_backlight[i]));
|
|
//}
|
|
|
|
// Récupération de la valeur actuelle du backlight :
|
|
var consigne;
|
|
var rang;
|
|
res = bdd.requete_unique('SELECT Valeur FROM TB_Configuration WHERE Nom="Consigne_backlight" ');
|
|
consigne = Number(res[0]);
|
|
|
|
if (consigne < 0) rang = -1;
|
|
else if (consigne < table_backlight[1]) rang = 0;
|
|
else if (consigne < table_backlight[2]) rang = 1;
|
|
else if (consigne < table_backlight[3]) rang = 2;
|
|
else if (consigne < table_backlight[4]) rang = 3;
|
|
else if (consigne < table_backlight[5]) rang = 4;
|
|
else if (consigne < table_backlight[6]) rang = 5;
|
|
else if (consigne < table_backlight[7]) rang = 6;
|
|
else if (consigne < table_backlight[8]) rang = 7;
|
|
else if (consigne < table_backlight[9]) rang = 8;
|
|
else if (consigne < table_backlight[10]) rang = 9;
|
|
else if (consigne < table_backlight[11]) rang = 10;
|
|
else rang = 11;
|
|
|
|
if (rang < 0) slider_backlight.value = 0;
|
|
else if (rang > 10) slider_backlight.value = 100;
|
|
else slider_backlight.value = (10 * (rang + 1)) - (10 * (table_backlight[rang + 1] - consigne) / (table_backlight[rang + 1] - table_backlight[rang]));
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Calcul de la consigne du backlight en fonction de la position du slider
|
|
//=============================================================================================================
|
|
function consigne_backlight(pc)
|
|
{
|
|
var i;
|
|
var a, b;
|
|
var val;
|
|
|
|
if (pc <= 0) return (0);
|
|
if (pc >= 100) return (100);
|
|
|
|
i = Math.trunc(pc / 10);
|
|
|
|
//console.log("Conversion Backlight : PC=" + Number(pc) + " i=" + Number(i) + " et valeur de retour =" + (((table_backlight[i+1] - table_backlight[i]) * (pc % 10) / 10) + table_backlight[i]));
|
|
return ((table_backlight[i+1] - table_backlight[i]) * (pc % 10) / 10) + table_backlight[i];
|
|
}
|
|
|
|
//=================================================================================================
|
|
// Fonction : Retourne l'état actuel de la consigne des LEDs
|
|
//=================================================================================================
|
|
function get_validation_leds()
|
|
{
|
|
var req, res;
|
|
|
|
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Validation_leds" ';
|
|
res = bdd.requete_unique(req);
|
|
|
|
return(Number(res[0]));
|
|
}
|
|
|
|
//=================================================================================================
|
|
// Fonction : Change l'état de la validation des LEDs
|
|
//=================================================================================================
|
|
function changer_validation_leds()
|
|
{
|
|
var req, res;
|
|
var new_val;
|
|
|
|
req = 'SELECT Valeur FROM TB_Configuration WHERE Nom="Validation_leds" ';
|
|
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="Validation_leds" ');
|
|
}
|
|
|
|
//=================================================================================================
|
|
// Fonction : Mise à jour de la valeur d'heure d'été dans TB_Configuration
|
|
//=================================================================================================
|
|
function mise_a_jour_heure_ete(heure_ete)
|
|
{
|
|
var req, res;
|
|
var new_val;
|
|
|
|
if ((heure_ete === 0) || (heure_ete === 1)) shipheart_heure_ete = heure_ete;
|
|
else shipheat_heure_ete = 0;
|
|
|
|
req = 'UPDATE TB_Configuration ';
|
|
req += ' SET Valeur="' + shipheart_heure_ete + '" ';
|
|
req += ' WHERE Nom="Heure_ete" ';
|
|
//console.log("Requête = " + req)
|
|
bdd.requete_unique(req);
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Mise à jour du slider du volume
|
|
//=============================================================================================================
|
|
function mise_a_jour_slider_volume()
|
|
{
|
|
var res;
|
|
|
|
//var i;
|
|
//for (i = 0; i < 11; i ++)
|
|
//{
|
|
// console.log("Table Volume " + Number(i) + " = " + Number(table_volume[i]));
|
|
//}
|
|
|
|
// Récupération de la valeur actuelle du Volume :
|
|
var consigne;
|
|
var rang;
|
|
res = bdd.requete_unique('SELECT Valeur FROM TB_Configuration WHERE Nom="Consigne_volume" ');
|
|
consigne = Number(res[0]);
|
|
|
|
if (consigne < 0) rang = -1;
|
|
else if (consigne < table_volume[1]) rang = 0;
|
|
else if (consigne < table_volume[2]) rang = 1;
|
|
else if (consigne < table_volume[3]) rang = 2;
|
|
else if (consigne < table_volume[4]) rang = 3;
|
|
else if (consigne < table_volume[5]) rang = 4;
|
|
else if (consigne < table_volume[6]) rang = 5;
|
|
else if (consigne < table_volume[7]) rang = 6;
|
|
else if (consigne < table_volume[8]) rang = 7;
|
|
else if (consigne < table_volume[9]) rang = 8;
|
|
else if (consigne < table_volume[10]) rang = 9;
|
|
else if (consigne < table_volume[11]) rang = 10;
|
|
else rang = 11;
|
|
|
|
if (rang < 0) slider_volume.value = 0;
|
|
else if (rang > 10) slider_volume.value = 100;
|
|
else slider_volume.value = (10 * (rang + 1)) - (10 * (table_volume[rang + 1] - consigne) / (table_volume[rang + 1] - table_volume[rang]));
|
|
}
|
|
|
|
//=============================================================================================================
|
|
// Calcul de la consigne du Volume en fonction de la position du slider
|
|
//=============================================================================================================
|
|
function consigne_volume(pc)
|
|
{
|
|
var i;
|
|
var a, b;
|
|
var val;
|
|
|
|
if (pc <= 0) return (0);
|
|
if (pc >= 100) return (100);
|
|
|
|
i = Math.trunc(pc / 10);
|
|
|
|
//console.log("Conversion Volume : PC=" + Number(pc) + " i=" + Number(i) + " et valeur de retour =" + (((table_volume[i+1] - table_volume[i]) * (pc % 10) / 10) + table_volume[i]));
|
|
return ((table_volume[i+1] - table_volume[i]) * (pc % 10) / 10) + table_volume[i];
|
|
}
|
|
|
|
}
|