1
0
mirror of https://github.com/tumic0/GPXSee.git synced 2024-12-01 07:01:16 +01:00
GPXSee/src/GUI/gui.h

290 lines
7.4 KiB
C
Raw Normal View History

2015-10-05 01:43:48 +02:00
#ifndef GUI_H
#define GUI_H
#include <QMainWindow>
#include <QString>
#include <QList>
#include <QDate>
2016-05-25 23:27:07 +02:00
#include <QPrinter>
#include "common/treenode.h"
#include "common/rectc.h"
2017-11-26 18:54:03 +01:00
#include "data/graph.h"
2016-09-21 23:48:11 +02:00
#include "units.h"
#include "timetype.h"
#include "format.h"
2020-09-27 00:34:38 +02:00
#include "pdfexportdialog.h"
#include "pngexportdialog.h"
2016-12-06 01:48:26 +01:00
#include "optionsdialog.h"
2015-10-05 01:43:48 +02:00
class QMenu;
class QToolBar;
class QTabWidget;
class QActionGroup;
class QAction;
class QLabel;
class QSplitter;
class QPrinter;
2021-12-04 15:05:30 +01:00
class QGeoPositionInfoSource;
2015-10-20 22:18:41 +02:00
class FileBrowser;
2016-06-24 00:55:44 +02:00
class GraphTab;
class MapView;
2015-11-23 02:37:08 +01:00
class Map;
2018-06-04 23:40:42 +02:00
class POI;
2018-08-18 21:06:36 +02:00
class QScreen;
class MapAction;
class POIAction;
class Data;
class DEMLoader;
2015-10-05 01:43:48 +02:00
class GUI : public QMainWindow
{
Q_OBJECT
public:
GUI();
2015-10-05 01:43:48 +02:00
bool openFile(const QString &fileName, bool silent = false);
bool loadMap(const QString &fileName, MapAction *&action,
bool silent = false);
2018-08-18 21:06:36 +02:00
void show();
2015-10-05 01:43:48 +02:00
private slots:
void about();
2015-10-21 01:09:17 +02:00
void keys();
void paths();
void printFile();
2020-09-27 00:34:38 +02:00
void exportPDFFile();
void exportPNGFile();
2015-10-05 01:43:48 +02:00
void openFile();
2016-03-23 20:56:39 +01:00
void closeAll();
2020-05-20 21:00:36 +02:00
void reloadFiles();
2018-07-21 16:13:18 +02:00
void statistics();
2015-10-05 01:43:48 +02:00
void openPOIFile();
2016-10-17 23:14:07 +02:00
void showGraphs(bool show);
void showGraphGrids(bool show);
2017-09-29 11:43:09 +02:00
void showGraphSliderInfo(bool show);
void showPathMarkerInfo(QAction *action);
2016-10-17 23:14:07 +02:00
void showToolbars(bool show);
void showFullscreen(bool show);
void showTracks(bool show);
void showRoutes(bool show);
2021-09-01 13:08:34 +02:00
void showAreas(bool show);
void showWaypoints(bool show);
void loadMap();
2020-12-02 23:58:11 +01:00
void loadMapDir();
2016-04-08 22:33:19 +02:00
void nextMap();
void prevMap();
2016-12-06 01:48:26 +01:00
void openOptions();
2020-12-02 23:58:11 +01:00
void clearMapCache();
void downloadDEM();
2021-09-23 22:44:21 +02:00
void showDEMTiles();
2015-10-20 22:18:41 +02:00
void mapChanged(QAction *action);
2015-10-05 01:43:48 +02:00
void graphChanged(int);
void poiFileChecked(QAction *action);
void selectAllPOIs();
void unselectAllPOIs();
2015-10-05 01:43:48 +02:00
2015-12-18 22:21:11 +01:00
void next();
void prev();
void last();
void first();
void updateNavigationActions();
2015-12-18 22:21:11 +01:00
void setTotalTime() {setTimeType(Total);}
void setMovingTime() {setTimeType(Moving);}
2016-09-21 23:48:11 +02:00
void setMetricUnits() {setUnits(Metric);}
void setImperialUnits() {setUnits(Imperial);}
2018-02-11 23:51:57 +01:00
void setNauticalUnits() {setUnits(Nautical);}
2016-09-21 23:48:11 +02:00
void setDistanceGraph() {setGraphType(Distance);}
void setTimeGraph() {setGraphType(Time);}
void setDecimalDegrees() {setCoordinatesFormat(DecimalDegrees);}
void setDegreesMinutes() {setCoordinatesFormat(DegreesMinutes);}
void setDMS() {setCoordinatesFormat(DMS);}
2015-12-19 20:23:07 +01:00
2018-08-18 21:06:36 +02:00
void screenChanged(QScreen *screen);
void logicalDotsPerInchChanged(qreal dpi);
2016-03-30 20:50:51 +02:00
void mapLoaded();
2020-12-10 01:09:23 +01:00
void mapLoadedDir();
void mapInitialized();
void demLoaded();
2015-10-05 01:43:48 +02:00
private:
2020-05-20 21:00:36 +02:00
typedef QPair<QDateTime, QDateTime> DateTimeRange;
2016-05-13 18:48:42 +02:00
2016-03-23 20:56:39 +01:00
void closeFiles();
void plot(QPrinter *printer);
2020-09-27 00:34:38 +02:00
void plotMainPage(QPainter *painter, const QRectF &rect, qreal ratio,
bool expand = false);
void plotGraphsPage(QPainter *painter, const QRectF &rect, qreal ratio);
qreal graphPlotHeight(const QRectF &rect, qreal ratio);
2015-11-23 02:37:08 +01:00
TreeNode<POIAction*> createPOIActionsNode(const TreeNode<QString> &node);
TreeNode<MapAction*> createMapActionsNode(const TreeNode<Map*> &node);
void createMapNodeMenu(const TreeNode<MapAction*> &node, QMenu *menu,
QAction *action = 0);
void createPOINodeMenu(const TreeNode<POIAction*> &node, QMenu *menu,
QAction *action = 0);
void createActions();
void createMenus();
2015-10-05 01:43:48 +02:00
void createToolBars();
void createStatusBar();
void createMapView();
void createGraphTabs();
2016-10-23 11:09:20 +02:00
void createBrowser();
2015-10-05 01:43:48 +02:00
bool openPOIFile(const QString &fileName);
bool loadFile(const QString &fileName, bool silent = false);
void loadData(const Data &data);
bool loadMapNode(const TreeNode<Map*> &node, MapAction *&action,
bool silent, const QList<QAction*> &existingActions);
void loadMapDirNode(const TreeNode<Map*> &node, QList<MapAction*> &actions,
QMenu *menu, const QList<QAction*> &existingActions);
2015-10-20 22:18:41 +02:00
void updateStatusBarInfo();
2016-04-19 08:51:11 +02:00
void updateWindowTitle();
bool updateGraphTabs();
2021-09-01 13:08:34 +02:00
void updateDEMDownloadAction();
2015-10-17 12:08:30 +02:00
TimeType timeType() const;
Units units() const;
void setTimeType(TimeType type);
2016-09-21 23:48:11 +02:00
void setUnits(Units units);
void setCoordinatesFormat(CoordinatesFormat format);
2016-09-21 23:48:11 +02:00
void setGraphType(GraphType type);
2016-04-26 09:39:16 +02:00
2016-11-01 08:42:16 +01:00
qreal distance() const;
qreal time() const;
qreal movingTime() const;
QAction *mapAction(const QString &name);
QGeoPositionInfoSource *positionSource(const Options &options);
void readSettings(QString &activeMap, QStringList &disabledPOIs);
2016-04-26 09:39:16 +02:00
void writeSettings();
2015-10-05 01:43:48 +02:00
void loadInitialMaps(const QString &selected);
void loadInitialPOIs(const QStringList &disabled);
2016-09-21 23:48:11 +02:00
void keyPressEvent(QKeyEvent *event);
void closeEvent(QCloseEvent *event);
2016-10-04 10:16:46 +02:00
void dragEnterEvent(QDragEnterEvent *event);
void dropEvent(QDropEvent *event);
2016-09-21 23:48:11 +02:00
2015-10-05 01:43:48 +02:00
QToolBar *_fileToolBar;
2015-11-23 02:37:08 +01:00
QToolBar *_showToolBar;
2015-12-18 22:21:11 +01:00
QToolBar *_navigationToolBar;
QMenu *_poiMenu;
QMenu *_mapMenu;
2016-08-09 01:16:19 +02:00
2015-10-05 01:43:48 +02:00
QActionGroup *_fileActionGroup;
2015-12-18 22:21:11 +01:00
QActionGroup *_navigationActionGroup;
QActionGroup *_mapsActionGroup;
QActionGroup *_poisActionGroup;
2015-10-05 01:43:48 +02:00
QAction *_exitAction;
2015-10-21 01:09:17 +02:00
QAction *_keysAction;
QAction *_pathsAction;
2015-10-05 01:43:48 +02:00
QAction *_aboutAction;
QAction *_aboutQtAction;
QAction *_printFileAction;
2020-09-27 00:34:38 +02:00
QAction *_exportPDFFileAction;
QAction *_exportPNGFileAction;
2015-10-05 01:43:48 +02:00
QAction *_openFileAction;
QAction *_closeFileAction;
2015-10-20 22:18:41 +02:00
QAction *_reloadFileAction;
2018-07-21 16:13:18 +02:00
QAction *_statisticsAction;
2015-10-05 01:43:48 +02:00
QAction *_openPOIAction;
QAction *_selectAllPOIAction;
QAction *_unselectAllPOIAction;
2015-10-05 01:43:48 +02:00
QAction *_showPOIAction;
QAction *_overlapPOIAction;
2016-08-09 01:16:19 +02:00
QAction *_showPOILabelsAction;
2021-10-10 08:38:38 +02:00
QAction *_showPOIIconsAction;
2015-11-23 02:37:08 +01:00
QAction *_showMapAction;
2021-12-04 15:05:30 +01:00
QAction *_showPositionAction;
QAction *_followPositionAction;
QAction *_showPositionCoordinatesAction;
QAction *_showMotionInfo;
2016-04-05 09:10:19 +02:00
QAction *_fullscreenAction;
QAction *_loadMapAction;
2020-12-02 23:58:11 +01:00
QAction *_loadMapDirAction;
2016-04-01 19:25:34 +02:00
QAction *_clearMapCacheAction;
QAction *_showGraphsAction;
2016-10-17 23:14:07 +02:00
QAction *_showGraphGridAction;
2017-09-29 11:43:09 +02:00
QAction *_showGraphSliderInfoAction;
2016-09-19 00:56:10 +02:00
QAction *_distanceGraphAction;
QAction *_timeGraphAction;
QAction *_showToolbarsAction;
2015-12-18 22:21:11 +01:00
QAction *_nextAction;
QAction *_prevAction;
QAction *_lastAction;
QAction *_firstAction;
2015-12-19 20:23:07 +01:00
QAction *_metricUnitsAction;
QAction *_imperialUnitsAction;
2018-02-11 23:51:57 +01:00
QAction *_nauticalUnitsAction;
QAction *_decimalDegreesAction;
QAction *_degreesMinutesAction;
QAction *_dmsAction;
QAction *_totalTimeAction;
QAction *_movingTimeAction;
2016-04-08 22:33:19 +02:00
QAction *_nextMapAction;
QAction *_prevMapAction;
2016-08-09 01:16:19 +02:00
QAction *_showTracksAction;
QAction *_showRoutesAction;
QAction *_showWaypointsAction;
QAction *_showWaypointLabelsAction;
2021-10-10 08:38:38 +02:00
QAction *_showWaypointIconsAction;
2019-01-31 01:46:53 +01:00
QAction *_showAreasAction;
2016-08-09 10:47:49 +02:00
QAction *_showRouteWaypointsAction;
QAction *_hideMarkersAction;
2019-02-16 12:39:23 +01:00
QAction *_showMarkersAction;
QAction *_showMarkerDateAction;
QAction *_showMarkerCoordinatesAction;
QAction *_showTicksAction;
QAction *_showCoordinatesAction;
2016-12-06 01:48:26 +01:00
QAction *_openOptionsAction;
QAction *_downloadDEMAction;
2021-09-23 22:44:21 +02:00
QAction *_showDEMTilesAction;
QAction *_mapsEnd;
QAction *_poisEnd;
2015-10-05 01:43:48 +02:00
2015-10-14 02:54:36 +02:00
QLabel *_fileNameLabel;
QLabel *_distanceLabel;
QLabel *_timeLabel;
2015-10-05 01:43:48 +02:00
QSplitter *_splitter;
MapView *_mapView;
QTabWidget *_graphTabWidget;
2016-06-24 00:55:44 +02:00
QList<GraphTab*> _tabs;
2021-03-06 12:19:18 +01:00
GraphTab *_lastTab;
2015-10-05 01:43:48 +02:00
2016-10-09 23:46:30 +02:00
POI *_poi;
Map *_map;
2021-12-04 15:05:30 +01:00
QGeoPositionInfoSource *_positionSource;
DEMLoader *_dem;
2015-10-05 01:43:48 +02:00
2015-10-20 22:18:41 +02:00
FileBrowser *_browser;
QList<QString> _files;
2015-10-14 02:54:36 +02:00
2019-01-31 01:46:53 +01:00
int _trackCount, _routeCount, _areaCount, _waypointCount;
qreal _trackDistance, _routeDistance;
qreal _time, _movingTime;
2020-05-20 21:00:36 +02:00
DateTimeRange _dateRange;
QString _pathName;
QList<QByteArray> _windowStates;
QList<QByteArray> _windowGeometries;
2016-04-05 09:10:19 +02:00
int _frameStyle;
2016-05-25 23:27:07 +02:00
2020-09-27 00:34:38 +02:00
PDFExport _pdfExport;
PNGExport _pngExport;
2016-12-06 01:48:26 +01:00
Options _options;
QString _dataDir, _mapDir, _poiDir;
2020-09-27 00:34:38 +02:00
Units _units;
2021-09-01 13:08:34 +02:00
QList<RectC> _demRects;
2015-10-05 01:43:48 +02:00
};
#endif // GUI_H