Import initial du projet shipheart_cm5

This commit is contained in:
2026-08-13 09:19:38 +02:00
commit 53e47729fb
533 changed files with 127946 additions and 0 deletions
+135
View File
@@ -0,0 +1,135 @@
import QtQuick 2.12
import QtQuick.Layouts 1.12
import qt.koriolan.shipheart 1.0
import"fonctions_couleurs.js" as Fonctions_couleurs
Shipheart_page {
id: page_accueil
property bool run: true
// Modèles :
property Bdd bdd : Bdd{}
//===========================================================
// Timer 1 seconde :
//===========================================================
Timer {
id: timer_principal
interval: 1 // Cette valeur n'est utilisée qu'une fois au démarrage. Ensuite, elle est fixée à 1s
triggeredOnStart: false
running: true
repeat: true
onTriggered: {
if (interval == 1) { // Premier passage, 1ms après le premier chargement
init_page();
interval = shipheart_test_vitesse_test_ecran;
}
for (var i=0; i < modele_test.count; i ++)
{
modele_test.setProperty(i, "no_couleur", Fonctions_couleurs.next_color_test_ecran(modele_test.get(i).no_couleur));
}
}
}
//===========================================================
// Grille principale :
//===========================================================
GridLayout {
id: home_grid
columns: nombre_colonnes_matrice_test
columnSpacing: 0
rowSpacing: 0
ListModel {
id: modele_test
}
Repeater {
id: repeteur
model: modele_test
Rectangle {
Layout.preferredWidth: shipheart_largeur_page / nombre_colonnes_matrice_test
Layout.preferredHeight: shipheart_hauteur_page / nombre_lignes_matrice_test
border.width: 0
color: Fonctions_couleurs.couleur_test_ecran(model.no_couleur)
Text {
text: (model.texte === "Run") ? (run ? "Pause" : "Restart") : model.texte;
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
color: couleur_gris_tres_pale
visible: (model.texte === "Back") ? false : true
}
Image {
source: "/images/icone_retour.png"
sourceSize.height: 30
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
visible: (model.texte === "Back") ? true : false
}
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_consigne
anchors.fill: parent
pressAndHoldInterval: 500
onClicked: {
switch(model.texte)
{
case "Back": stackView.pop(); break;
case "Run":
run = !run;
if (run) timer_principal.restart();
else timer_principal.stop();
break;
default :
}
}
}
}
}
} // Fin de grille principale
//=================================================================================================
// Fonction : Traite les tâches à effectuer à l'ouverture de la page
//=================================================================================================
function init_page()
{
var i, j, k;
var texte;
modele_test.clear();
for (i = 0; i < nombre_colonnes_matrice_test; i ++)
{
for (j = 0; j < nombre_lignes_matrice_test; j ++)
{
k = (i * nombre_lignes_matrice_test) + j;
switch(k)
{
case (nombre_colonnes_matrice_test * (nombre_lignes_matrice_test - 1)) : texte = "Back"; break;
case ((nombre_colonnes_matrice_test * nombre_lignes_matrice_test) -1) : texte = "Run"; break;
default: texte = "";
}
modele_test.append({ "no_couleur": 0, "texte": texte});
}
}
}
}