diff options
-rw-r--r-- | core/divelist.c | 1 | ||||
-rw-r--r-- | desktop-widgets/locationinformation.cpp | 8 | ||||
-rw-r--r-- | desktop-widgets/locationinformation.h | 2 | ||||
-rw-r--r-- | desktop-widgets/mainwindow.cpp | 7 | ||||
-rw-r--r-- | desktop-widgets/mainwindow.h | 1 | ||||
-rw-r--r-- | desktop-widgets/tab-widgets/maintab.cpp | 9 |
6 files changed, 11 insertions, 17 deletions
diff --git a/core/divelist.c b/core/divelist.c index 0aa77ecac..d67f7935f 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -1677,7 +1677,6 @@ void clear_dive_file_data() delete_dive_site(get_dive_site(0)->uuid); clear_dive(&displayed_dive); - clear_dive_site(&displayed_dive_site); reset_min_datafile_version(); saved_git_id = ""; diff --git a/desktop-widgets/locationinformation.cpp b/desktop-widgets/locationinformation.cpp index c7d537374..3f87454da 100644 --- a/desktop-widgets/locationinformation.cpp +++ b/desktop-widgets/locationinformation.cpp @@ -200,7 +200,6 @@ void LocationInformationWidget::acceptChanges() LocationInformationModel::instance()->removeRow(get_divesite_idx(currentDs)); displayed_dive.dive_site_uuid = 0; } - copy_dive_site(currentDs, &displayed_dive_site); mark_divelist_changed(true); resetState(); } @@ -210,9 +209,10 @@ void LocationInformationWidget::rejectChanges() resetState(); } -void LocationInformationWidget::showEvent(QShowEvent *ev) +void LocationInformationWidget::initFields(dive_site *ds) { - if (displayed_dive_site.uuid) { + if (ds) { + copy_dive_site(ds, &displayed_dive_site); filter_model.set(displayed_dive_site.uuid, displayed_dive_site.latitude, displayed_dive_site.longitude); updateLabels(); enableLocationButtons(dive_site_has_gps_location(&displayed_dive_site)); @@ -221,11 +221,11 @@ void LocationInformationWidget::showEvent(QShowEvent *ev) if (m) m->invalidate(); } else { + clear_dive_site(&displayed_dive_site); filter_model.set(0, degrees_t{ 0 }, degrees_t{ 0 }); clearLabels(); } MapWidget::instance()->prepareForGetDiveCoordinates(displayed_dive_site.uuid); - QGroupBox::showEvent(ev); } void LocationInformationWidget::markChangedWidget(QWidget *w) diff --git a/desktop-widgets/locationinformation.h b/desktop-widgets/locationinformation.h index 868ea729e..402c434e1 100644 --- a/desktop-widgets/locationinformation.h +++ b/desktop-widgets/locationinformation.h @@ -14,9 +14,9 @@ Q_OBJECT public: LocationInformationWidget(QWidget *parent = 0); bool eventFilter(QObject*, QEvent*) override; + void initFields(dive_site *ds); protected: - void showEvent(QShowEvent *); void enableLocationButtons(bool enable); public slots: diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp index 2b4411387..34924e25a 100644 --- a/desktop-widgets/mainwindow.cpp +++ b/desktop-widgets/mainwindow.cpp @@ -173,7 +173,7 @@ MainWindow::MainWindow() : QMainWindow(), profLayout->addWidget(profileWidget); profileContainer->setLayout(profLayout); - LocationInformationWidget * diveSiteEdit = new LocationInformationWidget(); + diveSiteEdit = new LocationInformationWidget(this); connect(diveSiteEdit, &LocationInformationWidget::endEditDiveSite, this, &MainWindow::setDefaultState); connect(diveSiteEdit, SIGNAL(endEditDiveSite()), this, SLOT(refreshDisplay())); @@ -445,7 +445,9 @@ void MainWindow::setStateProperties(const QByteArray& state, const PropertyList& stateProperties[state] = PropertiesForQuadrant(tl, tr, bl, br); } -void MainWindow::on_actionDiveSiteEdit_triggered() { +void MainWindow::on_actionDiveSiteEdit_triggered() +{ + diveSiteEdit->initFields(get_dive_site_for_dive(&displayed_dive)); setApplicationState("EditDiveSite"); } @@ -957,7 +959,6 @@ void MainWindow::setupForAddAndPlan(const char *model) { // clean out the dive and give it an id and the correct dc model clear_dive(&displayed_dive); - clear_dive_site(&displayed_dive_site); displayed_dive.id = dive_getUniqID(); displayed_dive.when = QDateTime::currentMSecsSinceEpoch() / 1000L + gettimezoneoffset() + 3600; displayed_dive.dc.model = strdup(model); // don't translate! this is stored in the XML file diff --git a/desktop-widgets/mainwindow.h b/desktop-widgets/mainwindow.h index ae3b081a4..6833c5531 100644 --- a/desktop-widgets/mainwindow.h +++ b/desktop-widgets/mainwindow.h @@ -214,6 +214,7 @@ private: void enterState(CurrentState); bool filesAsArguments; UpdateManager *updateManager; + LocationInformationWidget *diveSiteEdit; bool plannerStateClean(); void setupForAddAndPlan(const char *model); diff --git a/desktop-widgets/tab-widgets/maintab.cpp b/desktop-widgets/tab-widgets/maintab.cpp index 179228ea0..322ec5943 100644 --- a/desktop-widgets/tab-widgets/maintab.cpp +++ b/desktop-widgets/tab-widgets/maintab.cpp @@ -419,11 +419,9 @@ void MainTab::updateDiveInfo(bool clear) if (ds) { ui.location->setCurrentDiveSiteUuid(ds->uuid); ui.locationTags->setText(constructLocationTags(ds, true)); - copy_dive_site(ds, &displayed_dive_site); } else { ui.location->clear(); ui.locationTags->clear(); - clear_dive_site(&displayed_dive_site); } // Subsurface always uses "local time" as in "whatever was the local time at the location" @@ -657,10 +655,8 @@ MainTab::EditMode MainTab::getEditMode() const void MainTab::refreshDisplayedDiveSite() { struct dive_site *ds = get_dive_site_for_dive(&displayed_dive); - if (ds) { - copy_dive_site(ds, &displayed_dive_site); + if (ds) ui.location->setCurrentDiveSiteUuid(ds->uuid); - } } // when this is called we already have updated the current_dive and know that it exists @@ -906,9 +902,6 @@ void MainTab::acceptChanges() // so let's make sure here that our data is consistent now that we have handled the // dive sites displayed_dive.dive_site_uuid = current_dive->dive_site_uuid; - struct dive_site *ds = get_dive_site_by_uuid(displayed_dive.dive_site_uuid); - if (ds) - copy_dive_site(ds, &displayed_dive_site); // each dive that was selected might have had the temperatures in its active divecomputer changed // so re-populate the temperatures - easiest way to do this is by calling fixup_dive |