summaryrefslogtreecommitdiffstats
path: root/qt-ui/globe.cpp
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-05-17 13:28:02 -0300
committerGravatar Tomaz Canabrava <tcanabrava@kde.org>2013-05-17 13:28:02 -0300
commit9038b3aa6e89a1015d8dd50d772c995b2997fd1a (patch)
treee466d93be42e038f2829ef20f4eb8402fb139590 /qt-ui/globe.cpp
parent4098922b553c8a412b457a3b6fabbbd936317a65 (diff)
downloadsubsurface-9038b3aa6e89a1015d8dd50d772c995b2997fd1a.tar.gz
Added real support for the marble widget
The marble widget now shows the dive locations and also will center on the dive that the user clicked in the dive list. Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Diffstat (limited to 'qt-ui/globe.cpp')
-rw-r--r--qt-ui/globe.cpp45
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);
+}