summaryrefslogtreecommitdiffstats
path: root/desktop-widgets
diff options
context:
space:
mode:
Diffstat (limited to 'desktop-widgets')
-rw-r--r--desktop-widgets/locationinformation.cpp8
-rw-r--r--desktop-widgets/locationinformation.h2
-rw-r--r--desktop-widgets/mainwindow.cpp7
-rw-r--r--desktop-widgets/mainwindow.h1
-rw-r--r--desktop-widgets/tab-widgets/maintab.cpp9
5 files changed, 11 insertions, 16 deletions
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