subsurface/qt-ui/globe.h
Dirk Hohndel b42df1dab6 Globe: do a better job detecting double clicks and setting GPS coordinates
For some reasons Marble appears to sometimes not detect double clicks and
call the correct callback. With this commit we manually intercept the
double clocks and route them to the right function.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
2014-06-11 09:31:01 -07:00

66 lines
1.4 KiB
C++

#ifndef GLOBE_H
#define GLOBE_H
#ifndef NO_MARBLE
#include <marble/MarbleWidget.h>
#include <marble/GeoDataCoordinates.h>
#include <marble/GeoDataDocument.h>
#include <QHash>
class KMessageWidget;
using namespace Marble;
struct dive;
class GlobeGPS : public MarbleWidget {
Q_OBJECT
public:
using MarbleWidget::centerOn;
GlobeGPS(QWidget *parent);
void reload();
void repopulateLabels();
void centerOnCurrentDive();
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;
public
slots:
void changeDiveGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::Unit);
void mouseClicked(qreal lon, qreal lat, GeoDataCoordinates::Unit);
void fixZoom();
void zoomOutForNoGPS();
void prepareForGetDiveCoordinates();
};
#else // NO_MARBLE
/* Dummy widget for when we don't have MarbleWidget */
#include <QLabel>
class GlobeGPS : public QLabel {
Q_OBJECT
public:
GlobeGPS(QWidget *parent);
void reload();
void repopulateLabels();
void centerOnCurrentDive();
bool eventFilter(QObject *, QEvent *);
public
slots:
void prepareForGetDiveCoordinates();
};
#endif // NO_MARBLE
#endif // GLOBE_H