Dive list: remember selected dives

Don't delesect dives, when unregistering them from the backend.
If a previously selected dive is added, select it in the dive-list.
For this purpose introduce a SELECTED_ROLE to query the DiveTripModel
for selected dives.

Unfortunately, when adding multiple selected dives, current_dive_changed
is called for each of them, making this very slow. This will have
to be fixed in subsequent commits.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-08-01 10:47:09 +02:00 committed by Dirk Hohndel
parent 96d8727399
commit 0d98da5261
4 changed files with 29 additions and 12 deletions

View file

@ -1065,9 +1065,9 @@ struct dive *unregister_dive(int idx)
if (!dive)
return NULL; /* this should never happen */
remove_dive_from_trip(dive, false);
if (dive->selected)
deselect_dive(idx);
unregister_dive_from_table(&dive_table, idx);
if (dive->selected)
amount_selected--;
return dive;
}
@ -1075,7 +1075,12 @@ struct dive *unregister_dive(int idx)
* but doesn't deal with updating dive trips, etc */
void delete_single_dive(int idx)
{
struct dive *dive = unregister_dive(idx);
struct dive *dive = get_dive(idx);
if (!dive)
return; /* this should never happen */
if (dive->selected)
deselect_dive(idx);
dive = unregister_dive(idx);
free_dive(dive);
}