Import initial du projet shipheart_cm5
This commit is contained in:
@@ -0,0 +1,257 @@
|
||||
import QtQuick 2.12
|
||||
import QtQuick.Controls 2.12
|
||||
|
||||
import qt.koriolan.shipheart 1.0
|
||||
|
||||
|
||||
Shipheart_page {
|
||||
id: page_parametres
|
||||
|
||||
|
||||
readonly property int periode_init_raffraichissement_parametres: 1 // En ms
|
||||
readonly property int periode_raffraichissement_parametres: 1000 // En ms
|
||||
|
||||
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%
|
||||
|
||||
// Modèles :
|
||||
property Bdd bdd : Bdd{}
|
||||
|
||||
|
||||
|
||||
//===========================================================
|
||||
// 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();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
// Titre de la page :
|
||||
Shipheart_titre_1 {titre:"Paramètres"; hauteur: shipheart_hauteur_bandeau_haut}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Ecran bas - Droite :
|
||||
//-------------------------------------------------------
|
||||
Rectangle {
|
||||
id: zone_affichage_slider_backlight
|
||||
anchors.fill: parent
|
||||
color: "white"
|
||||
|
||||
Slider {
|
||||
id: slider_backlight
|
||||
|
||||
y: shipheart_hauteur_titre_2
|
||||
width: parent.width * 0.7
|
||||
height: 100
|
||||
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_texte_slider
|
||||
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: couleur_blanc_casse
|
||||
}
|
||||
}
|
||||
}
|
||||
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).toFixed(2) + '" 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: 200
|
||||
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).toFixed(2) + '" WHERE Nom="Consigne_backlight" '
|
||||
bdd.requete_unique(req);
|
||||
req = 'UPDATE TB_Configuration SET Valeur="' + consigne_backlight(slider_backlight.value).toFixed(2) + '" 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: 5
|
||||
padding: 5
|
||||
|
||||
|
||||
//.................................................
|
||||
// Bouton retour
|
||||
//.................................................
|
||||
Rectangle {
|
||||
id: bandeau_bas_zone_retour
|
||||
width: shipheart_largeur_page / nombre_colonnes_matrice_test
|
||||
height: shipheart_hauteur_bandeau_bas - parent.topPadding - parent.bottomPadding;
|
||||
radius: shipheart_rayon_bouton
|
||||
color: "transparent"
|
||||
|
||||
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
|
||||
pressAndHoldInterval: shipheart_mouse_press_and_hold_interval_court
|
||||
onClicked: {
|
||||
stackView.pop()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================================================
|
||||
// Init de la page
|
||||
//=============================================================================================================
|
||||
function init_page()
|
||||
{
|
||||
mise_a_jour_table_backlight();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
//=============================================================================================================
|
||||
// Mise à jour de la table de correspondace du backlight
|
||||
//=============================================================================================================
|
||||
function mise_a_jour_table_backlight()
|
||||
{
|
||||
var req, res;
|
||||
var i;
|
||||
var nb;
|
||||
var val;
|
||||
|
||||
|
||||
// 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];
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user