summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/command_divesite.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-06-23 09:22:26 +0200
committerGravatar bstoeger <32835590+bstoeger@users.noreply.github.com>2019-06-23 20:08:46 +0200
commit27944a52b1c2a1c68ccfe88c4a84d3f74fb8b512 (patch)
tree160fef9677e5cc2e907d4c32448553f74df4d2db /desktop-widgets/command_divesite.cpp
parentcbcddaa396f6668fef7750eb2721bc70ca11d0e4 (diff)
downloadsubsurface-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.cpp24
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