summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/globe.h
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-02 19:54:34 -0800
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-11-02 19:54:34 -0800
commit8ea7f404574c2ee571d2dde6bb6be3791e962150 (patch)
tree6a050178bfc71bf10558968f2a3bc0a12d8c525f /desktop-widgets/globe.h
parentb273c1b0ca7bfe933e7c83742f1610f6bbe3f4d3 (diff)
parentdf7818a9b8495285b4d9812e5d6d50d6f9c08813 (diff)
downloadsubsurface-8ea7f404574c2ee571d2dde6bb6be3791e962150.tar.gz
Merge branch 'cmakeAndPreferences'
Diffstat (limited to 'desktop-widgets/globe.h')
-rw-r--r--desktop-widgets/globe.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/desktop-widgets/globe.h b/desktop-widgets/globe.h
new file mode 100644
index 000000000..8cc1265e4
--- /dev/null
+++ b/desktop-widgets/globe.h
@@ -0,0 +1,84 @@
+#ifndef GLOBE_H
+#define GLOBE_H
+
+#include <stdint.h>
+
+#ifndef NO_MARBLE
+#include <marble/MarbleWidget.h>
+#include <marble/GeoDataCoordinates.h>
+
+#include <QHash>
+
+namespace Marble{
+ class GeoDataDocument;
+}
+
+class KMessageWidget;
+using namespace Marble;
+struct dive;
+
+class GlobeGPS : public MarbleWidget {
+ Q_OBJECT
+public:
+ using MarbleWidget::centerOn;
+ static GlobeGPS *instance();
+ void reload();
+ bool eventFilter(QObject *, QEvent *);
+
+protected:
+ /* reimp */ void resizeEvent(QResizeEvent *event);
+ /* reimp */ void mousePressEvent(QMouseEvent *event);
+ /* reimp */ void contextMenuEvent(QContextMenuEvent *);
+
+private:
+ GeoDataDocument *loadedDives;
+ KMessageWidget *messageWidget;
+ QTimer *fixZoomTimer;
+ int currentZoomLevel;
+ bool needResetZoom;
+ bool editingDiveLocation;
+ bool doubleClick;
+ GlobeGPS(QWidget *parent = 0);
+
+signals:
+ void coordinatesChanged();
+
+public
+slots:
+ void repopulateLabels();
+ void changeDiveGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::Unit);
+ void mouseClicked(qreal lon, qreal lat, GeoDataCoordinates::Unit);
+ void fixZoom(bool now = false);
+ void zoomOutForNoGPS();
+ void prepareForGetDiveCoordinates();
+ void endGetDiveCoordinates();
+ void centerOnDiveSite(struct dive_site *ds);
+ void centerOnIndex(const QModelIndex& idx);
+};
+
+#else // NO_MARBLE
+/* Dummy widget for when we don't have MarbleWidget */
+#include <QLabel>
+
+class GlobeGPS : public QLabel {
+ Q_OBJECT
+public:
+ GlobeGPS(QWidget *parent = 0);
+ static GlobeGPS *instance();
+ void reload();
+ void repopulateLabels();
+ void centerOnDiveSite(uint32_t uuid);
+ void centerOnIndex(const QModelIndex& idx);
+ void centerOnCurrentDive();
+ bool eventFilter(QObject *, QEvent *);
+public
+slots:
+ void prepareForGetDiveCoordinates();
+ void endGetDiveCoordinates();
+};
+
+#endif // NO_MARBLE
+
+extern "C" double getDistance(int lat1, int lon1, int lat2, int lon2);
+
+#endif // GLOBE_H