Undo: send dive-changed signal on dive site merging

Now that we have dive-changed signal, send it on merging
dive sites so that the notes tab can be updated accordingly.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-03-20 22:02:10 +01:00 committed by Dirk Hohndel
parent 6f574c53a3
commit 8a33022f39

View file

@ -311,25 +311,37 @@ void MergeDiveSites::redo()
// First, remove all dive sites // First, remove all dive sites
sitesToAdd = std::move(removeDiveSites(sitesToRemove)); sitesToAdd = std::move(removeDiveSites(sitesToRemove));
// Remember which dives changed so that we can send a single dives-edited signal
QVector<dive *> divesChanged;
// The dives of the above dive sites were reset to no dive sites. // The dives of the above dive sites were reset to no dive sites.
// Add them to the merged-into dive site. Thankfully, we remember // Add them to the merged-into dive site. Thankfully, we remember
// the dives in the sitesToAdd vector. // the dives in the sitesToAdd vector.
for (const OwningDiveSitePtr &site: sitesToAdd) { for (const OwningDiveSitePtr &site: sitesToAdd) {
for (int i = 0; i < site->dives.nr; ++i) for (int i = 0; i < site->dives.nr; ++i) {
add_dive_to_dive_site(site->dives.dives[i], ds); // TODO: send dive changed signal add_dive_to_dive_site(site->dives.dives[i], ds);
divesChanged.append(site->dives.dives[i]);
}
} }
emit diveListNotifier.divesEdited(divesChanged, DiveField::DIVESITE);
} }
void MergeDiveSites::undo() void MergeDiveSites::undo()
{ {
// Remember which dives changed so that we can send a single dives-edited signal
QVector<dive *> divesChanged;
// Before readding the dive sites, unregister the corresponding dives so that they can be // Before readding the dive sites, unregister the corresponding dives so that they can be
// readded to their old dive sites. // readded to their old dive sites.
for (const OwningDiveSitePtr &site: sitesToAdd) { for (const OwningDiveSitePtr &site: sitesToAdd) {
for (int i = 0; i < site->dives.nr; ++i) for (int i = 0; i < site->dives.nr; ++i) {
unregister_dive_from_dive_site(site->dives.dives[i]); unregister_dive_from_dive_site(site->dives.dives[i]);
divesChanged.append(site->dives.dives[i]);
}
} }
sitesToRemove = std::move(addDiveSites(sitesToAdd)); sitesToRemove = std::move(addDiveSites(sitesToAdd));
emit diveListNotifier.divesEdited(divesChanged, DiveField::DIVESITE);
} }
} // namespace Command } // namespace Command