mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-01 06:30:26 +00:00
4243fcb915
If a trip is selected (or for other reasons more than one dive), this would change the GPS coordinates of the whole selection which almost certainly isn't what the user wanted. Instead, only allow changes of the coordinates on the globe if exactly one dive is selected. [Dirk Hohndel: massively rewritten and extended - but I didn't want to simply "steal" the commit from Tomaz... This now maintains the "zoom out mode" for dives without GPS coordinates and deals with edits of multiple dives that are initiated the "normal way" by starting to edit other data as well.] Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
64 lines
1.4 KiB
C++
64 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 centerOn(struct dive *dive);
|
|
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;
|
|
|
|
public
|
|
slots:
|
|
void changeDiveGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::Unit);
|
|
void mouseClicked(qreal lon, qreal lat, GeoDataCoordinates::Unit);
|
|
void fixZoom();
|
|
void zoomOutForNoGPS();
|
|
void prepareForGetDiveCoordinates(struct dive *dive);
|
|
};
|
|
|
|
#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 centerOn(struct dive* dive);
|
|
bool eventFilter(QObject*, QEvent*);
|
|
public slots:
|
|
void prepareForGetDiveCoordinates();
|
|
};
|
|
|
|
#endif // NO_MARBLE
|
|
#endif // GLOBE_H
|