summaryrefslogtreecommitdiffstats
path: root/divesite.c
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2015-08-31 21:45:31 -0300
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-08-31 18:43:43 -0700
commit1ef20ee5d8b13a5413ec5aabf16aaa1f1bdd65fd (patch)
treea3606c0fec918f5e1c51bf4c2f0b7ba2c3f0dfe0 /divesite.c
parente36e4d1faa95439a1806935de6dcbd04d2283d20 (diff)
downloadsubsurface-1ef20ee5d8b13a5413ec5aabf16aaa1f1bdd65fd.tar.gz
Merge the dive sites selected.
Wee. :) Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'divesite.c')
-rw-r--r--divesite.c21
1 files changed, 20 insertions, 1 deletions
diff --git a/divesite.c b/divesite.c
index 2b5c48849..96c41d1bf 100644
--- a/divesite.c
+++ b/divesite.c
@@ -1,6 +1,7 @@
/* divesite.c */
#include "divesite.h"
#include "dive.h"
+#include "divelist.h"
#include <math.h>
@@ -276,9 +277,27 @@ void clear_dive_site(struct dive_site *ds)
free_taxonomy(&ds->taxonomy);
}
-void merge_dive_sites(uint32_t* uuids, int count)
+void merge_dive_sites(uint32_t ref, uint32_t* uuids, int count)
{
+ int curr_dive, i;
+ struct dive *d;
+ for(i = 0; i < count; i++){
+ if (uuids[i] == ref)
+ continue;
+
+ for_each_dive(curr_dive, d) {
+ if (d->dive_site_uuid != uuids[i] )
+ continue;
+ d->dive_site_uuid = ref;
+ }
+ }
+ for(int i = 0; i < count; i++) {
+ if (uuids[i] == ref)
+ continue;
+ delete_dive_site(uuids[i]);
+ }
+ mark_divelist_changed(true);
}
uint32_t find_or_create_dive_site_with_name(const char *name, timestamp_t divetime)