mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Merge the dive sites selected.
Wee. :) Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
e36e4d1faa
commit
1ef20ee5d8
3 changed files with 22 additions and 3 deletions
21
divesite.c
21
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)
|
||||
|
|
|
@ -66,7 +66,7 @@ void copy_dive_site(struct dive_site *orig, struct dive_site *copy);
|
|||
void clear_dive_site(struct dive_site *ds);
|
||||
unsigned int get_distance(degrees_t lat1, degrees_t lon1, degrees_t lat2, degrees_t lon2);
|
||||
uint32_t find_or_create_dive_site_with_name(const char *name, timestamp_t divetime);
|
||||
void merge_dive_sites(uint32_t *uuids, int count);
|
||||
void merge_dive_sites(uint32_t ref, uint32_t *uuids, int count);
|
||||
|
||||
#define INVALID_DIVE_SITE_NAME "development use only - not a valid dive site name"
|
||||
|
||||
|
|
|
@ -70,7 +70,7 @@ void LocationInformationWidget::mergeSelectedDiveSites() {
|
|||
Q_FOREACH(const QModelIndex& idx, selection) {
|
||||
selected_dive_sites[i] = (uint32_t) idx.data(LocationInformationModel::UUID_ROLE).toInt();
|
||||
}
|
||||
merge_dive_sites(selected_dive_sites, i);
|
||||
merge_dive_sites(displayed_dive_site.uuid, selected_dive_sites, i);
|
||||
free(selected_dive_sites);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue