mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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:
parent
76a5a38f5e
commit
147a36647c
8 changed files with 76 additions and 14 deletions
|
@ -268,6 +268,11 @@ void editProfile(dive *d)
|
|||
execute(new ReplanDive(d, true));
|
||||
}
|
||||
|
||||
int addWeight(bool currentDiveOnly)
|
||||
{
|
||||
return execute_edit(new AddWeight(currentDiveOnly));
|
||||
}
|
||||
|
||||
// Trip editing related commands
|
||||
void editTripLocation(dive_trip *trip, const QString &s)
|
||||
{
|
||||
|
|
|
@ -81,6 +81,7 @@ int editDiveMaster(const QStringList &newList, bool currentDiveOnly);
|
|||
void pasteDives(const dive *d, dive_components what);
|
||||
void replanDive(dive *d); // dive computer(s) and cylinder(s) will be reset!
|
||||
void editProfile(dive *d); // dive computer(s) and cylinder(s) will be reset!
|
||||
int addWeight(bool currentDiveOnly);
|
||||
|
||||
// 5) Trip editing commands
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -330,6 +330,15 @@ private:
|
|||
bool workToBeDone() override;
|
||||
};
|
||||
|
||||
class AddWeight : public EditDivesBase {
|
||||
public:
|
||||
AddWeight(bool currentDiveOnly);
|
||||
private:
|
||||
void undo() override;
|
||||
void redo() override;
|
||||
bool workToBeDone() override;
|
||||
};
|
||||
|
||||
} // namespace Command
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue