mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Undo: implement split-out of dive computer
Allow splitting out a dive computer into a distinct dive. This is realized by generating a base class from SplitDive. This turned out to be more cumbersome than expected: we don't know a-priori which of the split dives will come first. Since the undo-command saves the indices where the dives will be insert, these have to be calculated. This is an premature optimization, which makes more pain than necessary. Let's remove it and simply determine the insertion index when executing the command. Original code by Linus Torvalds <torvalds@linux-foundation.org>. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
8c9e5becb2
commit
145f70aab5
8 changed files with 169 additions and 38 deletions
|
@ -185,10 +185,9 @@ struct MergeTrips : public TripBase {
|
|||
MergeTrips(dive_trip *trip1, dive_trip *trip2);
|
||||
};
|
||||
|
||||
class SplitDives : public DiveListBase {
|
||||
public:
|
||||
// If time is < 0, split at first surface interval
|
||||
SplitDives(dive *d, duration_t time);
|
||||
class SplitDivesBase : public DiveListBase {
|
||||
protected:
|
||||
SplitDivesBase(dive *old, std::array<dive *, 2> newDives);
|
||||
private:
|
||||
void undoit() override;
|
||||
void redoit() override;
|
||||
|
@ -209,6 +208,18 @@ private:
|
|||
std::vector<dive *> divesToUnsplit;
|
||||
};
|
||||
|
||||
class SplitDives : public SplitDivesBase {
|
||||
public:
|
||||
// If time is < 0, split at first surface interval
|
||||
SplitDives(dive *d, duration_t time);
|
||||
};
|
||||
|
||||
class SplitDiveComputer : public SplitDivesBase {
|
||||
public:
|
||||
// If time is < 0, split at first surface interval
|
||||
SplitDiveComputer(dive *d, int dc_num);
|
||||
};
|
||||
|
||||
class MergeDives : public DiveListBase {
|
||||
public:
|
||||
MergeDives(const QVector<dive *> &dives);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue