Undo: remove ADD mode from main tab

Instead of letting the user edit the fields before adding a dive,
simply add an empty dive. Thus, the ADD mode of the main tab can
be removed.

Constructing a new dive with default-depth and making sure that
the dive is displayed correctly is very subtle. This all needs
to be detangled in due course.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-03-28 17:23:35 +01:00 committed by Dirk Hohndel
parent 8287d86d2b
commit 4a3ffeba05
8 changed files with 98 additions and 174 deletions

View file

@ -359,22 +359,14 @@ void DiveListBase::redo()
finishWork();
}
AddDive::AddDive(dive *d, const QString &newDS, bool autogroup, bool newNumber)
AddDive::AddDive(dive *d, bool autogroup, bool newNumber)
{
setText(tr("add dive"));
// By convention, d is "displayed dive" and can be overwritten.
// By convention, d is a pointer to "displayed dive" or a temporary variable and can be overwritten.
d->maxdepth.mm = 0;
d->dc.maxdepth.mm = 0;
fixup_dive(d);
// Create new dive site if requested.
if (!newDS.isEmpty()) {
struct dive_site *ds = alloc_dive_site();
ds->name = copy_qstring(newDS);
d->dive_site = ds;
divesToAdd.sites.emplace_back(ds);
}
// Get an owning pointer to a copied or moved dive
// Note: if move is true, this destroys the old dive!
OwningDivePtr divePtr(clone_dive(d));