210 lines
8.3 KiB
QML
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"});
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|