mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
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>
This commit is contained in:
parent
cbcddaa396
commit
27944a52b1
18 changed files with 193 additions and 185 deletions
|
@ -46,8 +46,8 @@ bool setSelection(const std::vector<dive *> &selection, dive *currentDive)
|
|||
{
|
||||
// To do so, generate vectors of dives to be selected and deselected.
|
||||
// We send signals batched by trip, so keep track of trip/dive pairs.
|
||||
std::vector<std::pair<dive_trip *, dive *>> divesToSelect;
|
||||
std::vector<std::pair<dive_trip *, dive *>> divesToDeselect;
|
||||
QVector<dive *> divesToSelect;
|
||||
QVector<dive *> divesToDeselect;
|
||||
|
||||
// TODO: We might want to keep track of selected dives in a more efficient way!
|
||||
int i;
|
||||
|
@ -73,20 +73,16 @@ bool setSelection(const std::vector<dive *> &selection, dive *currentDive)
|
|||
if (newState && !d->selected) {
|
||||
d->selected = true;
|
||||
++amount_selected;
|
||||
divesToSelect.push_back({ d->divetrip, d });
|
||||
divesToSelect.push_back(d);
|
||||
} else if (!newState && d->selected) {
|
||||
d->selected = false;
|
||||
divesToDeselect.push_back({ d->divetrip, d });
|
||||
divesToDeselect.push_back(d);
|
||||
}
|
||||
}
|
||||
|
||||
// Send the select and deselect signals
|
||||
processByTrip(divesToSelect, [&](dive_trip *trip, const QVector<dive *> &divesInTrip) {
|
||||
emit diveListNotifier.divesSelected(trip, divesInTrip);
|
||||
});
|
||||
processByTrip(divesToDeselect, [&](dive_trip *trip, const QVector<dive *> &divesInTrip) {
|
||||
emit diveListNotifier.divesDeselected(trip, divesInTrip);
|
||||
});
|
||||
emit diveListNotifier.divesSelected(divesToSelect);
|
||||
emit diveListNotifier.divesDeselected(divesToDeselect);
|
||||
|
||||
bool currentDiveChanged = false;
|
||||
if (!currentDive) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue