aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2015-01-19 17:32:17 +1200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-01-19 17:38:17 +1200
commitdf46b85ee1cc7a33fe35e69c19345a59c966fa41 (patch)
tree88951ed5fdb90ca23db73afe181a0279e79fbf2a
parent83018619d6f22efda3a98742598670d7bd76482b (diff)
downloadsubsurface-df46b85ee1cc7a33fe35e69c19345a59c966fa41.tar.gz
Don't just change the location when double clicking on the globe
Instead be consistent with other parts of the code and put us in editing mode so the user can accept / reject the change. See #800 Fixes #801 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/globe.cpp19
-rw-r--r--qt-ui/globe.h3
-rw-r--r--qt-ui/maintab.cpp3
-rw-r--r--qt-ui/mainwindow.cpp2
4 files changed, 14 insertions, 13 deletions
diff --git a/qt-ui/globe.cpp b/qt-ui/globe.cpp
index c2bbeb415..d8beff91d 100644
--- a/qt-ui/globe.cpp
+++ b/qt-ui/globe.cpp
@@ -307,21 +307,14 @@ void GlobeGPS::changeDiveGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::U
lon = lon * 180 / M_PI;
lat = lat * 180 / M_PI;
}
-
- // right now we try to only ever do this with one dive selected,
- // but we keep the code here that changes the coordinates for each selected dive
- int i;
- struct dive *dive;
- for_each_dive (i, dive) {
- if (!dive->selected)
- continue;
- dive->latitude.udeg = lrint(lat * 1000000.0);
- dive->longitude.udeg = lrint(lon * 1000000.0);
- }
centerOn(lon, lat, true);
+
+ // change the location of the displayed_dive and put the UI in edit mode
+ displayed_dive.latitude.udeg = lrint(lat * 1000000.0);
+ displayed_dive.longitude.udeg = lrint(lon * 1000000.0);
+ emit(coordinatesChanged());
+ repopulateLabels();
editingDiveLocation = false;
- mark_divelist_changed(true);
- MainWindow::instance()->refreshDisplay();
}
void GlobeGPS::mousePressEvent(QMouseEvent *event)
diff --git a/qt-ui/globe.h b/qt-ui/globe.h
index 8124a4d57..b6a33bbbe 100644
--- a/qt-ui/globe.h
+++ b/qt-ui/globe.h
@@ -39,6 +39,9 @@ private:
bool editingDiveLocation;
bool doubleClick;
+signals:
+ void coordinatesChanged(void);
+
public
slots:
void changeDiveGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::Unit);
diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 445ab2b5a..be55f6f29 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -1246,6 +1246,9 @@ void MainTab::updateCoordinatesText(qreal lat, qreal lon)
void MainTab::updateGpsCoordinates()
{
+ if (editMode == NONE)
+ enableEdition();
+
ui.coordinates->setText(printGPSCoords(displayed_dive.latitude.udeg, displayed_dive.longitude.udeg));
ui.coordinates->setModified(displayed_dive.latitude.udeg || displayed_dive.longitude.udeg);
}
diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp
index 8835bb8e3..5d5a442f4 100644
--- a/qt-ui/mainwindow.cpp
+++ b/qt-ui/mainwindow.cpp
@@ -96,6 +96,8 @@ MainWindow::MainWindow() : QMainWindow(),
#ifdef NO_MARBLE
ui.globePane->hide();
ui.menuView->removeAction(ui.actionViewGlobe);
+#else
+ connect(ui.globe, SIGNAL(coordinatesChanged()), ui.InfoWidget, SLOT(updateGpsCoordinates()));
#endif
#ifdef NO_USERMANUAL
ui.menuHelp->removeAction(ui.actionUserManual);