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 */
|
/* divesite.c */
|
||||||
#include "divesite.h"
|
#include "divesite.h"
|
||||||
#include "dive.h"
|
#include "dive.h"
|
||||||
|
#include "divelist.h"
|
||||||
|
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
|
@ -276,9 +277,27 @@ void clear_dive_site(struct dive_site *ds)
|
||||||
free_taxonomy(&ds->taxonomy);
|
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)
|
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);
|
void clear_dive_site(struct dive_site *ds);
|
||||||
unsigned int get_distance(degrees_t lat1, degrees_t lon1, degrees_t lat2, degrees_t lon2);
|
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);
|
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"
|
#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) {
|
Q_FOREACH(const QModelIndex& idx, selection) {
|
||||||
selected_dive_sites[i] = (uint32_t) idx.data(LocationInformationModel::UUID_ROLE).toInt();
|
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);
|
free(selected_dive_sites);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue