aboutsummaryrefslogtreecommitdiffstats
path: root/qt-ui
diff options
context:
space:
mode:
Diffstat (limited to 'qt-ui')
-rw-r--r--qt-ui/globe.cpp52
-rw-r--r--qt-ui/globe.h3
-rw-r--r--qt-ui/maintab.cpp3
3 files changed, 37 insertions, 21 deletions
diff --git a/qt-ui/globe.cpp b/qt-ui/globe.cpp
index 03dccfe14..1fcbdea1d 100644
--- a/qt-ui/globe.cpp
+++ b/qt-ui/globe.cpp
@@ -3,9 +3,10 @@
#include "kmessagewidget.h"
#include "mainwindow.h"
#include "ui_mainwindow.h"
-#include "../dive.h"
-#include "../divelist.h"
-#include "../helpers.h"
+#include "dive.h"
+#include "divelist.h"
+#include "helpers.h"
+#include "display.h"
#include <QDebug>
#include <QTimer>
@@ -203,15 +204,24 @@ void GlobeGPS::reload()
void GlobeGPS::centerOn(dive *dive)
{
// dive has changed, if we had the 'editingDive', hide it.
- if (messageWidget->isVisible() && (!dive || dive_has_gps_location(dive)))
+ if (messageWidget->isVisible()
+ && (!dive || dive_has_gps_location(dive) || amount_selected != 1 ))
messageWidget->hide();
+
+ editingDiveLocation = false;
if (!dive)
return;
+
qreal longitude = dive->longitude.udeg / 1000000.0;
qreal latitude = dive->latitude.udeg / 1000000.0;
- if (!longitude || !latitude || MainWindow::instance()->information()->isEditing()) {
- prepareForGetDiveCoordinates();
+ if ((!dive_has_gps_location(dive) || MainWindow::instance()->information()->isEditing())
+ && amount_selected == 1) {
+ prepareForGetDiveCoordinates(dive);
+ return;
+ }
+ if (!dive_has_gps_location(dive)) {
+ zoomOutForNoGPS();
return;
}
@@ -239,7 +249,21 @@ void GlobeGPS::fixZoom()
setZoom(currentZoomLevel, Marble::Linear);
}
-void GlobeGPS::prepareForGetDiveCoordinates()
+void GlobeGPS::zoomOutForNoGPS()
+{
+ // this is called if the dive has no GPS location.
+ // zoom out quite a bit to show the globe and remember that the next time
+ // we show a dive with GPS location we need to zoom in again
+ if(fixZoomTimer->isActive())
+ fixZoomTimer->stop();
+ setZoom(1200, Marble::Automatic);
+ if (!needResetZoom) {
+ needResetZoom = true;
+ currentZoomLevel = zoom();
+ }
+}
+
+void GlobeGPS::prepareForGetDiveCoordinates(struct dive *dive)
{
if (!messageWidget->isVisible()) {
messageWidget->setMessageType(KMessageWidget::Warning);
@@ -247,18 +271,8 @@ void GlobeGPS::prepareForGetDiveCoordinates()
messageWidget->setWordWrap(true);
messageWidget->animatedShow();
editingDiveLocation = true;
- // if the dive has no GPS location, zoom out quite a bit to show the globe
- // and remember that the next time we show a dive with GPS location we need
- // to zoom in again
- if (!dive_has_gps_location(current_dive)) {
- if(fixZoomTimer->isActive())
- fixZoomTimer->stop();
- setZoom(1200, Marble::Automatic);
- if (!needResetZoom) {
- needResetZoom = true;
- currentZoomLevel = zoom();
- }
- }
+ if (!dive_has_gps_location(dive))
+ zoomOutForNoGPS();
}
}
diff --git a/qt-ui/globe.h b/qt-ui/globe.h
index 51bda4878..91ea46c02 100644
--- a/qt-ui/globe.h
+++ b/qt-ui/globe.h
@@ -40,7 +40,8 @@ slots:
void changeDiveGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::Unit);
void mouseClicked(qreal lon, qreal lat, GeoDataCoordinates::Unit);
void fixZoom();
- void prepareForGetDiveCoordinates();
+ void zoomOutForNoGPS();
+ void prepareForGetDiveCoordinates(struct dive *dive);
};
#else // NO_MARBLE
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index d85d3bcdb..b4b711445 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -251,7 +251,8 @@ void MainTab::enableEdition(EditMode newEditMode)
return;
}
MainWindow::instance()->dive_list()->setEnabled(false);
- MainWindow::instance()->globe()->prepareForGetDiveCoordinates();
+ if (amount_selected == 1)
+ MainWindow::instance()->globe()->prepareForGetDiveCoordinates(current_dive);
// We may be editing one or more dives here. backup everything.
notesBackup.clear();
if (MainWindow::instance() && MainWindow::instance()->dive_list()->selectedTrips().count() == 1) {