diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-12-03 21:25:20 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-12-03 18:48:17 -0800 |
commit | 9190c97a3c2c9c73f0a351e7478077b057993955 (patch) | |
tree | 44af7c497c39e09f6402ebdc4926b1698a07fd22 /qt-ui | |
parent | d128b74a8a05fda4cd43583ecc2323fd2d38f032 (diff) | |
download | subsurface-9190c97a3c2c9c73f0a351e7478077b057993955.tar.gz |
Attempt to fix the 'click goes to 0,0' thing on the globe.
This patch attempts to fix the 'click goes to 0,0' bug on the
globe. it moves a bit of code around and I particulary don't
like the way that we are dealing with 'EditMode', I think I'll
refactor that for 4.1. We are alredy dealing with a bunch
of states, maybe a State Machine will help on removing code-complexity.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/globe.cpp | 15 | ||||
-rw-r--r-- | qt-ui/maintab.cpp | 11 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 5 |
3 files changed, 15 insertions, 16 deletions
diff --git a/qt-ui/globe.cpp b/qt-ui/globe.cpp index 10ce7058b..e0f94bbd5 100644 --- a/qt-ui/globe.cpp +++ b/qt-ui/globe.cpp @@ -197,23 +197,21 @@ void GlobeGPS::reload() { editingDiveLocation = false; if (messageWidget->isVisible()) - messageWidget->animatedHide(); + messageWidget->hide(); repopulateLabels(); } void GlobeGPS::centerOn(dive* dive) { // dive has changed, if we had the 'editingDive', hide it. - if (messageWidget->isVisible() && (!dive || dive_has_gps_location(dive))) { - messageWidget->animatedHide(); - } + if (messageWidget->isVisible() && (!dive || dive_has_gps_location(dive))) + messageWidget->hide(); if (!dive) return; - qreal longitude = dive->longitude.udeg / 1000000.0; qreal latitude = dive->latitude.udeg / 1000000.0; - if (!longitude || !latitude) { + if (!longitude || !latitude || mainWindow()->information()->isEditing()) { prepareForGetDiveCoordinates(); return; } @@ -241,7 +239,7 @@ void GlobeGPS::prepareForGetDiveCoordinates() { if (!messageWidget->isVisible()) { messageWidget->setMessageType(KMessageWidget::Warning); - messageWidget->setText(QObject::tr("No location data - move the map and double-click to set the dive location")); + messageWidget->setText(QObject::tr("Move the map and double-click to set the dive location")); messageWidget->setWordWrap(true); messageWidget->animatedShow(); editingDiveLocation = true; @@ -250,6 +248,8 @@ void GlobeGPS::prepareForGetDiveCoordinates() void GlobeGPS::changeDiveGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::Unit unit) { + messageWidget->hide(); + if (mainWindow()->dive_list()->selectionModel()->selection().isEmpty()) return; @@ -271,7 +271,6 @@ void GlobeGPS::changeDiveGeoPosition(qreal lon, qreal lat, GeoDataCoordinates::U centerOn(lon, lat, true); editingDiveLocation = false; mark_divelist_changed(TRUE); - messageWidget->animatedHide(); mainWindow()->refreshDisplay(); } diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp index c91870f46..6fc72957b 100644 --- a/qt-ui/maintab.cpp +++ b/qt-ui/maintab.cpp @@ -602,11 +602,6 @@ void MainTab::acceptChanges() else if (selected_dive == dive_table.nr - 1 && get_dive(dive_table.nr - 2)->number) current_dive->number = get_dive(dive_table.nr - 2)->number + 1; DivePlannerPointsModel::instance()->cancelPlan(); - // now make sure the selection logic is in a sane state - // it's ok to hold on to the dive pointer for this short stretch of code - // unselectDives() doesn't mess with the dive_table at all - mainWindow()->dive_list()->unselectDives(); - mainWindow()->dive_list()->selectDive(selected_dive, true, true); mainWindow()->showProfile(); mark_divelist_changed(TRUE); DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::NOTHING); @@ -619,7 +614,7 @@ void MainTab::acceptChanges() } resetPallete(); - if(editMode == ADD){ + if(editMode == ADD || editMode == MANUALLY_ADDED_DIVE){ mainWindow()->dive_list()->unselectDives(); struct dive *d = get_dive(dive_table.nr -1 ); // HACK. this shouldn't be here. but apparently it's @@ -630,14 +625,16 @@ void MainTab::acceptChanges() for_each_dive(i,d){ if (d->selected) break; } + editMode = NONE; + mainWindow()->refreshDisplay(); mainWindow()->dive_list()->selectDive( i, true ); }else{ + editMode = NONE; mainWindow()->dive_list()->rememberSelection(); sort_table(&dive_table); mainWindow()->refreshDisplay(); mainWindow()->dive_list()->restoreSelection(); } - editMode = NONE; } void MainTab::resetPallete() diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index 101219725..ee77fc72d 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -295,6 +295,9 @@ void MainWindow::on_actionAddDive_triggered() struct dive *dive = alloc_dive(); dive->when = QDateTime::currentMSecsSinceEpoch() / 1000L + gettimezoneoffset(); dive->dc.model = "manually added dive"; // don't translate! this is stored in the XML file + + dive->latitude.udeg = 0; + dive->longitude.udeg = 0; record_dive(dive); // this isn't in the UI yet, so let's call the C helper function - we'll fix this up when // accepting the dive @@ -306,7 +309,7 @@ void MainWindow::on_actionAddDive_triggered() ui.infoPane->setCurrentIndex(MAINTAB); DivePlannerPointsModel::instance()->clear(); DivePlannerPointsModel::instance()->createSimpleDive(); - refreshDisplay(); + ui.ListWidget->reload(DiveTripModel::CURRENT); } void MainWindow::on_actionRenumber_triggered() |