InterfaceGPS 0.1.0
Interface embarquée Qt pour navigation, multimédia, caméra et télémétrie
Chargement...
Recherche...
Aucune correspondance
main.cpp
Aller à la documentation de ce fichier.
1
11#include <QApplication>
12#include <QLoggingCategory>
13#include <QQuickStyle>
14#include "mainwindow.h"
15#include "telemetrydata.h"
16#include "gpstelemetrysource.h"
17#include <QNetworkProxyFactory>
18#include <QDir>
19#include <QCoreApplication>
20#include "mpu9250source.h"
21
22int main(int argc, char *argv[]) {
23 // --- 1. CONFIGURATION SYSTÈME ET GRAPHIQUE ---
24
25 // Désactive le moteur de thème externe pour garder le contrôle total sur le style sombre
26 qputenv("QT_QPA_PLATFORMTHEME", "");
27
28 // Indispensable pour que WebEngine (Chromium) fonctionne avec le GPU sous Wayland
29 QCoreApplication::setAttribute(Qt::AA_ShareOpenGLContexts);
30
31 // Optimisations pour Chromium (utilisé dans la page HomeAssistant / Media)
32 qputenv("QTWEBENGINE_CHROMIUM_FLAGS",
33 "--disable-web-security "
34 "--no-sandbox "
35 "--ignore-certificate-errors "
36 "--log-level=3 "
37 "--disable-logging "
38 "--enable-logging=none");
39
40 // --- 2. INITIALISATION DE L'APPLICATION ---
41
42 QApplication a(argc, argv); // L'objet 'a' doit �tre créé ICI pour �tre utilisé ensuite
43
44 // --- 3. THÈME SOMBRE GLOBAL (FEUILLE DE STYLE) ---
45 // Cette section définit l'apparence de toute l'application pour éviter les fonds blancs
46 a.setStyleSheet(
47 // Fond de tous les widgets par d�faut
48 "QWidget { "
49 " background-color: #171a21; "
50 " color: white; "
51 " font-family: 'Segoe UI', sans-serif;"
52 "}"
53 // Style des boutons (basé sur votre charte graphique)
54 "QPushButton { "
55 " background-color: #222634; "
56 " border-radius: 12px; "
57 " padding: 8px; "
58 " color: white; "
59 "}"
60 "QPushButton:pressed { background-color: #2d3245; }"
61 // Style des listes (Bluetooth, etc.)
62 "QAbstractItemView { "
63 " background-color: #2a2f3a; "
64 " alternate-background-color: #222634; "
65 " selection-background-color: #2a75ff; "
66 " border: none; "
67 " outline: none; "
68 "}"
69 // Style des barres de défilement (Scrollbars)
70 "QScrollBar:vertical { "
71 " border: none; background: #171a21; width: 10px; "
72 "}"
73 "QScrollBar::handle:vertical { background: #3e4452; border-radius: 5px; }"
74 "QFrame { border: none; }"
75 );
76
77 // Utilisation du style Fusion comme base (tr�s flexible pour le mode sombre)
78 QQuickStyle::setStyle("Fusion");
79
80 // --- 4. CONFIGURATION DES LOGS ET RÉSEAU ---
81
82 QLoggingCategory::setFilterRules(
83 "*.debug=false\n"
84 "qt.qpa.*=false\n"
85 "qt.text.font.*=false\n"
86 "qt.network.ssl.warning=true\n"
87 "qt.location.mapping.osm.debug=false\n"
88 "qt.network.access.debug=false"
89 );
90
91 // Chemin des plugins pour les icônes SVG sur Raspberry Pi
92 QCoreApplication::addLibraryPath("/usr/lib/aarch64-linux-gnu/qt6/plugins");
93
94 // Cache local pour les cartes OSM (réduit la data r�seau)
95 QString cachePath = QCoreApplication::applicationDirPath() + "/qtlocation_cache";
96 QDir().mkpath(cachePath);
97 qputenv("QTLOCATION_OSM_CACHE_DIR", cachePath.toUtf8());
98
99 QNetworkProxyFactory::setUseSystemConfiguration(true);
100
101 // --- 5. ARCHITECTURE ET INJECTION DE D�PENDANCES ---
102
103 // Le "Single Source of Truth" (Modèle de donn�es central)
104 TelemetryData telemetry;
105
106 // Initialisation du GPS (Port Série)
107 GpsTelemetrySource gpsSource(&telemetry);
108#ifdef Q_OS_LINUX
109 gpsSource.start("/dev/serial0");:;:
110#else
111 gpsSource.start("COM1");
112#endif
113
114 // Initialisation de la Centrale inertielle (IMU)
115 Mpu9250Source mpuSource(&telemetry);
116 mpuSource.start();
117
118 // Démarrage de l'IHM avec injection de la télémétrie
119 MainWindow w(&telemetry);
120 w.showFullScreen();
121
122 // Lancement de la boucle d'événements
123 return a.exec();
124}
Contrôleur matériel d'acquisition GPS. Écoute un port série physique (ex: GPIO du Raspberry Pi ou USB...
Fenêtre principale agissant comme conteneur parent de toutes les vues de l'application....
Definition mainwindow.h:32
Contrôleur matériel d'acquisition pour la centrale inertielle MPU9250.
Classe représentant les données en temps réel du véhicule. Cette classe hérite de QObject et centrali...
Rôle architectural : Source de télémétrie GPS branchée sur un flux NMEA série.
Rôle architectural : Orchestrateur principal des pages du tableau de bord.
Rôle architectural : Source de données inertielles et boussole matérielle (I2C).
Rôle architectural : Modèle central de télémétrie partagé entre les modules C++ et l'interface QML.