summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Robert C. Helling <helling@atdotde.de>2021-07-03 14:41:55 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-07-03 14:38:19 -0700
commit6b2e56e5131aa707216c4b0da5805199fcc0034d (patch)
treeffd55dc118ab337822ed78653122079619b62d9e
parent876a09753aa25400d795c97498e0e9bb50489fda (diff)
downloadsubsurface-6b2e56e5131aa707216c4b0da5805199fcc0034d.tar.gz
Handle dives with no samples
This occurs upon importing dives for example via CSV. Make sure the profile display is cleared when selecting such a dive rather than showing a different dive. Allow editing the profile for such a dive. Signed-off-by: Robert C. Helling <helling@atdotde.de>
-rw-r--r--desktop-widgets/mainwindow.cpp2
-rw-r--r--profile-widget/profilewidget2.cpp6
2 files changed, 5 insertions, 3 deletions
diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp
index fd4fe8f82..35140ffbf 100644
--- a/desktop-widgets/mainwindow.cpp
+++ b/desktop-widgets/mainwindow.cpp
@@ -1512,7 +1512,7 @@ void MainWindow::on_actionImportDiveSites_triggered()
void MainWindow::editCurrentDive()
{
// We only allow editing of the profile for manually added dives.
- if (!current_dive || !same_string(current_dive->dc.model, "manually added dive") || !userMayChangeAppState())
+ if (!current_dive || (!same_string(current_dive->dc.model, "manually added dive") && current_dive->dc.samples) || !userMayChangeAppState())
return;
// This shouldn't be possible, but let's make sure no weird "double editing" takes place.
diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp
index e64f07b22..f0c3f1d0a 100644
--- a/profile-widget/profilewidget2.cpp
+++ b/profile-widget/profilewidget2.cpp
@@ -528,8 +528,10 @@ void ProfileWidget2::plotDive(const struct dive *dIn, int dcIn, bool doClearPict
}
const struct divecomputer *currentdc = get_dive_dc_const(d, dc);
- if (!currentdc || !currentdc->samples)
+ if (!currentdc || !currentdc->samples) {
+ setEmptyState();
return;
+ }
// special handling when switching from empty state
animSpeed = instant || currentState == EMPTY || printMode ? 0 : qPrefDisplay::animation_speed();
@@ -1359,7 +1361,7 @@ void ProfileWidget2::contextMenuEvent(QContextMenuEvent *event)
changeMode->addAction(gettextFromC::tr(divemode_text_ui[PSCR]),
[this, seconds](){ addDivemodeSwitch(seconds, PSCR); });
- if (same_string(get_dive_dc_const(d, dc)->model, "manually added dive"))
+ if (same_string(get_dive_dc_const(d, dc)->model, "manually added dive") || !get_dive_dc_const(d, dc)->samples)
m.addAction(tr("Edit the profile"), this, &ProfileWidget2::editCurrentDive);
if (DiveEventItem *item = dynamic_cast<DiveEventItem *>(sceneItem)) {