diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-06-23 09:22:26 +0200 |
---|---|---|
committer | bstoeger <32835590+bstoeger@users.noreply.github.com> | 2019-06-23 20:08:46 +0200 |
commit | 27944a52b1c2a1c68ccfe88c4a84d3f74fb8b512 (patch) | |
tree | 160fef9677e5cc2e907d4c32448553f74df4d2db /desktop-widgets/command_divesite.cpp | |
parent | cbcddaa396f6668fef7750eb2721bc70ca11d0e4 (diff) | |
download | subsurface-27944a52b1c2a1c68ccfe88c4a84d3f74fb8b512.tar.gz |
Undo: don't send signals batched by trip
Since the default view is batched by trips, signals were sent trip-wise.
This seemed like a good idea at first, but when more and more parts used
these signals, it became a burden. Therefore push the batching to the
part of the code where it is needed: the trip view.
The divesAdded and divesDeleted are not yet converted, because these
are combined with trip addition/deletion. This should also be detangled,
but not now.
Since the dive-lists were sorted in the processByTrip function, the
dive-list model now does its own sorting. This will have to be
audited.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/command_divesite.cpp')
-rw-r--r-- | desktop-widgets/command_divesite.cpp | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/desktop-widgets/command_divesite.cpp b/desktop-widgets/command_divesite.cpp index 386159a7a..3ef4231f8 100644 --- a/desktop-widgets/command_divesite.cpp +++ b/desktop-widgets/command_divesite.cpp @@ -18,7 +18,7 @@ namespace Command { static std::vector<dive_site *> addDiveSites(std::vector<OwningDiveSitePtr> &sites) { std::vector<dive_site *> res; - std::vector<dive *> changedDives; + QVector<dive *> changedDives; res.reserve(sites.size()); for (OwningDiveSitePtr &ds: sites) { @@ -36,9 +36,7 @@ static std::vector<dive_site *> addDiveSites(std::vector<OwningDiveSitePtr> &sit emit diveListNotifier.diveSiteAdded(res.back(), idx); // Inform frontend of new dive site. } - processByTrip(changedDives, [&](dive_trip *trip, const QVector<dive *> &divesInTrip) { - emit diveListNotifier.divesChanged(trip, divesInTrip, DiveField::DIVESITE); - }); + emit diveListNotifier.divesChanged(changedDives, DiveField::DIVESITE); // Clear vector of unused owning pointers sites.clear(); @@ -52,7 +50,7 @@ static std::vector<dive_site *> addDiveSites(std::vector<OwningDiveSitePtr> &sit static std::vector<OwningDiveSitePtr> removeDiveSites(std::vector<dive_site *> &sites) { std::vector<OwningDiveSitePtr> res; - std::vector<dive *> changedDives; + QVector<dive *> changedDives; res.reserve(sites.size()); for (dive_site *ds: sites) { @@ -69,9 +67,7 @@ static std::vector<OwningDiveSitePtr> removeDiveSites(std::vector<dive_site *> & emit diveListNotifier.diveSiteDeleted(ds, idx); // Inform frontend of removed dive site. } - processByTrip(changedDives, [&](dive_trip *trip, const QVector<dive *> &divesInTrip) { - emit diveListNotifier.divesChanged(trip, divesInTrip, DiveField::DIVESITE); - }); + emit diveListNotifier.divesChanged(changedDives, DiveField::DIVESITE); sites.clear(); @@ -363,7 +359,7 @@ void MergeDiveSites::redo() sitesToAdd = std::move(removeDiveSites(sitesToRemove)); // Remember which dives changed so that we can send a single dives-edited signal - std::vector<dive *> divesChanged; + QVector<dive *> divesChanged; // The dives of the above dive sites were reset to no dive sites. // Add them to the merged-into dive site. Thankfully, we remember @@ -374,15 +370,13 @@ void MergeDiveSites::redo() divesChanged.push_back(site->dives.dives[i]); } } - processByTrip(divesChanged, [&](dive_trip *trip, const QVector<dive *> &divesInTrip) { - emit diveListNotifier.divesChanged(trip, divesInTrip, DiveField::DIVESITE); - }); + emit diveListNotifier.divesChanged(divesChanged, DiveField::DIVESITE); } void MergeDiveSites::undo() { // Remember which dives changed so that we can send a single dives-edited signal - std::vector<dive *> divesChanged; + QVector<dive *> divesChanged; // Before readding the dive sites, unregister the corresponding dives so that they can be // readded to their old dive sites. @@ -395,9 +389,7 @@ void MergeDiveSites::undo() sitesToRemove = std::move(addDiveSites(sitesToAdd)); - processByTrip(divesChanged, [&](dive_trip *trip, const QVector<dive *> &divesInTrip) { - emit diveListNotifier.divesChanged(trip, divesInTrip, DiveField::DIVESITE); - }); + emit diveListNotifier.divesChanged(divesChanged, DiveField::DIVESITE); } } // namespace Command |