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
22
int
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
}
GpsTelemetrySource
Contrôleur matériel d'acquisition GPS. Écoute un port série physique (ex: GPIO du Raspberry Pi ou USB...
Definition
gpstelemetrysource.h:24
MainWindow
Fenêtre principale agissant comme conteneur parent de toutes les vues de l'application....
Definition
mainwindow.h:32
Mpu9250Source
Contrôleur matériel d'acquisition pour la centrale inertielle MPU9250.
Definition
mpu9250source.h:23
TelemetryData
Classe représentant les données en temps réel du véhicule. Cette classe hérite de QObject et centrali...
Definition
telemetrydata.h:20
gpstelemetrysource.h
Rôle architectural : Source de télémétrie GPS branchée sur un flux NMEA série.
mainwindow.h
Rôle architectural : Orchestrateur principal des pages du tableau de bord.
mpu9250source.h
Rôle architectural : Source de données inertielles et boussole matérielle (I2C).
telemetrydata.h
Rôle architectural : Modèle central de télémétrie partagé entre les modules C++ et l'interface QML.
main.cpp
Généré par
1.9.8