Files
shipheart-qt/shipheart_test_home.qml
T

210 lines
8.3 KiB
QML

//========================================================================================================================================================================
// SHIPHEART_TEST_HOME.QML
// Ce fichier est la page de plus haut niveau des fonctions de test intégrées à l'application
// La page est appelée depuis la page config_koriolan.qml qui n'est accessible qu'aux personnes connaissant le code spécifique à Koriolan.
//========================================================================================================================================================================
import QtQuick 2.12
import QtQml.Models 2.1
import qt.koriolan.shipheart 1.0
Shipheart_page {
id: page_shipheart_test_home
readonly property double pourcentage_largeur_colonne_gauche: 0.75
readonly property double espace_colonnes_principales: 20
readonly property int hauteur_bouton_droit: 80
readonly property double espace_lignes_principales: 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: 1
// Modèles :
property Bdd bdd : Bdd{}
//===========================================================
// Timer 1 seconde :
//===========================================================
Timer {
id: timer_secondes
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 = 1000;
}
}
}
// Titre de la page :
Shipheart_titre_1 {titre:qsTr("Tests matériel"); hauteur: shipheart_hauteur_bandeau_haut}
//-------------------------------------------------------
// Ecran de gauche :
//-------------------------------------------------------
Rectangle {
id: zone_affichage_haut_gauche
x: 0
y: shipheart_hauteur_bandeau_haut;
width: (shipheart_largeur_page * pourcentage_largeur_colonne_gauche) - (espace_colonnes_principales / 2)
height: affichage_hauteur_utile - espace_lignes_principales;
color: "transparent"
ListView {
id: grille_principale
width: parent.width
height: parent.height
spacing: 10
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_grille_principale
footer: Rectangle { // Permet de dégager la place suffisante en fin de GridView pour accéder même au dernier élément lorsque que clavier est déplié
height: shipheart_hauteur_clavier
color: "transparent"
}
delegate: Rectangle {
width: grille_principale.width
height: visible ? hauteur_bouton_droit : 0
color: "transparent"
Rectangle {
width: parent.width
height: hauteur_bouton_droit
color: shipheart_couleur_fond_bouton
radius: shipheart_rayon_bouton
Text {
anchors.fill: parent
horizontalAlignment: Qt.AlignLeft
leftPadding: 30
verticalAlignment: Qt.AlignVCenter
font.pixelSize: 20
text: model.texte
color: couleur_blanc_casse
}
MouseArea {
anchors.fill: parent
onClicked: {
shipheart_clic();
stackView.push(model.lien)
}
}
}
}
ListModel {
id: modele_grille_principale
}
}
}
//-------------------------------------------------------
// Ecran Droite :
//-------------------------------------------------------
Rectangle {
id: zone_affichage_droite
x: zone_affichage_haut_gauche.width + espace_colonnes_principales
y: shipheart_hauteur_bandeau_haut;
width: (shipheart_largeur_page * (1 - pourcentage_largeur_colonne_gauche)) - (espace_colonnes_principales / 2)
height: affichage_hauteur_utile - (espace_lignes_principales / 2);
color: "transparent"
Column {
anchors.fill: parent
spacing: 10
// Bouton Config tests :
Rectangle {
width: parent.width
height: hauteur_bouton_droit
color: shipheart_couleur_fond_bouton
radius: shipheart_rayon_bouton
visible: !clavier.active
Text {
anchors {
verticalCenter: parent.verticalCenter
horizontalCenter: parent.horizontalCenter
}
font.pixelSize: 20
text: qsTr("Configuration des tests")
color: couleur_blanc_casse
}
MouseArea {
anchors.fill: parent
onClicked: {
shipheart_clic();
stackView.push("shipheart_test_config.qml")
}
}
}
}
}
//-------------------------------------------------------
// 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: (parent.width * pourcentage_bandeau_bas_largeur_zone_retour) - (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 { // 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: { // Si la pression n'a pas duré assez longtemps, on ne fait rien
stackView.pop()
}
}
}
}
//=================================================================================================
// Fonction : Traite les tâches à effectuer à l'ouverture de la page
//=================================================================================================
function init_page()
{
modele_grille_principale.clear();
modele_grille_principale.append({"texte": qsTr("Test du backlight"), "lien": "shipheart_test_backlight.qml"});
modele_grille_principale.append({"texte": qsTr("Test de l'écran"), "lien": "shipheart_test_screen.qml"});
modele_grille_principale.append({"texte": qsTr("Test du touchpad"), "lien": "shipheart_test_touchpad.qml"});
modele_grille_principale.append({"texte": qsTr("Liste des fonts disponibles"), "lien": "shipheart_test_liste_fonts.qml"});
}
}