Import: add merge_all_trips parameter to process_imported_dives()

When importing log-files we generally want to merge trips. But
when downloading and the user chose "generate new trip", that
new trip should not be merged into existing trips.

Therefore, add a "merge_all_trips" parameter to process_imported_dives().
If false only autogenerated trips [via autogroup] will be merged.
In the future we might want to let the user choose if trips
should be merged when importing log-files.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-12-23 16:30:19 +01:00 committed by Dirk Hohndel
parent 1593f2ebad
commit 0dfc59f38c
10 changed files with 22 additions and 14 deletions

View file

@ -1655,11 +1655,16 @@ static bool add_trip_to_table(struct dive_trip *trip, struct dive_table *dives_f
* If downloaded is true, only the divecomputer of the first dive
* will be considered, as it is assumed that all dives come from
* the same computer.
* If merge_all_trips is true, all trips are merged. This is used
* when merging log files. If it is false, only autogenerated trips
* are merged. This is used for download-from-dc. There, if the user
* explicitly asked for a new trip, we don't want to merge into old
* trips.
* Note: the dives in import_table and the trips in import_trip_table
* are consumed. On return both tables have size 0.
*/
void process_imported_dives(struct dive_table *import_table, struct trip_table *import_trip_table,
bool prefer_imported, bool downloaded)
bool prefer_imported, bool downloaded, bool merge_all_trips)
{
int i, j;
struct dive_trip *trip_import, *trip_old;
@ -1695,6 +1700,8 @@ void process_imported_dives(struct dive_table *import_table, struct trip_table *
*/
for (i = 0; i < import_trip_table->nr; i++) {
trip_import = import_trip_table->trips[i];
if (!merge_all_trips && !trip_import->autogen)
continue;
for (j = 0; j < trip_table.nr; j++) {
trip_old = trip_table.trips[j];
if (trips_overlap(trip_import, trip_old)) {

View file

@ -18,7 +18,8 @@ extern int init_decompression(struct deco_state *ds, struct dive *dive);
/* divelist core logic functions */
extern void process_loaded_dives();
extern void process_imported_dives(struct dive_table *import_table, struct trip_table *import_trip_table, bool prefer_imported, bool downloaded);
extern void process_imported_dives(struct dive_table *import_table, struct trip_table *import_trip_table,
bool prefer_imported, bool downloaded, bool merge_all_trips);
extern char *get_dive_gas_string(const struct dive *dive);
extern struct dive **grow_dive_table(struct dive_table *table);