diff options
Diffstat (limited to 'qt-ui/globe.cpp')
-rw-r--r-- | qt-ui/globe.cpp | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/qt-ui/globe.cpp b/qt-ui/globe.cpp index 770e51b02..77fd8b3b6 100644 --- a/qt-ui/globe.cpp +++ b/qt-ui/globe.cpp @@ -1,16 +1,27 @@ #include "globe.h" +#include "../dive.h" + +#include <QDebug> + #include <marble/AbstractFloatItem.h> +#include <marble/GeoDataPlacemark.h> +#include <marble/GeoDataDocument.h> +#include <marble/MarbleModel.h> +#include <marble/GeoDataTreeModel.h> using namespace Marble; -GlobeGPS::GlobeGPS(QWidget* parent) : MarbleWidget(parent) +GlobeGPS::GlobeGPS(QWidget* parent) : MarbleWidget(parent), loadedDives(0) { setMapThemeId("earth/bluemarble/bluemarble.dgml"); setProjection( Marble::Spherical ); // Enable the cloud cover and enable the country borders - setShowClouds( true ); - setShowBorders( true ); + setShowClouds( false ); + setShowBorders( false ); + setShowPlaces( false ); + setShowCrosshairs( false ); + setShowGrid( false ); // Hide the FloatItems: Compass and StatusBar setShowOverviewMap(false); @@ -23,3 +34,31 @@ GlobeGPS::GlobeGPS(QWidget* parent) : MarbleWidget(parent) } } } + +void GlobeGPS::reload() +{ + if (loadedDives){ + model()->treeModel()->removeDocument(loadedDives); + delete loadedDives; + } + + + loadedDives = new GeoDataDocument; + + int idx = 0; + struct dive *dive; + for_each_dive(idx, dive) { + if (dive_has_gps_location(dive)) { + GeoDataPlacemark *place = new GeoDataPlacemark( dive->location ); + place->setDescription(dive->notes); + place->setCoordinate(dive->longitude.udeg / 1000000.0,dive->latitude.udeg / 1000000.0 , 0, GeoDataCoordinates::Degree ); + loadedDives->append( place ); + } + } + model()->treeModel()->addDocument( loadedDives ); +} + +void GlobeGPS::centerOn(dive* dive) +{ + centerOn(dive->longitude.udeg / 1000000.0,dive->latitude.udeg / 1000000.0); +} |