diff options
Diffstat (limited to 'desktop-widgets/command_divelist.cpp')
-rw-r--r-- | desktop-widgets/command_divelist.cpp | 56 |
1 files changed, 16 insertions, 40 deletions
diff --git a/desktop-widgets/command_divelist.cpp b/desktop-widgets/command_divelist.cpp index 26708e07d..5a318e8a3 100644 --- a/desktop-widgets/command_divelist.cpp +++ b/desktop-widgets/command_divelist.cpp @@ -21,17 +21,10 @@ namespace Command { // set and that the trips are added before they are used! DiveToAdd DiveListBase::removeDive(struct dive *d, std::vector<OwningTripPtr> &tripsToAdd) { - // If the dive to be removed is selected, we will inform the frontend - // later via a signal that the dive changed. - if (d->selected) - selectionChanged = true; - // If the dive was the current dive, reset the current dive. The calling // command is responsible of finding a new dive. - if (d == current_dive) { - selectionChanged = true; // Should have been set above, as current dive is always selected. + if (d == current_dive) current_dive = nullptr; - } // remove dive from trip and site - if this is the last dive in the trip // remove the whole trip. @@ -81,11 +74,6 @@ dive *DiveListBase::addDive(DiveToAdd &d) add_to_dive_table(&dive_table, idx, res); // Return ownership to backend invalidate_dive_cache(res); // Ensure that dive is written in git_save() - // If the dive to be removed is selected, we will inform the frontend - // later via a signal that the dive changed. - if (res->selected) - selectionChanged = true; - return res; } @@ -363,26 +351,14 @@ static void moveDivesBetweenTrips(DivesToTrip &dives) void DiveListBase::initWork() { - selectionChanged = false; } void DiveListBase::finishWork() { - if (selectionChanged) // If the selection changed -> tell the frontend - emit diveListNotifier.selectionChanged(); for (dive_site *ds: sitesCountChanged) emit diveListNotifier.diveSiteDiveCountChanged(ds); } -// Rese the selection to the dives of the "selection" vector and send the appropriate signals. -// Set the current dive to "currentDive". "currentDive" must be an element of "selection" (or -// null if "seletion" is empty). -void DiveListBase::restoreSelection(const std::vector<dive *> &selection, dive *currentDive) -{ - // If anything changed (selection or current dive), send a final signal. - selectionChanged |= setSelection(selection, currentDive); -} - void DiveListBase::undo() { auto marker = diveListNotifier.enterCommand(); @@ -452,7 +428,7 @@ void AddDive::redoit() sort_trip_table(&trip_table); // Though unlikely, adding a dive may reorder trips // Select the newly added dive - restoreSelection(divesAndSitesToRemove.dives, divesAndSitesToRemove.dives[0]); + setSelection(divesAndSitesToRemove.dives, divesAndSitesToRemove.dives[0]); // Exit from edit mode, but don't recalculate dive list // TODO: Remove edit mode @@ -466,7 +442,7 @@ void AddDive::undoit() sort_trip_table(&trip_table); // Though unlikely, removing a dive may reorder trips // ...and restore the selection - restoreSelection(selection, currentDive); + setSelection(selection, currentDive); // Exit from edit mode, but don't recalculate dive list // TODO: Remove edit mode @@ -529,7 +505,7 @@ void ImportDives::redoit() divesToAdd = removeDives(divesAndSitesToRemove); // Select the newly added dives - restoreSelection(divesAndSitesToRemoveNew.dives, divesAndSitesToRemoveNew.dives.back()); + setSelection(divesAndSitesToRemoveNew.dives, divesAndSitesToRemoveNew.dives.back()); // Remember dives and sites to remove divesAndSitesToRemove = std::move(divesAndSitesToRemoveNew); @@ -547,7 +523,7 @@ void ImportDives::undoit() divesAndSitesToRemove = std::move(divesAndSitesToRemoveNew); // ...and restore the selection - restoreSelection(selection, currentDive); + setSelection(selection, currentDive); } DeleteDive::DeleteDive(const QVector<struct dive*> &divesToDeleteIn) @@ -568,7 +544,7 @@ void DeleteDive::undoit() // Select all re-added dives and make the first one current dive *currentDive = !divesToDelete.dives.empty() ? divesToDelete.dives[0] : nullptr; - restoreSelection(divesToDelete.dives, currentDive); + setSelection(divesToDelete.dives, currentDive); } void DeleteDive::redoit() @@ -583,9 +559,9 @@ void DeleteDive::redoit() newCurrent = find_next_visible_dive(when); } if (newCurrent) - restoreSelection(std::vector<dive *>{ newCurrent }, newCurrent); + setSelection(std::vector<dive *>{ newCurrent }, newCurrent); else - restoreSelection(std::vector<dive *>(), nullptr); + setSelection(std::vector<dive *>(), nullptr); } @@ -615,7 +591,7 @@ void ShiftTime::redoit() emit diveListNotifier.divesChanged(diveList, DiveField::DATETIME); // Select the changed dives - restoreSelection(diveList.toStdVector(), diveList[0]); + setSelection(diveList.toStdVector(), diveList[0]); // Negate the time-shift so that the next call does the reverse timeChanged = -timeChanged; @@ -647,7 +623,7 @@ void RenumberDives::undoit() dives.reserve(divesToRenumber.size()); for (const QPair<dive *, int> &item: divesToRenumber) dives.push_back(item.first); - restoreSelection(dives, dives[0]); + setSelection(dives, dives[0]); } bool RenumberDives::workToBeDone() @@ -676,7 +652,7 @@ void TripBase::redoit() dives.reserve(divesToMove.divesToMove.size()); for (const DiveToTrip &item: divesToMove.divesToMove) dives.push_back(item.dive); - restoreSelection(dives, dives[0]); + setSelection(dives, dives[0]); } void TripBase::undoit() @@ -799,7 +775,7 @@ void SplitDivesBase::redoit() unsplitDive = removeDives(diveToSplit); // Select split dives and make first dive current - restoreSelection(divesToUnsplit.dives, divesToUnsplit.dives[0]); + setSelection(divesToUnsplit.dives, divesToUnsplit.dives[0]); } void SplitDivesBase::undoit() @@ -809,7 +785,7 @@ void SplitDivesBase::undoit() splitDives = removeDives(divesToUnsplit); // Select unsplit dive and make it current - restoreSelection(diveToSplit.dives, diveToSplit.dives[0] ); + setSelection(diveToSplit.dives, diveToSplit.dives[0] ); } static std::array<dive *, 2> doSplitDives(const dive *d, duration_t time) @@ -883,7 +859,7 @@ void DiveComputerBase::redoit() diveToRemove = std::move(addedDive); // Select added dive and make it current - restoreSelection(diveToRemove.dives, diveToRemove.dives[0]); + setSelection(diveToRemove.dives, diveToRemove.dives[0]); // Update the profile to show the first dive computer dc_number = dc_nr_after; @@ -1006,7 +982,7 @@ void MergeDives::redoit() unmergedDives = removeDives(divesToMerge); // Select merged dive and make it current - restoreSelection(diveToUnmerge.dives, diveToUnmerge.dives[0]); + setSelection(diveToUnmerge.dives, diveToUnmerge.dives[0]); } void MergeDives::undoit() @@ -1016,7 +992,7 @@ void MergeDives::undoit() renumberDives(divesToRenumber); // Select unmerged dives and make first one current - restoreSelection(divesToMerge.dives, divesToMerge.dives[0]); + setSelection(divesToMerge.dives, divesToMerge.dives[0]); } } // namespace Command |