9 #include "common/treenode.h"
10 #include "common/rectc.h"
11 #include "data/graph.h"
15 #include "pdfexportdialog.h"
16 #include "pngexportdialog.h"
17 #include "optionsdialog.h"
27 class QGeoPositionInfoSource
;
38 class NavigationWidget
;
40 class GUI
: public QMainWindow
47 bool openFile(const QString
&fileName
, bool tryUnknown
, int &showError
);
48 bool loadMap(const QString
&fileName
, MapAction
*&action
, int &showError
);
56 #endif // Q_OS_ANDROID
67 void showGraphs(bool show
);
68 void showGraphGrids(bool show
);
69 void showGraphSliderInfo(bool show
);
70 void showPathMarkerInfo(QAction
*action
);
72 void showGraphTabs(bool show
);
74 void showToolbars(bool show
);
75 void showFullscreen(bool show
);
76 #endif // Q_OS_ANDROID
77 void showTracks(bool show
);
78 void showRoutes(bool show
);
79 void showAreas(bool show
);
80 void showWaypoints(bool show
);
87 void downloadDataDEM();
88 void downloadMapDEM();
91 void mapChanged(QAction
*action
);
92 void graphChanged(int);
93 void poiFileChecked(QAction
*action
);
95 void unselectAllPOIs();
97 void recentFileSelected(QAction
*action
);
98 void clearRecentFiles();
99 #endif // Q_OS_ANDROID
105 void updateNavigationActions();
107 void setTotalTime() {setTimeType(Total
);}
108 void setMovingTime() {setTimeType(Moving
);}
109 void setMetricUnits() {setUnits(Metric
);}
110 void setImperialUnits() {setUnits(Imperial
);}
111 void setNauticalUnits() {setUnits(Nautical
);}
112 void setDistanceGraph() {setGraphType(Distance
);}
113 void setTimeGraph() {setGraphType(Time
);}
114 void setDecimalDegrees() {setCoordinatesFormat(DecimalDegrees
);}
115 void setDegreesMinutes() {setCoordinatesFormat(DegreesMinutes
);}
116 void setDMS() {setCoordinatesFormat(DMS
);}
118 void screenChanged(QScreen
*screen
);
119 void logicalDotsPerInchChanged(qreal dpi
);
123 void mapInitialized();
128 typedef QPair
<QDateTime
, QDateTime
> DateTimeRange
;
131 void plot(QPrinter
*printer
);
132 void plotMainPage(QPainter
*painter
, const QRectF
&rect
, qreal ratio
,
133 bool expand
= false);
134 void plotGraphsPage(QPainter
*painter
, const QRectF
&rect
, qreal ratio
);
135 qreal
graphPlotHeight(const QRectF
&rect
, qreal ratio
);
137 TreeNode
<POIAction
*> createPOIActionsNode(const TreeNode
<QString
> &node
);
138 TreeNode
<MapAction
*> createMapActionsNode(const TreeNode
<Map
*> &node
);
139 void createMapNodeMenu(const TreeNode
<MapAction
*> &node
, QMenu
*menu
,
140 QAction
*action
= 0);
141 void createPOINodeMenu(const TreeNode
<POIAction
*> &node
, QMenu
*menu
,
142 QAction
*action
= 0);
143 void createActions();
146 void createNavigation();
147 #else // Q_OS_ANDROID
148 void createToolBars();
149 #endif // Q_OS_ANDROID
150 void createStatusBar();
151 void createMapView();
152 void createGraphTabs();
153 void createBrowser();
156 void openDir(const QString
&path
, int &showError
);
157 #endif // Q_OS_ANDROID
158 bool openPOIFile(const QString
&fileName
);
159 bool loadFile(const QString
&fileName
, bool tryUnknown
, int &showError
);
160 void loadData(const Data
&data
);
161 bool loadMapNode(const TreeNode
<Map
*> &node
, MapAction
*&action
,
162 const QList
<QAction
*> &existingActions
, int &showError
);
163 void loadMapDirNode(const TreeNode
<Map
*> &node
, QList
<MapAction
*> &actions
,
164 QMenu
*menu
, const QList
<QAction
*> &existingActions
, int &showError
);
165 void updateStatusBarInfo();
166 void updateWindowTitle();
167 bool updateGraphTabs();
168 void updateDataDEMDownloadAction();
169 void updateMapDEMDownloadAction();
171 void updateRecentFiles(const QString
&fileName
);
172 #endif // Q_OS_ANDROID
174 TimeType
timeType() const;
176 void setTimeType(TimeType type
);
177 void setUnits(Units units
);
178 void setCoordinatesFormat(CoordinatesFormat format
);
179 void setGraphType(GraphType type
);
181 qreal
distance() const;
183 qreal
movingTime() const;
184 QAction
*mapAction(const QString
&name
);
185 QGeoPositionInfoSource
*positionSource(const Options
&options
);
186 void readSettings(QString
&activeMap
, QStringList
&disabledPOIs
,
187 QStringList
&recentFiles
);
190 void loadInitialMaps(const QString
&selected
);
191 void loadInitialPOIs(const QStringList
&disabled
);
193 void loadRecentFiles(const QStringList
&files
);
194 #endif // Q_OS_ANDROID
196 void downloadDEM(const RectC
&rect
);
199 void updateOptions(const Options
&options
);
202 void keyPressEvent(QKeyEvent
*event
);
203 #endif // Q_OS_ANDROID
204 void closeEvent(QCloseEvent
*event
);
205 void dragEnterEvent(QDragEnterEvent
*event
);
206 void dropEvent(QDropEvent
*event
);
209 NavigationWidget
*_navigation
;
210 #else // Q_OS_ANDROID
211 QToolBar
*_fileToolBar
;
212 QToolBar
*_showToolBar
;
213 QToolBar
*_navigationToolBar
;
214 #endif // Q_OS_ANDROID
218 QMenu
*_recentFilesMenu
;
219 #endif // Q_OS_ANDROID
221 QActionGroup
*_fileActionGroup
;
222 QActionGroup
*_navigationActionGroup
;
223 QActionGroup
*_mapsActionGroup
;
224 QActionGroup
*_poisActionGroup
;
226 QActionGroup
*_recentFilesActionGroup
;
227 #endif // Q_OS_ANDROID
228 #if !defined(Q_OS_MAC) && !defined(Q_OS_ANDROID)
229 QAction
*_exitAction
;
230 #endif // Q_OS_MAC + Q_OS_ANDROID
231 QAction
*_pathsAction
;
232 QAction
*_aboutAction
;
233 QAction
*_printFileAction
;
234 QAction
*_exportPDFFileAction
;
235 QAction
*_exportPNGFileAction
;
236 QAction
*_openFileAction
;
237 QAction
*_openDirAction
;
238 QAction
*_closeFileAction
;
239 QAction
*_reloadFileAction
;
240 QAction
*_statisticsAction
;
241 QAction
*_openPOIAction
;
242 QAction
*_selectAllPOIAction
;
243 QAction
*_unselectAllPOIAction
;
244 QAction
*_showPOIAction
;
245 QAction
*_overlapPOIAction
;
246 QAction
*_showPOILabelsAction
;
247 QAction
*_showPOIIconsAction
;
248 QAction
*_showMapAction
;
249 QAction
*_showPositionAction
;
250 QAction
*_followPositionAction
;
251 QAction
*_showPositionCoordinatesAction
;
252 QAction
*_showMotionInfoAction
;
253 QAction
*_loadMapAction
;
254 QAction
*_loadMapDirAction
;
255 QAction
*_clearMapCacheAction
;
256 QAction
*_showGraphsAction
;
257 QAction
*_showGraphGridAction
;
258 QAction
*_showGraphSliderInfoAction
;
259 QAction
*_distanceGraphAction
;
260 QAction
*_timeGraphAction
;
262 QAction
*_showGraphTabsAction
;
263 #else // Q_OS_ANDROID
264 QAction
*_keysAction
;
265 QAction
*_fullscreenAction
;
266 QAction
*_showToolbarsAction
;
267 QAction
*_nextAction
;
268 QAction
*_prevAction
;
269 QAction
*_lastAction
;
270 QAction
*_firstAction
;
271 #endif // Q_OS_ANDROID
272 QAction
*_metricUnitsAction
;
273 QAction
*_imperialUnitsAction
;
274 QAction
*_nauticalUnitsAction
;
275 QAction
*_decimalDegreesAction
;
276 QAction
*_degreesMinutesAction
;
278 QAction
*_totalTimeAction
;
279 QAction
*_movingTimeAction
;
280 QAction
*_nextMapAction
;
281 QAction
*_prevMapAction
;
282 QAction
*_showTracksAction
;
283 QAction
*_showRoutesAction
;
284 QAction
*_showWaypointsAction
;
285 QAction
*_showWaypointLabelsAction
;
286 QAction
*_showWaypointIconsAction
;
287 QAction
*_showAreasAction
;
288 QAction
*_showRouteWaypointsAction
;
289 QAction
*_hideMarkersAction
;
290 QAction
*_showMarkersAction
;
291 QAction
*_showMarkerDateAction
;
292 QAction
*_showMarkerCoordinatesAction
;
293 QAction
*_showTicksAction
;
294 QAction
*_useStylesAction
;
295 QAction
*_showCoordinatesAction
;
296 QAction
*_openOptionsAction
;
297 QAction
*_downloadDataDEMAction
;
298 QAction
*_downloadMapDEMAction
;
299 QAction
*_showDEMTilesAction
;
300 QAction
*_drawHillShadingAction
;
304 QAction
*_clearRecentFilesAction
;
305 QAction
*_recentFilesEnd
;
306 #endif // Q_OS_ANDROID
308 QLabel
*_fileNameLabel
;
309 QLabel
*_distanceLabel
;
312 QSplitter
*_splitter
;
314 QTabWidget
*_graphTabWidget
;
315 QList
<GraphTab
*> _tabs
;
320 QGeoPositionInfoSource
*_positionSource
;
323 FileBrowser
*_browser
;
324 QList
<QString
> _files
;
326 int _trackCount
, _routeCount
, _areaCount
, _waypointCount
;
327 qreal _trackDistance
, _routeDistance
;
328 qreal _time
, _movingTime
;
329 DateTimeRange _dateRange
;
333 QList
<QByteArray
> _windowStates
;
334 QList
<QByteArray
> _windowGeometries
;
336 #endif // Q_OS_ANDROID
338 PDFExport _pdfExport
;
339 PNGExport _pngExport
;
342 QString _dataDir
, _mapDir
, _poiDir
;
346 QList
<RectC
> _demRects
;