Undo: make adding of weights an undoable action

Introduce an AddWeight undo command. This is modelled after the
numerous dive-edit undo commands. The redo and undo actions are
connected to the WeightModel via two new signals, weightAdded
and weightRemoved.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-11-02 21:19:29 +01:00 committed by Dirk Hohndel
parent 76a5a38f5e
commit 147a36647c
8 changed files with 76 additions and 14 deletions

View file

@ -953,4 +953,36 @@ void ReplanDive::redo()
undo();
}
// ***** Add Weight *****
AddWeight::AddWeight(bool currentDiveOnly) :
EditDivesBase(currentDiveOnly)
{
//: remove the part in parentheses for %n = 1
setText(tr("Add weight (%n dive(s))", "", dives.size()));
}
bool AddWeight::workToBeDone()
{
return true;
}
void AddWeight::undo()
{
for (dive *d: dives) {
if (d->weightsystems.nr <= 0)
continue;
remove_weightsystem(d, d->weightsystems.nr - 1);
emit diveListNotifier.weightRemoved(d, d->weightsystems.nr);
}
}
void AddWeight::redo()
{
weightsystem_t ws { {0}, "" };
for (dive *d: dives) {
add_cloned_weightsystem(&d->weightsystems, ws);
emit diveListNotifier.weightAdded(d, d->weightsystems.nr - 1);
}
}
} // namespace Command