Import initial du projet shipheart_cm5
This commit is contained in:
@@ -0,0 +1,177 @@
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
// Fichier définissant un bouton de type Batterie sur la page d'accueil
|
||||
// A priori, appelé depuis "home.qml"
|
||||
//-----------------------------------------------------------------------------------------------------
|
||||
import QtQuick 2.12
|
||||
|
||||
|
||||
//=======================================================
|
||||
// Ensemble du bouton
|
||||
//=======================================================
|
||||
Rectangle {
|
||||
id: bouton_batterie
|
||||
|
||||
readonly property int largeur_bouton: batteries_grid.cellWidth - espace_colonnes_secondaires;
|
||||
readonly property int hauteur_bouton: batteries_grid.cellHeight - espace_lignes_secondaires;
|
||||
readonly property int rayon_bouton: 5
|
||||
readonly property double pourcentage_largeur_zone_affichage_nom: 0.85
|
||||
readonly property int seuil_haut: 75 // utilisé pour changer de couleur orange/vert
|
||||
readonly property int seuil_bas: 25 // utilisé pour changer de couleur rouge/orange
|
||||
|
||||
width: largeur_bouton
|
||||
height: hauteur_bouton
|
||||
color: "transparent" // On ne peut pas mettre l'opacité sur celui-ci, sinon tous ses enfants sont aussi semi-transparents...
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
// Bandeau latéral avec tension nominale :
|
||||
//---------------------------------------------------------------------------------------
|
||||
Image {
|
||||
id: bandeau_tension_batterie
|
||||
source: (model.Tension_nominale === 12) ? "/images/batterie_12v.png" : "/images/batterie_24v.png"
|
||||
sourceSize.height: parent.height
|
||||
}
|
||||
|
||||
//---------------------------------------------------------------------------------------
|
||||
// Bouton dans son ensemble :
|
||||
//---------------------------------------------------------------------------------------
|
||||
Rectangle {
|
||||
anchors.fill: parent
|
||||
radius: rayon_bouton
|
||||
border.color: couleur_rouge
|
||||
border.width: (model.Etat_systeme === 0) ? 0 : 3
|
||||
color: shipheart_couleur_fond_bouton
|
||||
|
||||
MouseArea {
|
||||
id: mouse_area_zone_parametres
|
||||
anchors.fill: parent
|
||||
width: largeur_bouton
|
||||
height: hauteur_bouton
|
||||
onClicked: {
|
||||
shipheart_clic();
|
||||
stackView.push("batterie.qml",
|
||||
{
|
||||
"id_batterie": model.Cle_primaire,
|
||||
"flag_detail_batterie": true,
|
||||
"nom":model.Nom
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Zone du nom (en haut à gauche) :
|
||||
//-------------------------------------------------------
|
||||
Rectangle {
|
||||
id: zone_nom
|
||||
x: bandeau_tension_batterie.width
|
||||
width: (largeur_bouton * pourcentage_largeur_zone_affichage_nom) - bandeau_tension_batterie.width;
|
||||
height: hauteur_bouton / 2;
|
||||
color: "transparent"
|
||||
|
||||
Text {
|
||||
text: model.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
|
||||
elide: Text.ElideRight
|
||||
font.weight: Font.Bold
|
||||
color: couleur_blanc_casse
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Zone de valeur absolue :
|
||||
//-------------------------------------------------------
|
||||
Rectangle {
|
||||
id: zone_valeur
|
||||
x: bandeau_tension_batterie.width
|
||||
y: hauteur_bouton / 2;
|
||||
width: (largeur_bouton * pourcentage_largeur_zone_affichage_nom) - bandeau_tension_batterie.width;
|
||||
height: hauteur_bouton / 2;
|
||||
color: "transparent"
|
||||
visible: (model.Etat_systeme === 0)
|
||||
|
||||
Image {
|
||||
source: "/images/coin_bas_droite_rouge.png"
|
||||
sourceSize.height: 20
|
||||
anchors {
|
||||
bottom: parent.bottom
|
||||
right: parent.right
|
||||
}
|
||||
visible: (model.Etat_systeme === 0) // SDIR #285
|
||||
&& (model.Etat !== 0) // SDIR #285
|
||||
}
|
||||
|
||||
Text {
|
||||
text: (model.Tension).toFixed(2) + " V";
|
||||
anchors {
|
||||
verticalCenter: parent.verticalCenter
|
||||
horizontalCenter: parent.horizontalCenter
|
||||
}
|
||||
font.pixelSize: 18
|
||||
font.bold: true
|
||||
color: couleur_blanc_casse
|
||||
}
|
||||
}
|
||||
|
||||
//-------------------------------------------------------
|
||||
// Zone niveau relatif :
|
||||
//-------------------------------------------------------
|
||||
Rectangle {
|
||||
id: zone_niveau_relatif
|
||||
color: "transparent" // Sinon, le fond du rectangle est blanc...
|
||||
x: largeur_bouton * pourcentage_largeur_zone_affichage_nom
|
||||
width: largeur_bouton * (1 - pourcentage_largeur_zone_affichage_nom);
|
||||
height: hauteur_bouton;
|
||||
radius: shipheart_rayon_bouton
|
||||
border.color: couleur_fond_bargraph_niveau_relatif()
|
||||
border.width: 1
|
||||
visible: (model.Etat_systeme === 0)
|
||||
|
||||
Text {
|
||||
id:zone_texte_niveau_relatif
|
||||
text: (model.Niveau).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: 12
|
||||
font.bold: (model.Niveau < 10) // soit < 10%
|
||||
color: couleur_texte_niveau_relatif()
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
id:zone_bargraph_niveau_relatif
|
||||
color: couleur_fond_bargraph_niveau_relatif()
|
||||
y: parent.height * (100 - model.Niveau) / 100
|
||||
width: parent.width;
|
||||
height: parent.height * model.Niveau / 100;
|
||||
radius: shipheart_rayon_bouton
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------
|
||||
function couleur_texte_niveau_relatif()
|
||||
{
|
||||
switch(model.Logique)
|
||||
{
|
||||
case 1: return((model.Niveau >= seuil_haut) ? couleur_rouge : ((model.Niveau >= seuil_bas) ? couleur_orange : couleur_green_yellow))
|
||||
case 0: return((model.Niveau >= seuil_haut) ? couleur_rouge : ((model.Niveau >= seuil_bas) ? couleur_green_yellow : couleur_rouge))
|
||||
default: return((model.Niveau >= seuil_haut) ? couleur_green_yellow : ((model.Niveau >= seuil_bas) ? couleur_orange : couleur_rouge))
|
||||
}
|
||||
}
|
||||
|
||||
//----------------------------------------------------------
|
||||
function couleur_fond_bargraph_niveau_relatif()
|
||||
{
|
||||
switch(model.Logique)
|
||||
{
|
||||
case 1: return((model.Niveau >= seuil_haut) ? couleur_rouge_transparent : ((model.Niveau >= seuil_bas) ? couleur_orange_transparent : couleur_vert_transparent))
|
||||
case 0: return((model.Niveau >= seuil_haut) ? couleur_rouge_transparent : ((model.Niveau >= seuil_bas) ? couleur_vert_transparent : couleur_rouge_transparent))
|
||||
default: return((model.Niveau >= seuil_haut) ? couleur_vert_transparent : ((model.Niveau >= seuil_bas) ? couleur_orange_transparent : couleur_rouge_transparent))
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user