diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/divelist.c | 40 | ||||
-rw-r--r-- | core/divelist.h | 3 | ||||
-rw-r--r-- | core/import-csv.c | 2 |
3 files changed, 28 insertions, 17 deletions
diff --git a/core/divelist.c b/core/divelist.c index 1906d002a..62af3120c 100644 --- a/core/divelist.c +++ b/core/divelist.c @@ -3,6 +3,8 @@ /* core logic for the dive list - * accessed through the following interfaces: * + * void process_loaded_dives(); + * void process_imported_dives(bool prefer_imported); * dive_trip_t *dive_trip_list; * unsigned int amount_selected; * void dump_selection(void) @@ -1259,17 +1261,32 @@ static void try_to_renumber(struct dive *last, int preexisting) } } -void process_dives(bool is_imported, bool prefer_imported) +void process_loaded_dives() +{ + int i; + struct dive *dive; + + /* Register dive computer nick names */ + for_each_dive(i, dive) + set_dc_nickname(dive); + + sort_table(&dive_table); +} + +void process_imported_dives(bool prefer_imported) { int i; int preexisting = dive_table.preexisting; - bool did_merge = false; struct dive *last; + /* If no dives were imported, don't bother doing anything */ + if (preexisting >= dive_table.nr) + return; + /* check if we need a nickname for the divecomputer for newly downloaded dives; * since we know they all came from the same divecomputer we just check for the * first one */ - if (preexisting < dive_table.nr && dive_table.dives[preexisting]->downloaded) + if (dive_table.dives[preexisting]->downloaded) set_dc_nickname(dive_table.dives[preexisting]); else /* they aren't downloaded, so record / check all new ones */ @@ -1315,24 +1332,17 @@ void process_dives(bool is_imported, bool prefer_imported) delete_single_dive(i + 1); // keep the id or the first dive for the merged dive merged->id = id; - - /* this means the table was changed */ - did_merge = true; } + /* make sure no dives are still marked as downloaded */ for (i = 1; i < dive_table.nr; i++) dive_table.dives[i]->downloaded = false; - if (is_imported) { - /* If there are dives in the table, are they numbered */ - if (!last || last->number) - try_to_renumber(last, preexisting); + /* If there are dives in the table, are they numbered */ + if (!last || last->number) + try_to_renumber(last, preexisting); - /* did we add dives or divecomputers to the dive table? */ - if (did_merge || preexisting < dive_table.nr) { - mark_divelist_changed(true); - } - } + mark_divelist_changed(true); } void set_dive_nr_for_current_dive() diff --git a/core/divelist.h b/core/divelist.h index 5467f10ae..937909d2b 100644 --- a/core/divelist.h +++ b/core/divelist.h @@ -18,7 +18,8 @@ extern void remove_autogen_trips(void); extern int init_decompression(struct deco_state *ds, struct dive *dive); /* divelist core logic functions */ -extern void process_dives(bool imported, bool prefer_imported); +extern void process_loaded_dives(); +extern void process_imported_dives(bool prefer_imported); extern char *get_dive_gas_string(struct dive *dive); struct dive **grow_dive_table(struct dive_table *table); diff --git a/core/import-csv.c b/core/import-csv.c index 898dfdbd0..8d6c229fd 100644 --- a/core/import-csv.c +++ b/core/import-csv.c @@ -135,7 +135,7 @@ static int parse_dan_format(const char *filename, char **params, int pnr) */ if (end_ptr) - process_dives(true, false); + process_imported_dives(false); mem_csv.buffer = malloc(mem.size + 1); mem_csv.size = mem.size; |