Files
shipheart-qt/main.qml
T

1111 lines
71 KiB
QML

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.VirtualKeyboard 2.4
import QtQuick.VirtualKeyboard.Settings 2.2
import qt.koriolan.shipheart 1.0
ApplicationWindow {
id: root
//===============================================================================================================================
// Propriétés statiques :
//===============================================================================================================================
//-----------------------------------------------------------------------------------
// Générations de ShipBase :
readonly property int shipheart_generation_shipbase_inconnue: 0
readonly property int shipheart_generation_shipbase_v1: 1
readonly property int shipheart_generation_shipbase_v2: 2
readonly property int shipheart_generation_shipbase_v3: 3
//-----------------------------------------------------------------------------------
// Thèmes :
readonly property int shipheart_index_theme_nom: 0
readonly property int shipheart_index_theme_fichier_fond_ecran: 1
readonly property int shipheart_index_theme_couleur_fond_ecran: 2
readonly property int shipheart_index_theme_couleur_fond_bouton: 3
readonly property int shipheart_index_theme_couleur_fond_bouton_actif: 4
readonly property int shipheart_index_theme_couleur_texte_titre_1: 5
readonly property int shipheart_index_theme_couleur_texte_titre_2: 6
readonly property int shipheart_index_theme_couleur_texte_titre_3: 7
readonly property int shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0: 8
readonly property int shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1: 9
readonly property int shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2: 10
readonly property int shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0: 11
readonly property int shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1: 12
readonly property int shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2: 13
readonly property int shipheart_index_theme_couleur_texte_slider: 14
readonly property int shipheart_index_theme_couleur_bordure_courbes: 15
readonly property variant shipheart_config_themes: [
//--------------------------------------------
// Theme = 0:
[
qsTr("Original"), // shipheart_index_theme_nom
"/images/fibre_carbone.png", // shipheart_index_theme_fichier_fond_ecran
"transparent", // shipheart_index_theme_couleur_fond_ecran
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_bleu_koriolan_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_gris_fonce, // shipheart_index_theme_couleur_texte_titre_1
couleur_bleu_koriolan, // shipheart_index_theme_couleur_texte_titre_2
couleur_gris_pale, // shipheart_index_theme_couleur_texte_titre_3
couleur_bleu_koriolan, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_bleu_koriolan, // shipheart_couleur_texte_slider
couleur_bleu_koriolan // shipheart_index_theme_couleur_bordure_courbes
],
//--------------------------------------------
// Theme = 1:
[
qsTr("Sombre"),
"",
couleur_noir,
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_bleu_koriolan_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_gris_fonce, // shipheart_index_theme_couleur_texte_titre_1
couleur_bleu_koriolan, // shipheart_index_theme_couleur_texte_titre_2
couleur_gris_pale, // shipheart_index_theme_couleur_texte_titre_3
couleur_bleu_koriolan, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_bleu_koriolan, // shipheart_couleur_texte_slider
couleur_bleu_koriolan // shipheart_index_theme_couleur_bordure_courbes
],
//--------------------------------------------
// Theme = 2:
[
qsTr("Métallique"),
"/images/fond_2.jpg",
"transparent",
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_bleu_koriolan_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_gris_fonce, // shipheart_index_theme_couleur_texte_titre_1
couleur_bleu_koriolan, // shipheart_index_theme_couleur_texte_titre_2
couleur_gris_pale, // shipheart_index_theme_couleur_texte_titre_3
couleur_bleu_koriolan, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_bleu_koriolan, // shipheart_couleur_texte_slider
couleur_bleu_koriolan // shipheart_index_theme_couleur_bordure_courbes
],
//--------------------------------------------
// Theme = 3:
[
qsTr("Triangles"),
"/images/fond_3.jpg",
"transparent",
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_bleu_koriolan_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_gris_fonce, // shipheart_index_theme_couleur_texte_titre_1
couleur_bleu_koriolan, // shipheart_index_theme_couleur_texte_titre_2
couleur_gris_pale, // shipheart_index_theme_couleur_texte_titre_3
couleur_bleu_koriolan, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_bleu_koriolan, // shipheart_couleur_texte_slider
couleur_bleu_koriolan // shipheart_index_theme_couleur_bordure_courbes
],
//--------------------------------------------
// Theme = 4:
[
qsTr("Sable"),
"",
couleur_noir,
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_sable_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_sable_transparent, // shipheart_index_theme_couleur_texte_titre_1
couleur_sable, // shipheart_index_theme_couleur_texte_titre_2
couleur_sable_transparent, // shipheart_index_theme_couleur_texte_titre_3
couleur_sable, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_sable, // shipheart_couleur_texte_slider
couleur_sable // shipheart_index_theme_couleur_bordure_courbes
],
//--------------------------------------------
// Theme = 5:
[
qsTr("Thème 5"),
"",
couleur_bleu_koriolan_transparent,
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_bleu_koriolan_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_gris_fonce, // shipheart_index_theme_couleur_texte_titre_1
couleur_bleu_koriolan, // shipheart_index_theme_couleur_texte_titre_2
couleur_gris_pale, // shipheart_index_theme_couleur_texte_titre_3
couleur_bleu_koriolan, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_bleu_koriolan, // shipheart_couleur_texte_slider
couleur_bleu_koriolan // shipheart_index_theme_couleur_bordure_courbes
],
//--------------------------------------------
// Theme = 6:
[
qsTr("Thème 6"),
"",
couleur_gris_pale,
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_sable_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_gris_fonce, // shipheart_index_theme_couleur_texte_titre_1
couleur_bleu_koriolan, // shipheart_index_theme_couleur_texte_titre_2
couleur_gris_pale, // shipheart_index_theme_couleur_texte_titre_3
couleur_bleu_koriolan, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_bleu_koriolan, // shipheart_couleur_texte_slider
couleur_bleu_koriolan // shipheart_index_theme_couleur_bordure_courbes
],
//--------------------------------------------
// Theme = 7:
[
qsTr("Thème 7"),
"",
"#2F076A",
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_bleu_koriolan_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_gris_fonce, // shipheart_index_theme_couleur_texte_titre_1
couleur_bleu_koriolan, // shipheart_index_theme_couleur_texte_titre_2
couleur_gris_pale, // shipheart_index_theme_couleur_texte_titre_3
couleur_bleu_koriolan, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_bleu_koriolan, // shipheart_couleur_texte_slider
couleur_bleu_koriolan // shipheart_index_theme_couleur_bordure_courbes
],
//--------------------------------------------
// Theme = 8:
[
qsTr("Thème 8"),
"",
"#5B1297",
couleur_gris_tres_fonce_transparent, // shipheart_index_theme_couleur_fond_bouton
couleur_bleu_koriolan_transparent, // shipheart_index_theme_couleur_fond_bouton_actif
couleur_gris_fonce, // shipheart_index_theme_couleur_texte_titre_1
couleur_bleu_koriolan, // shipheart_index_theme_couleur_texte_titre_2
couleur_gris_pale, // shipheart_index_theme_couleur_texte_titre_3
couleur_bleu_koriolan, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_0
couleur_orange, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_1
couleur_rouge, // shipheart_index_theme_couleur_fond_boite_dialogue_niveau_2
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_0
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_1
couleur_blanc_casse, // shipheart_index_theme_couleur_texte_boite_dialogue_niveau_2
couleur_bleu_koriolan, // shipheart_couleur_texte_slider
couleur_bleu_koriolan // shipheart_index_theme_couleur_bordure_courbes
]
];
//-----------------------------------------------------------------------------------
// Type d'installation :
readonly property int shipheart_type_installation_shipbase : 0
readonly property int shipheart_type_installation_ecran_deporte : 1
readonly property int shipheart_type_installation_ecran_deporte_7_pouces : 17
readonly property int shipheart_type_installation_ecran_deporte_10_pouces : 110
readonly property int shipheart_type_installation_ecran_deporte_22_pouces : 122
//-----------------------------------------------------------------------------------
// Spécificités clients :
readonly property int shipheart_specifique_client_tous : 0
readonly property int shipheart_specifique_client_suncy : 1
readonly property int shipheart_specifique_client_o_yachts : 2
//-----------------------------------------------------------------------------------
// Types de source :
readonly property int shipheart_type_source_inconnu : 0
readonly property int shipheart_type_source_circuits : 1
readonly property int shipheart_type_source_capteurs: 2
readonly property int shipheart_type_source_reservoirs: 3
readonly property int shipheart_type_source_batteries: 4
readonly property int shipheart_type_source_modules: 5
readonly property int shipheart_type_source_events: 6
//-----------------------------------------------------------------------------------
// Types de page :
readonly property int shipheart_type_page_inconnu : 0
readonly property int shipheart_type_page_preconfiguree_ephemeride : 1
readonly property int shipheart_type_page_preconfiguree_chronometre : 2
readonly property int shipheart_type_page_personnalisee_minuteur : 3
readonly property int shipheart_type_page_preconfiguree_reveil : 4
readonly property int shipheart_type_page_personnalisee_non_masquable : 10
readonly property int shipheart_type_page_personnalisee_masquable : 11
//-----------------------------------------------------------------------------------
// Paramètres d'une page personnalisée :
readonly property int shipheart_page_personnalisee_nb_max_points : 30
readonly property variant shipheart_page_personnalisee_type_point_icones : [
//--------------------------------------------
// Type_source = 0 = Système
[],
//--------------------------------------------
// Type_source = 1 = Circuits:
[
"point_transparent.png", // Attention : rang #0 = icone utilisée pour circuit OFF...
"point_blanc.png",
"point_rouge.png",
"point_vert.png",
"point_bleu.png",
"point_jaune.png",
"point_orange.png",
"point_arc_en_ciel.png"
],
//--------------------------------------------
// Type_source = 2 = Capteurs:
[
"icone_barometre.png",
"icone_humidite.png",
"icone_consommation_electrique.png",
"icone_temperature.png",
"vanne.png",
"vanne_ouverte.png",
"vanne_fermee.png",
"satellite.png"
],
//--------------------------------------------
// Type_source = 3 = Reservoirs:
[
"reservoir.png",
"reservoir_eau.png"
],
//--------------------------------------------
// Type_source = 4 = Batteries:
[
"batterie_moyen.png"
],
//--------------------------------------------
// Type_source = 5 = Modules:
[
"shipbase.png", // Attention : dans l'ordre du 'Types de modules' ci-dessous !
"sp8dc.png", // Par approximation, on met une image de 8DC...
"shipbs.png",
"sp4ac.png",
"sp8dc.png"
],
]
//-----------------------------------------------------------------------------------
// Langues :
readonly property int shipheart_langue_fr: 0
readonly property int shipheart_langue_en: 1
readonly property int shipheart_langue_de: 2
readonly property int shipheart_langue_es: 3
readonly property int shipheart_langue_pt: 4
readonly property int shipheart_langue_nl: 5
readonly property int shipheart_langue_it: 6
readonly property int shipheart_langue_lv: 7
readonly property int shipheart_langue_ca: 8
//-----------------------------------------------------------------------------------
// Types unité : // Cf aussi 'fonctions.js' et 'shipheart.h' en cas de modifications/ajouts
readonly property int shipheart_type_unite_volume: 1
readonly property int shipheart_type_unite_temperature: 2
readonly property int shipheart_type_unite_latitude: 3
readonly property int shipheart_type_unite_longitude: 4
// Unités volume : // Cf aussi 'fonctions.js' et 'shipheart.h' en cas de modifications/ajouts
readonly property int shipheart_unite_volume_litres: 0
readonly property int shipheart_unite_volume_us_gallons: 1
readonly property int shipheart_unite_volume_imp_gallons: 2
// Unités température : // Cf aussi 'fonctions.js' et 'shipheart.h' en cas de modifications/ajouts
readonly property int shipheart_unite_temperature_celsius: 0
readonly property int shipheart_unite_temperature_fahrehneit: 1
//-----------------------------------------------------------------------------------
// Localisation des fichiers :
readonly property string shipheart_repertoire_versions_a_charger: "/home/koriolan/shipheart/versions/a_charger"
readonly property string shipheart_repertoire_versions_a_valider: "/home/koriolan/shipheart/versions/a_valider"
readonly property string shipheart_repertoire_versions_current: "/home/koriolan/shipheart/versions/current"
readonly property string shipheart_repertoire_config: "/home/koriolan/shipheart/config"
readonly property string shipheart_repertoire_cle_usb: "/home/koriolan/cle_usb"
readonly property string shipheart_repertoire_tmp_usb: "/home/koriolan/shipheart/tmp/usb"
readonly property string shipheart_repertoire_sys_usb: "/sys/kernel/debug/usb"
readonly property string shipheart_repertoire_utils: "/home/koriolan/shipheart/utils"
readonly property string shipheart_sous_repertoire_rapports: "/rapports"
readonly property string shipheart_sous_repertoire_images_accueil: "/images_accueil"
readonly property string shipheart_sous_repertoire_sauvegardes: "/sauvegardes"
readonly property string shipheart_sous_repertoire_images_silhouette: "/images_silhouette"
readonly property string shipheart_nom_complet_fichier_shiprs_conf: "/home/koriolan/shipheart/versions/shiprs.conf"
readonly property string shipheart_nom_fichier_image_accueil_par_defaut: "logo_shipheart.png"
readonly property string shipheart_nom_fichier_rapport_installation: "rapport_installation.php"
readonly property string shipheart_nom_fichier_sauvegarde: "sauvegarde.php"
readonly property string shipheart_nom_fichier_usb_devices: "devices"
readonly property string shipheart_nom_fichier_usb_lsblk: "resultat_lsblk"
readonly property string shipheart_nom_fichier_usb_ls: "resultat_ls"
//-----------------------------------------------------------------------------------
// Modes de fonctionnement du menu 'config_fichiers' :
readonly property int shipheart_mode_config_fichiers_inconnu: 0
readonly property int shipheart_mode_config_fichiers_image_accueil: 1
readonly property int shipheart_mode_config_fichiers_silhouette: 2
readonly property int shipheart_mode_config_fichiers_rapports: 3
readonly property int shipheart_mode_config_fichiers_sauvegardes: 4
readonly property int shipheart_taille_maxi_image_accueil: (5 * 1000 * 1000) // En octets
readonly property int shipheart_taille_maxi_silhouette: (2 * 1000 * 1000) // En octets
readonly property int shipheart_taille_maxi_rapport: (50 * 1000 * 1000) // En octets
readonly property int shipheart_taille_maxi_sauvegarde: (50 * 1000 * 1000) // En octets
//-----------------------------------------------------------------------------------
// Gestion des fichiers de mise à jour :
readonly property int shipheart_demande_maj_soft_aucune: 0 // Valeur de repos
readonly property int shipheart_demande_maj_soft_validation: 1 // Validation du fichier dans A_VALIDER qui sera copié dans A_CHARGER
readonly property int shipheart_demande_maj_soft_chargement: 2 // Idem VALIDATION + demande de reset pour prise en compte immédiate
readonly property int shipheart_demande_maj_soft_annulation: -1 // Suppression du fichier présent dans A_VALIDER ou dans A_CHARGER (les 2 sont vidés)
//-----------------------------------------------------------------------------------
// Modules :
readonly property int shipheart_max_nombre_modules: (32+1)
// Types de modules : // Cf aussi 'fonctions.js' en cas de modifications/ajouts
readonly property int shipheart_type_module_inconnu: -1
readonly property int shipheart_type_module_shipbase: 0
readonly property int shipheart_type_module_shippower812: 1
readonly property int shipheart_type_module_shipBS: 2
readonly property int shipheart_type_module_shippower4AC: 3
readonly property int shipheart_type_module_shippower8DC: 4
// Etat commande d'une carte :
readonly property int shipheart_etat_commande_module_ok: 0
readonly property int shipheart_etat_commande_module_undervoltage: 1
readonly property int shipheart_etat_commande_module_test: 2
// Code commande d'une carte :
readonly property int shipheart_commande_module_localisation: 1
readonly property int shipheart_commande_module_etat_systeme: 2
readonly property int shipheart_commande_module_etat_systeme_normal: 0
readonly property int shipheart_commande_module_etat_systeme_alerte: 1
readonly property int shipheart_commande_module_etat_systeme_alarme: 2
//-----------------------------------------------------------------------------------
// Historique types :
readonly property int shipheart_historique_type_tous: -1
readonly property int shipheart_historique_type_systeme: 0
readonly property int shipheart_historique_type_circuits: 1
readonly property int shipheart_historique_type_capteurs: 2
readonly property int shipheart_historique_type_reservoirs: 3
readonly property int shipheart_historique_type_batteries: 4
readonly property int shipheart_historique_type_usb: 5
readonly property int shipheart_historique_type_event: 6
//-----------------------------------------------------------------------------------
// Messages users :
readonly property int shipheart_message_users_code_aucun: 0
readonly property int shipheart_message_users_code_fin_minuteur: 1
readonly property int shipheart_message_users_code_reveil: 2
readonly property int shipheart_message_users_code_maj_en_cours: 3
readonly property int shipheart_message_users_code_redemarrage: 4
readonly property int shipheart_message_users_code_nouvelle_version_detectee: 5
readonly property int shipheart_message_users_code_defaut_config_k_bus: 6
readonly property int shipheart_message_users_code_declenchement_event: 7
//-----------------------------------------------------------------------------------
// Protection d'accès :
readonly property string code_koriolan: "87cf9a09f9889c4c9d2d9e30cfb6dfe6f238ef7f2db16cd5ea3ebfcd2c90b9b9"
readonly property int shipheart_type_code_normal: 0
readonly property int shipheart_type_code_admin: 1
readonly property int shipheart_niveau_acces_aucun: 0
readonly property int shipheart_niveau_acces_user: 1
readonly property int shipheart_niveau_acces_admin: 10
readonly property int shipheart_niveau_acces_koriolan: 20
//-----------------------------------------------------------------------------------
// Types de synchro de BDD :
readonly property int shipheart_type_synchro_aucune : 0
readonly property int shipheart_type_synchro_data : 1
readonly property int shipheart_type_synchro_config : 2
//-----------------------------------------------------------------------------------
// Timings système :
readonly property int shipheart_periode_timer_home: 1000
//-----------------------------------------------------------------------------------
// Ports USB :
readonly property int shipheart_port_usb_aucun: -1
readonly property int shipheart_port_usb_arriere: 0 // Connecteur USB-A à l'arrière
readonly property int shipheart_port_usb_spare: 1 // Sortie sur 4 broches à souder au pas de 2.54mm
readonly property int shipheart_port_usb_avant_bas: 2 // Connecteur USB-A à l'avant, en partie basse de la colonne des 3 ports en face avant
readonly property int shipheart_port_usb_touchpad: 3 // Connecteur pour cable plat sur carte Shipbase, vers l'écran Densitron.
//-----------------------------------------------------------------------------------
// Entrées Auxiliaires :
readonly property int shipheart_entrees_aux_max_nombre: 32
//-----------------------------------------------------------------------------------
// Entrées Level Sensor :
readonly property int shipheart_entrees_level_sensor_max_nombre: 8
//-----------------------------------------------------------------------------------
// Entrées Volt :
readonly property int shipheart_entrees_volt_max_nombre: 4
//-----------------------------------------------------------------------------------
// Events :
readonly property int shipheart_max_nombre_events: 200 // Cf 'event.h' dans l'appli
readonly property int shipheart_max_nombre_conditions_horaires_par_event: 15 // Cf 'event.h' dans l'appli
readonly property int shipheart_max_nombre_action_circuits_par_event: 50 // Cf 'event.h' dans l'appli
// Heures spéciales :
readonly property int shipheart_heure_speciale_fin_nuit: 24 // -18° de l'horizon
readonly property int shipheart_heure_speciale_aube_nautique: 25 // -12° de l'horizon
readonly property int shipheart_heure_speciale_aube: 26 // -6° de l'horizon
readonly property int shipheart_heure_speciale_lever_soleil: 27 // -0.833° de l'horizon
readonly property int shipheart_heure_speciale_zenith: 28
readonly property int shipheart_heure_speciale_coucher_soleil: 29 // -0.833° de l'horizon
readonly property int shipheart_heure_speciale_crepuscule: 30 // -6° de l'horizon
readonly property int shipheart_heure_speciale_crepuscule_nautique: 31 // -12° de l'horizon
readonly property int shipheart_heure_speciale_debut_nuit: 32 // -18° de l'horizon
//-----------------------------------------------------------------------------------
// Mesures :
// Type mesure : // Cf aussi 'fonctions.js' et 'shipheart.h' en cas de modifications/ajouts
readonly property int shipheart_source_mesure_circuit: 1
readonly property int shipheart_source_mesure_capteur: 2
readonly property int shipheart_source_mesure_reservoir: 3
readonly property int shipheart_source_mesure_batterie: 4
// Modes enregistrement mesures :
readonly property int shipheart_mode_enregistrement_mesures_aucun: 0
readonly property int shipheart_mode_enregistrement_mesures_periodique: 1
readonly property int shipheart_mode_enregistrement_mesures_changement_etat: 2
//-----------------------------------------------------------------------------------
// Divers :
readonly property string shipheart_adresse_ip_inconnue: "inconnue" // Valeur identique à ADRESSE_IP_INCONNUE dans l'appli, dans 'systeme.h'
//-----------------------------------------------------------------------------------
// Couleurs prédéfinies :
readonly property color couleur_bleu_koriolan: Qt.rgba((0/255), (118/255), (154/255), 1.0)
readonly property color couleur_bleu_koriolan_transparent: Qt.rgba((0/255), (118/255), (154/255), 0.4)
readonly property color couleur_bleu_koriolan_tres_transparent: Qt.rgba((0/255), (118/255), (154/255), 0.2)
readonly property color couleur_bleu_koriolan_tres_tres_transparent: Qt.rgba((0/255), (118/255), (154/255), 0.1)
readonly property color couleur_bleu_koriolan_clair: Qt.rgba((113/255), (187/255), (216/255), 1.0)
readonly property color couleur_bleu_koriolan_clair_transparent: Qt.rgba((113/255), (187/255), (216/255), 0.4)
readonly property color couleur_bleu_koriolan_clair_tres_transparent: Qt.rgba((113/255), (187/255), (216/255), 0.2)
readonly property color couleur_noir: Qt.rgba((0/255), (0/255), (0/255), 1.0)
readonly property color couleur_gris_tres_tres_fonce: Qt.rgba((10/255), (10/255), (10/255), 1.0)
readonly property color couleur_gris_tres_tres_fonce_transparent: Qt.rgba((10/255), (10/255), (10/255), 0.9)
readonly property color couleur_gris_tres_tres_fonce_tres_transparent: Qt.rgba((10/255), (10/255), (10/255), 0.2)
readonly property color couleur_gris_tres_fonce: Qt.rgba((60/255), (60/255), (60/255), 1.0)
readonly property color couleur_gris_tres_fonce_transparent: Qt.rgba((60/255), (60/255), (60/255), 0.5)
readonly property color couleur_gris_tres_fonce_tres_transparent: Qt.rgba((60/255), (60/255), (60/255), 0.2)
readonly property color couleur_gris_fonce: Qt.rgba((80/255), (80/255), (80/255), 1.0)
readonly property color couleur_gris_moyen: Qt.rgba((110/255), (110/255), (110/255), 1.0)
readonly property color couleur_gris_pale: Qt.rgba((130/255), (130/255), (130/255), 1.0)
readonly property color couleur_gris_tres_pale: Qt.rgba((150/255), (150/255), (150/255), 1.0)
readonly property color couleur_gris_tres_pale_transparent: Qt.rgba((150/255), (150/255), (150/255), 0.2)
readonly property color couleur_gris_tres_tres_pale: Qt.rgba((200/255), (200/255), (200/255), 1.0)
readonly property color couleur_blanc_casse: Qt.rgba((230/255), (230/255), (230/255), 1.0)
readonly property color couleur_blanc_casse_transparent: Qt.rgba((230/255), (230/255), (230/255), 0.5)
readonly property color couleur_blanc: Qt.rgba(1, 1, 1, 1.0)
readonly property color couleur_vert: Qt.rgba((177/255), (251/255), (23/255), 1.0)
readonly property color couleur_vert_transparent: Qt.rgba((177/255), (251/255), (23/255), 0.4)
readonly property color couleur_jaune: Qt.rgba((253/255), (240/255), (100/255), 1.0)
readonly property color couleur_jaune_transparent: Qt.rgba((253/255), (240/255), (100/255), 0.4)
readonly property color couleur_jaune_post_it: Qt.rgba((255/255), (195/255), (63/255), 1.0)
readonly property color couleur_jaune_post_it_transparent: Qt.rgba((255/255), (195/255), (63/255), 0.4)
readonly property color couleur_orange: Qt.rgba((255/255),(140/255), (0/255), 1.0)
readonly property color couleur_orange_transparent: Qt.rgba((255/255),(140/255), (0/255), 0.4)
readonly property color couleur_rouge: Qt.rgba((255/255), (30/255), (0/255), 1.0)
readonly property color couleur_rouge_transparent: Qt.rgba((255/255), (30/255), (0/255), 0.4)
readonly property color couleur_green_yellow: Qt.rgba((173/255), (255/255), (47/255), 1.0)
readonly property color couleur_green_yellow_transparent: Qt.rgba((173/255), (255/255), (47/255), 0.4)
readonly property color couleur_sable: Qt.rgba((205/255), (154/255), (124/255), 1.0)
readonly property color couleur_sable_transparent: Qt.rgba((205/255), (154/255), (124/255), 0.4)
readonly property color couleur_sable_tres_transparent: Qt.rgba((205/255), (154/255), (124/255), 0.2)
// Boutons :
readonly property int shipheart_rayon_bouton: 6
readonly property int shipheart_grand_rayon_bouton: 12
readonly property int shipheart_rayon_zoom: 20
readonly property int shipheart_mouse_press_and_hold_interval_tres_court: 5 // Utilisé comme léger filtrage
readonly property int shipheart_mouse_press_and_hold_interval_court: 250 // Utilisé comme léger filtrage
readonly property int shipheart_mouse_press_and_hold_interval_long: 1000 // Utilisé pour les commandes 'sensibles', comme la comm
readonly property int shipheart_mouse_press_and_hold_interval_tres_long: 2000 // Utilisé pour valider par appui maintenu sur un "bouton défilant"
// Mise en page :
readonly property double bandeau_bas_spacing: 0.004 // pourcentage de la largeur de page utilisé pour séparer les boutons dans le bandeau bas.
// Formulaires :
readonly property int shipheart_formulaire_ligne_separation_haute: 1
readonly property int shipheart_formulaire_ligne_separation_basse: 2
readonly property int shipheart_formulaire_ligne_separation_haute_basse: 3
readonly property int shipheart_formulaire_ligne_separation_force_faible: 1
readonly property int shipheart_formulaire_ligne_separation_force_moyenne: 2
readonly property int shipheart_formulaire_ligne_separation_force_elevee: 3
readonly property string shipheart_font_saisie_textarea: "Noto Mono" // "Sans Serif" [Default], "URW Gothic L", "Nimbus Mono L"
readonly property string shipheart_font_saisie_textfield: "Noto Mono"
readonly property color shipheart_formulaire_couleur_texte_par_defaut: couleur_blanc_casse
readonly property color shipheart_formulaire_couleur_texte_en_erreur: couleur_rouge
// Boutons validation boite de dialogue :
readonly property int shipheart_boite_dialogue_bouton_1: 1 // Souvent Ok
readonly property int shipheart_boite_dialogue_bouton_2: 2 // Souvent Annuler
readonly property int shipheart_boite_dialogue_bouton_3: 3 // Souvent Plus Tard ou Supprimer
readonly property int shipheart_boite_dialogue_bouton_4: 4 // Souvent Bouton Sécurisé
// Protection :
readonly property int protection_mode_access_parametres_avances: 1
readonly property int protection_mode_verrouillage: 2
readonly property int protection_mode_deverrouillage: 3
// Courbes :
readonly property color courbes_couleur_fond: couleur_bleu_koriolan_tres_transparent // Couleur intérieure des AreaSeries
readonly property color courbes_couleur_shades_fond: couleur_gris_tres_tres_fonce_tres_transparent // Couleur des bandes verticales du fond (celles qui ne sont pas purement transparentes).
readonly property int courbes_epaisseur_bordure: 4 // Epaisseur de la courbe elle-même
readonly property int courbe_etalonnage_max_points: 12 // Max nb de points d'étalonnage (utilisé dans'config_valeur_niveau.qml' pour les batteries et les réservoirs)
// Caractères spéciaux :
readonly property int unicode_fleche_droite: 0x2192 // Utilisation du type 'String.fromCharCode(unicode_fleche_droite)'
readonly property int unicode_fleche_demi_epaisse_continue_droite: 0x279E
readonly property int unicode_fleche_demi_epaisse_discontinue_droite: 0x279F
readonly property int unicode_fleche_epaisse_discontinue_droite: 0x27A0
readonly property int unicode_fleche_epaisse_continue_droite: 0x27A1
readonly property int unicode_omega: 0x2126 // Symbole des Ohms
//-----------------------------------------------------------------------------------
// Batteries :
// Type d'entrées batteries :
readonly property int shipheart_batteries_type_entrees_volt: 3
readonly property int shipheart_batteries_type_entrees_predefinie: 5
readonly property int shipheart_batteries_type_entrees_ibs: 6
// Types de variables :
readonly property string shipheart_batterie_temperature: "Batt_temperature"
readonly property string shipheart_batterie_tension: "Batt_tension"
readonly property string shipheart_batterie_courant_differentiel: "Batt_courant_differentiel"
readonly property string shipheart_batterie_courant_charge: "Batt_courant_charge"
readonly property string shipheart_batterie_courant_decharge: "Batt_courant_decharge"
readonly property string shipheart_batterie_soh: "Batt_soh"
readonly property string shipheart_batterie_soc: "Batt_soc"
readonly property string shipheart_batterie_autonomie: "Batt_autonomie"
readonly property string shipheart_batterie_puissance: "Batt_puissance"
readonly property string shipheart_batterie_energie: "Batt_energie"
// Commande de batterie :
readonly property int shipheart_batteries_commande_reserve: 0
readonly property int shipheart_batteries_commande_forcage_pleine_charge: 1
readonly property int shipheart_batteries_commande_reset_soh: 2
readonly property int shipheart_batteries_commande_reset_compteurs: 3
// Type de batterie :
readonly property int shipheart_batteries_type_indefini: 0
readonly property int shipheart_batteries_type_plomb_acide_liquide: 1
readonly property int shipheart_batteries_type_plomb_agm_vrla: 2
readonly property int shipheart_batteries_type_plomb_gel: 3
readonly property int shipheart_batteries_type_plomb_carbone: 4
readonly property int shipheart_batteries_type_lihium: 10
//-----------------------------------------------------------------------------------
// Capteurs :
readonly property int shipheart_capteur_max_nombre_entrees_aux: 4 // Vérifier cohérence avec MAX_NOMBRE_ENTREES_PAR_CAPTEUR dans 'capteurs.h' de l'Appli.
// Type d'entrées capteurs :
readonly property int shipheart_capteur_type_entrees_aux: 1
readonly property int shipheart_capteur_type_entrees_level_sensor: 2
readonly property int shipheart_capteur_type_entrees_volt: 3
readonly property int shipheart_capteur_type_entrees_ow: 4
readonly property int shipheart_capteur_type_entrees_predefinie: 5
readonly property int shipheart_capteur_type_entrees_ibs: 6
readonly property int shipheart_capteur_type_entrees_nmea: 7
readonly property int shipheart_capteur_type_entrees_can: 8
readonly property int shipheart_capteur_type_entrees_calculee_booleen: 20
readonly property int shipheart_capteur_type_entrees_calculee_numerique: 21
// Modes des capteurs :
readonly property int shipheart_capteur_mode_entrees_aux_normal: 0
readonly property int shipheart_capteur_mode_entrees_aux_inverse: 1
readonly property int shipheart_capteur_mode_entrees_level_sensor_non_defini: 0
readonly property int shipheart_capteur_mode_entrees_level_sensor_0_10v: 1
readonly property int shipheart_capteur_mode_entrees_level_sensor_500r: 2
readonly property int shipheart_capteur_mode_entrees_level_sensor_4_20ma: 3
readonly property int shipheart_capteur_mode_entrees_level_sensor_defaut_isolement_masse: 5
readonly property int shipheart_capteur_mode_entrees_level_sensor_defaut_isolement_v_plus: 6
readonly property int shipheart_capteur_mode_entrees_level_sensor_defaut_isolement_complet: 7
// Etat capteurs :
readonly property int shipheart_capteur_etat_normal: 0
readonly property int shipheart_capteur_etat_alerte: 1
readonly property int shipheart_capteur_etat_alarme: 2
// Capteurs prédéfinis :
readonly property int shipheart_capteur_predefini_aucun: 0
readonly property int shipheart_capteur_predefini_pat: 1
readonly property int shipheart_capteur_predefini_hum: 2
readonly property int shipheart_capteur_predefini_temp: 3
readonly property int shipheart_capteur_predefini_lat: 4
readonly property int shipheart_capteur_predefini_lon: 5
readonly property int shipheart_capteur_predefini_in_v: 6
readonly property int shipheart_capteur_predefini_in_i: 7
readonly property int shipheart_capteur_predefini_usb_i: 8
readonly property int shipheart_capteur_predefini_edm: 9
readonly property int shipheart_capteur_predefini_acc_xyz: 10
readonly property int shipheart_capteur_predefini_acc_x: 11
readonly property int shipheart_capteur_predefini_acc_y: 12
readonly property int shipheart_capteur_predefini_acc_z: 13
readonly property int shipheart_capteur_predefini_alt: 14
readonly property int shipheart_capteur_predefini_sog: 15
readonly property int shipheart_capteur_predefini_cog: 16
readonly property int shipheart_capteur_predefini_siv: 17
readonly property int shipheart_capteur_predefini_hpa: 18
readonly property int shipheart_capteur_predefini_vpa: 19
readonly property int shipheart_capteur_predefini_rsrp: 20
readonly property int shipheart_capteur_predefini_rssi: 21
readonly property int shipheart_capteur_predefini_sinr: 22
// Types de variables :
readonly property string shipheart_capteur_sans_unite: "Capt_sans_unite"
readonly property string shipheart_capteur_tension_v: "Capt_tension_v"
readonly property string shipheart_capteur_tension_mv: "Capt_tension_mv"
readonly property string shipheart_capteur_courant_a: "Capt_courant_a"
readonly property string shipheart_capteur_courant_ma: "Capt_courant_ma"
readonly property string shipheart_capteur_puissance_w: "Capt_puissance_w"
readonly property string shipheart_capteur_puissance_va: "Capt_puissance_va"
readonly property string shipheart_capteur_puissance_db: "Capt_puissance_db"
readonly property string shipheart_capteur_frequence: "Capt_frequence"
readonly property string shipheart_capteur_resistance: "Capt_resistance"
readonly property string shipheart_capteur_temperature: "Capt_temperature"
readonly property string shipheart_capteur_pression_atm: "Capt_pression_atm"
readonly property string shipheart_capteur_humidite: "Capt_humidite"
readonly property string shipheart_capteur_acceleration: "Capt_acceleration"
readonly property string shipheart_capteur_position: "Capt_position"
readonly property string shipheart_capteur_pourcentage: "Capt_pourcentage"
readonly property string shipheart_capteur_distance_m: "Capt_distance_m"
readonly property string shipheart_capteur_distance_km: "Capt_distance_km"
readonly property string shipheart_capteur_distance_nq: "Capt_distance_nq"
readonly property string shipheart_capteur_vitesse_kts: "Capt_vitesse_kts"
readonly property string shipheart_capteur_vitesse_kmh: "Capt_vitesse_kmh"
readonly property string shipheart_capteur_angle_degres: "Capt_angle_degres"
readonly property string shipheart_capteur_latitude: "Capt_latitude"
readonly property string shipheart_capteur_longitude: "Capt_longitude"
readonly property string shipheart_capteur_volume: "Capt_volume"
// Capteurs calculés :
readonly property int shipheart_max_nombre_conditions_par_capteur: 50 // Cf 'capteurs.h' dans l'appli
// Opération de condition :
readonly property int shipheart_operation_condition_non_definie: 0
readonly property int shipheart_operation_condition_ou: 1
readonly property int shipheart_operation_condition_et: 2
readonly property int shipheart_operation_condition_ou_exclusif: 3
readonly property int shipheart_operation_condition_plus: 10
readonly property int shipheart_operation_condition_moins: 11
readonly property int shipheart_operation_condition_multiplie: 12
readonly property int shipheart_operation_condition_divise: 13
// Type de condition :
readonly property int shipheart_type_condition_normale: 0
readonly property int shipheart_type_condition_debut_groupe_ou: shipheart_operation_condition_ou
readonly property int shipheart_type_condition_debut_groupe_et: shipheart_operation_condition_et
readonly property int shipheart_type_condition_debut_groupe_ou_exclusif: shipheart_operation_condition_ou_exclusif
readonly property int shipheart_type_condition_debut_groupe_plus: shipheart_operation_condition_plus
readonly property int shipheart_type_condition_debut_groupe_moins: shipheart_operation_condition_moins
readonly property int shipheart_type_condition_debut_groupe_multiplie: shipheart_operation_condition_multiplie
readonly property int shipheart_type_condition_debut_groupe_divise: shipheart_operation_condition_divise
// NB : il existe les même valeurs en négatif pour fermer le groupe correspondant.
// Tests :
readonly property int shipheart_test_non_defini: 0
readonly property int shipheart_test_strictement_inferieur: 1
readonly property int shipheart_test_inferieur_ou_egal: 2
readonly property int shipheart_test_egal: 3
readonly property int shipheart_test_superieur_ou_egal: 4
readonly property int shipheart_test_strictement_superieur: 5
//-----------------------------------------------------------------------------------
// Circuits :
// Max :
readonly property int shipheart_max_circuits_par_module_shipbase: 3
readonly property int shipheart_max_circuits_par_module_sp812: 8
readonly property int shipheart_max_circuits_par_module_sp8dc: 8
readonly property int shipheart_max_circuits_par_module_sp8xx: 8 // Valeur commune aux SP812 et aux SP8DC
readonly property int shipheart_max_circuits_par_module_sp4ac: 4
readonly property double shipheart_max_courant_masses_sp8dc: 25.0 // En A (le max 'technique' est 25.5 car transféré en uint_8 vers les SP8DC
readonly property double shipheart_plancher_intensite_circuit_shipbase: 0.05 // En dessous de cette valeur, l'intensité ne sera pas affichée
readonly property double shipheart_plancher_intensite_circuit_sp8xx: 0.05 // En dessous de cette valeur, l'intensité ne sera pas affichée
readonly property double shipheart_plancher_intensite_circuit_sp4ac: 0.5 // En dessous de cette valeur, l'intensité ne sera pas affichée
// Mode commande des circuits :
readonly property int shipheart_mode_commande_circuit_tor: 0
readonly property int shipheart_mode_commande_circuit_soft_tor: 1
readonly property int shipheart_mode_commande_circuit_soft_variable: 2
// Etat des circuits :
readonly property int shipheart_etat_circuit_ok: 0
readonly property int shipheart_etat_circuit_limitation: 1
readonly property int shipheart_etat_circuit_protection: 2
readonly property int shipheart_etat_circuit_disjonte: 3
readonly property int shipheart_etat_circuit_cc_batterie: 4
readonly property int shipheart_etat_circuit_deleste: 5
readonly property int shipheart_etat_circuit_undervoltage: 6
readonly property int shipheart_etat_circuit_inversion_phase_neutre: 7
readonly property int shipheart_etat_circuit_absence_terre: 8
readonly property int shipheart_etat_circuit_absence_masse: 9
readonly property int shipheart_etat_circuit_inconnu: 99
// Types de variables :
readonly property string shipheart_circuit_consigne: "Circ_consigne"
readonly property string shipheart_circuit_tension: "Circ_tension"
readonly property string shipheart_circuit_courant: "Circ_courant"
readonly property string shipheart_circuit_frequence: "Circ_frequence"
readonly property string shipheart_circuit_puissance: "Circ_puissance"
readonly property string shipheart_circuit_energie: "Circ_energie"
readonly property string shipheart_circuit_tension_secteur: "Circ_tension_secteur"
//-----------------------------------------------------------------------------------
// Réservoirs :
readonly property int shipheart_reservoir_max_nombre_entrees_aux: 12
// Type d'entrées réservoir :
readonly property int shipheart_reservoir_type_entrees_aux: 1
readonly property int shipheart_reservoir_type_entrees_level_sensor: 2
// Mode entrées réservoir :
readonly property int shipheart_reservoir_mode_entrees_aux_normal: 0
readonly property int shipheart_reservoir_mode_entrees_aux_inverse: 1
readonly property int shipheart_reservoir_mode_entrees_level_sensor_0_10v: 1
readonly property int shipheart_reservoir_mode_entrees_level_sensor_500r: 2
readonly property int shipheart_reservoir_mode_entrees_level_sensor_4_20ma: 3
// Type_sonde réservoir :
readonly property int shipheart_reservoir_mode_entrees_level_sensor_500r_0_500r: 0
readonly property int shipheart_reservoir_mode_entrees_level_sensor_500r_0_190r: 1
readonly property int shipheart_reservoir_mode_entrees_level_sensor_500r_240_30r: 2
// Types de variables :
readonly property string shipheart_reservoir_niveau: "Res_niveau"
//===============================================================================================================================
// Propriétés dynamiques :
//===============================================================================================================================
property int shipheart_type_installation: shipheart_type_installation_shipbase
property var shipheart_specifique_client // Tableau mis à jour avec 'TB_Configuration.Specifique_client' dans 'main.qml' via l'appel à 'init_shipheart_specifique_client()' dans initialItem de StackView ci-dessous
property string shipheart_code_client: "" // Chaine contenant le code client 'TB_Configuration.Code_client'
// Thèmes d'affichage :
property string shipheart_fichier_image_accueil: "" // Fichier dans '/docs/image_accueil' à utiliser sur la page d'accueil (ou "" pour l'image par défaut)
property int shipheart_theme: 0 // N° du thème à utiliser. Mis à jour au démarrage à partir de TB_Configuration.Theme.
property string shipheart_theme_fichier_fond_ecran: "" // Le nom du fichier à utiliser comme fond d'écran
property string shipheart_theme_couleur_fond_ecran: couleur_noir // Le nom (cf plus haut) de la couleur à utiliser en fond d'écran (ne fonctionne que si 'shipheart_theme_fichier_fond_ecran' est vide)
property color shipheart_couleur_fond_bouton: couleur_gris_tres_fonce_transparent
property color shipheart_couleur_fond_bouton_actif: couleur_bleu_koriolan_transparent
property color shipheart_couleur_texte_titre_1: couleur_gris_fonce
property color shipheart_couleur_texte_titre_2: couleur_bleu_koriolan
property color shipheart_couleur_texte_titre_3: couleur_gris_pale
property color shipheart_couleur_fond_boite_dialogue_niveau_0: couleur_bleu_koriolan
property color shipheart_couleur_fond_boite_dialogue_niveau_1: couleur_orange
property color shipheart_couleur_fond_boite_dialogue_niveau_2: couleur_rouge
property color shipheart_couleur_texte_boite_dialogue_niveau_0: couleur_blanc_casse
property color shipheart_couleur_texte_boite_dialogue_niveau_1: couleur_blanc_casse
property color shipheart_couleur_texte_boite_dialogue_niveau_2: couleur_blanc_casse
property color shipheart_couleur_texte_slider: couleur_bleu_koriolan
property color shipheart_couleur_bordure_courbes: couleur_bleu_koriolan // Couleur de la courbe elle-même
property int shipheart_generation_shipbase: shipheart_generation_shipbase_inconnue
property int shipheart_defaut_config_k_bus: 0 // 0=normal, 1=défaut de config K-Bus vs modules réellement présents (mis à jour par Home en fonction du flag provenant de l'Appli)
property int shipheart_fuseau_horaire: 0 // UTC par défaut
property int shipheart_heure_ete: 0 // 0= hiver, 1= été
property int shipheart_langue: 0 // Français par défaut
property string shipheart_code_pays: "FR" // Français par défaut
property string shipheart_code_langue: "fr_FR" // Français par défaut
property int shipheart_unite_temperature: shipheart_unite_temperature_celsius // °C par défaut
property string shipheart_unite_temperature_symbole: "°C"
property int shipheart_unite_volume: shipheart_unite_volume_litres // Litres par défaut
property string shipheart_unite_volume_symbole: "l"
property int shipheart_time_out_economiseur: 0 // Image de TB_Configuration.Time_out_economiseur
property string shipheart_bips: "" // Image de TB_Configuration.Bips.
property double shipheart_latitude: 0
property double shipheart_longitude: 0
property string shipheart_heure_aube_nautique: "--:--"
property string shipheart_heure_lever_soleil: "--:--"
property string shipheart_heure_zenith: "--:--"
property string shipheart_heure_coucher_soleil: "--:--"
property string shipheart_heure_crepuscule_nautique: "--:--"
property string shipheart_fichier_a_valider: "";
property string shipheart_fichier_a_charger: "";
property int shipheart_nb_fichiers_a_charger: 0;
property int max_taille_code_pattern: 10 // Nb maxi de chiffres saisissable d'un code (attention : différent de Min_taille_code et Max_taille code de TB_Configuration). D'ailleurs, cette valeur est ajustée à Max_taille_code + 2 dans 'parametres.qml' et dans les pages spécifiques qui traitent la saisie de codes d'accès (ex : home_suncy.qml).
property int shipheart_compteur_economiseur: 30 // Valeur décrémentée chaque seconde et réarmée à chaque interaction d'un utilisateur (valeur mise à jour avec 'TB_Configuration.Time_out_economiseur' à chaque 'reload_economiseur()' dans 'Shipheart_page.qml')
property bool shipheart_flag_nettoyage_ecran_en_cours: false // Permet de passer l'info que le nettoyage est en cours (et, par exemple, bloquer l'économiseur d'écran)
property bool shipheart_flag_blocage_compteurs_pendant_config: false // Permet de bloquer le compteur pendant qu'on est en config
property int shipheart_compteur_time_out_niveau_acces: 0 // Contient le temps restant, en secondes, de la validité de l'accés en cours
property int shipheart_time_out_niveau_acces: 120
property int shipheart_niveau_acces_en_cours: shipheart_niveau_acces_aucun // 0=aucun accès valide, 1=accès user validé, 10=accès admin validé, 20=accès Koriolan validé
property int shipheart_message_users_max_nombre_reports: 3 // Valeur mise à jour avec 'TB_Configuration.Nb_maxi_reports_message_user' lors de l'init de 'home.qml'
property int shipheart_periode_obsolescence_capteur_nmea: 600 // En secondes
property int shipheart_niveau_home: 0 // Contient le niveau dans la StackView de la page 'home.qml' (dépend si des pages spécifique au client sont disposées avant). Permet de revenir directement à la page 'home.qml' depuis certaines pages
property double shipheart_test_vitesse_test_ecran: 1500
property int nombre_lignes_matrice_test: 8
property int nombre_colonnes_matrice_test: 10
property bool flag_economiseur_actif: false
// Dimensions (mises à jour dans 'home_attente.qml' selon la valeur de 'shipheart_type_installation' :
property int shipheart_largeur_page
property int shipheart_hauteur_page
property int shipheart_hauteur_bandeau_haut
property int shipheart_hauteur_titre_2
property int shipheart_hauteur_bandeau_bas
property int shipheart_hauteur_clavier
// Modèles :
property Bdd bdd : Bdd{}
property Systeme systeme : Systeme{}
property TbMesuresModel tbmesuresModel : TbMesuresModel{}
// Signals :
width: shipheart_largeur_page
height: shipheart_hauteur_page
color: shipheart_theme_couleur_fond_ecran
visible: true
property int duree_animation_pages: 400 // En ms
//===========================================================
// Connexion BDD :
// La connexion MySql a un time-out (par défaut de 8h apparemment). La page Home faisant des mises à jour chaque secondes, il n'y a
// aucun soucis de déclenchement.
// Par contre, les mises à jour de Home étant désactivées lorsqu'on navigue sur les pages de niveau inférieur, si on reste sur
// une telle page pendant plusieurs heures, le time-out se déclenche. Par exemple, si on reste sur une page de configuration
// pensant une nuit, il est probable qu'on se trouve dans ce cas...
// Dans ce cas, seul une réinit de l'appli QT permet de redémarrer puisque la connexion à la BDD est fait dans main.cpp.
// Plutôt que d'allonger le time-out (il ne semble pas possible de le mettre à infini), il est ajouté ce timer qui fait une requête
// toutes les heures, même lorsque Home n'est pas la page active.
//===========================================================
Timer {
id: timer_maintient_connexion_bdd
interval: 60 * 60 * 1000 // Toutes les heures = 60 minutes x 60 secondes x 1000ms
running: true
repeat: true
onTriggered: {
let req = 'SELECT Valeur FROM TB_Systeme WHERE Nom="Heart_beat" ';
let res = bdd.requete_unique(req);
console.log("Déclenchement du timer de maintient de la connexion avec la BDD")
}
}
//==============================================================
// Pile de pages :
//==============================================================
StackView {
id: stackView
width: root.width
height: root.height
Component.onCompleted: {
var result = stackView.push(Qt.resolvedUrl("qrc:/home_attente.qml")) // Cela permet d'avoir une page "propre" plutot qu'une page toute blanche en attendant que l'accès à la BDD soit possible et permette de déterminer la home page à charger.
// console.log("Résultat du push : " + result)
}
pushEnter: Transition { // Nouvelle page, lors d'un PUSH
PropertyAnimation {
property: "x"
from: shipheart_largeur_page // Part du bord droit...
to:0 // ... jusqu'au bord gauche (la page "entre" par la gauche)
duration: duree_animation_pages
easing.type: Easing.OutQuad;
}
}
pushExit: Transition { // Ancienne page, lors d'un PUSH
PropertyAnimation {
property: "x"
from: 0 // Part du bord gauche, là où elle était affichée...
to: -shipheart_largeur_page // ... et sort par la gauche, jusqu'à ce qu'elle disparaisse complètement à gauche.
duration: duree_animation_pages
easing.type: Easing.OutQuad;
}
}
popEnter: Transition { // Nouvelle page, lors d'un POP
PropertyAnimation {
property: "x"
from: -shipheart_largeur_page // Part de complètement hors du cadre, à gauche...
to: 0 // ... jusqu'à ce que son bord gauche soit aligné avec le bord gauche de l'écran.
duration: duree_animation_pages
easing.type: Easing.OutQuad;
}
}
popExit: Transition { // Ancienne page lors d'un POP.
PropertyAnimation {
property: "x"
from: 0 // Part du bord gauche...
to: shipheart_largeur_page // ... jusqu'au bord droit de l'écran (sort par la droite).
duration: duree_animation_pages
easing.type: Easing.OutQuad;
}
}
}
//==============================================================
// Clavier :
//==============================================================
InputPanel {
id: clavier
z: 99
x: 0
y: root.height
width: root.width
states: State {
name: "visible"
when: clavier.active
PropertyChanges {
target: clavier
y: root.height - clavier.height
}
}
transitions: Transition {
from: ""
to: "visible"
reversible: true
ParallelAnimation {
NumberAnimation {
properties: "y"
duration: 250
easing.type: Easing.InOutQuad
}
}
}
Component.onCompleted: {
console.log("locales available: " + VirtualKeyboardSettings.availableLocales)
console.log("Locale before changing it: " + VirtualKeyboardSettings.locale)
VirtualKeyboardSettings.locale = "fr_FR";
console.log("Locale after changing it: " + VirtualKeyboardSettings.locale)
// VirtualKeyboardSettings.styleName = "retro"
// Les fichiers de layout spécifiques à Koriolan sont dans le répertoire /virtualkeyboard_layouts_koriolan et renseigné en ressource de qrc.
// La procédure a été trouvée ici : https://forum.qt.io/topic/93279/how-to-custom-qml-virtual-keyboard/2
// Note : les fichiers relatifs au clavier sont situés dans /home/koriolan/qt/raspi/qt-everywhere-src-5.12.5/qtvirtualkeyboard/src/virtualkeyboard
// En particulier, les fichiers de DEFAULT ou RETRO sont dans /home/koriolan/qt/raspi/qt-everywhere-src-5.12.5/qtvirtualkeyboard/src/virtualkeyboard/content/styles
}
}
//---------------------------------------------------------------------------------------------------------------------------------------
// Les fonctions ci-dessous sont accessibles depuis n'importe quelle page (puisque appelée, directement ou indirectement par cell-ci).
//---------------------------------------------------------------------------------------------------------------------------------------
//=============================================================================================================
// Demande de synchro de la BDD
//=============================================================================================================
function synchro_bdd(type_synchro)
{
switch (type_synchro)
{
case shipheart_type_synchro_aucune:
break;
case shipheart_type_synchro_data:
bdd.requete_unique('UPDATE TB_Systeme SET Valeur=1 WHERE Nom="Synchro" ');
break;
case shipheart_type_synchro_config:
bdd.requete_unique('UPDATE TB_Systeme SET Valeur=2 WHERE Nom="Synchro" ');
break;
default:
console.log("/!\\ Le paramètre de synchro de BDD reçu n'est pas valide [" + type_synchro + "]")
break;
}
}
//=============================================================================================================
// Rebooter via l'Appli (permet un reboot "ordonné") :
//=============================================================================================================
function rebooter()
{
console.log("!!! Commande de REBOOT reçue !!!");
bdd.requete_unique('UPDATE TB_Systeme SET Valeur="Reboot" WHERE Nom="Demande_reboot" ');
stackView.pop(stackView.get(shipheart_niveau_home)); // Retour à la page 'home.qml' car on va reseter et il faut pouvoir afficher le message user
}
}