diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/divesite-helper.cpp | 10 | ||||
-rw-r--r-- | core/divesite.c | 22 | ||||
-rw-r--r-- | core/divesite.h | 2 | ||||
-rw-r--r-- | core/taxonomy.c | 22 | ||||
-rw-r--r-- | core/taxonomy.h | 1 |
5 files changed, 30 insertions, 27 deletions
diff --git a/core/divesite-helper.cpp b/core/divesite-helper.cpp index 55ebb3aba..bed0297ce 100644 --- a/core/divesite-helper.cpp +++ b/core/divesite-helper.cpp @@ -3,11 +3,11 @@ #include "pref.h" #include "gettextfromc.h" -QString constructLocationTags(struct dive_site *ds, bool for_maintab) +QString constructLocationTags(struct taxonomy_data *taxonomy, bool for_maintab) { QString locationTag; - if (!ds || !ds->taxonomy.nr) + if (!taxonomy->nr) return locationTag; /* Check if the user set any of the 3 geocoding categories */ @@ -33,9 +33,9 @@ QString constructLocationTags(struct dive_site *ds, bool for_maintab) for (int i = 0; i < 3; i++) { if (prefs.geocoding.category[i] == TC_NONE) continue; - for (int j = 0; j < ds->taxonomy.nr; j++) { - if (ds->taxonomy.category[j].category == prefs.geocoding.category[i]) { - QString tag = ds->taxonomy.category[j].value; + for (int j = 0; j < taxonomy->nr; j++) { + if (taxonomy->category[j].category == prefs.geocoding.category[i]) { + QString tag = taxonomy->category[j].value; if (!tag.isEmpty()) { locationTag += connector + tag; connector = " / "; diff --git a/core/divesite.c b/core/divesite.c index e84ec1dcc..f634044c2 100644 --- a/core/divesite.c +++ b/core/divesite.c @@ -249,26 +249,6 @@ bool dive_site_is_empty(struct dive_site *ds) ds->longitude.udeg == 0); } -void copy_dive_site_taxonomy(struct dive_site *orig, struct dive_site *copy) -{ - if (orig->taxonomy.category == NULL) { - free_taxonomy(©->taxonomy); - } else { - if (copy->taxonomy.category == NULL) - copy->taxonomy.category = alloc_taxonomy(); - for (int i = 0; i < TC_NR_CATEGORIES; i++) { - if (i < copy->taxonomy.nr) { - free((void *)copy->taxonomy.category[i].value); - copy->taxonomy.category[i].value = NULL; - } - if (i < orig->taxonomy.nr) { - copy->taxonomy.category[i] = orig->taxonomy.category[i]; - copy->taxonomy.category[i].value = copy_string(orig->taxonomy.category[i].value); - } - } - copy->taxonomy.nr = orig->taxonomy.nr; - } -} void copy_dive_site(struct dive_site *orig, struct dive_site *copy) { free(copy->name); @@ -281,7 +261,7 @@ void copy_dive_site(struct dive_site *orig, struct dive_site *copy) copy->notes = copy_string(orig->notes); copy->description = copy_string(orig->description); copy->uuid = orig->uuid; - copy_dive_site_taxonomy(orig, copy); + copy_taxonomy(&orig->taxonomy, ©->taxonomy); } static void merge_string(char **a, char **b) diff --git a/core/divesite.h b/core/divesite.h index 5b6943c73..b38ef5c28 100644 --- a/core/divesite.h +++ b/core/divesite.h @@ -75,7 +75,7 @@ void merge_dive_sites(uint32_t ref, uint32_t *uuids, int count); #ifdef __cplusplus } -QString constructLocationTags(struct dive_site *ds, bool for_maintab); +QString constructLocationTags(struct taxonomy_data *taxonomy, bool for_maintab); #endif diff --git a/core/taxonomy.c b/core/taxonomy.c index 1689d1952..9592843f0 100644 --- a/core/taxonomy.c +++ b/core/taxonomy.c @@ -1,6 +1,7 @@ // SPDX-License-Identifier: GPL-2.0 #include "taxonomy.h" #include "gettext.h" +#include "subsurface-string.h" #include <stdlib.h> #include <stdio.h> @@ -41,6 +42,27 @@ void free_taxonomy(struct taxonomy_data *t) } } +void copy_taxonomy(struct taxonomy_data *orig, struct taxonomy_data *copy) +{ + if (orig->category == NULL) { + free_taxonomy(copy); + } else { + if (copy->category == NULL) + copy->category = alloc_taxonomy(); + for (int i = 0; i < TC_NR_CATEGORIES; i++) { + if (i < copy->nr) { + free((void *)copy->category[i].value); + copy->category[i].value = NULL; + } + if (i < orig->nr) { + copy->category[i] = orig->category[i]; + copy->category[i].value = copy_string(orig->category[i].value); + } + } + copy->nr = orig->nr; + } +} + int taxonomy_index_for_category(struct taxonomy_data *t, enum taxonomy_category cat) { for (int i = 0; i < t->nr; i++) diff --git a/core/taxonomy.h b/core/taxonomy.h index 8c886c9ed..5f7f0cf43 100644 --- a/core/taxonomy.h +++ b/core/taxonomy.h @@ -41,6 +41,7 @@ struct taxonomy_data { struct taxonomy *alloc_taxonomy(); void free_taxonomy(struct taxonomy_data *t); +void copy_taxonomy(struct taxonomy_data *orig, struct taxonomy_data *copy); int taxonomy_index_for_category(struct taxonomy_data *t, enum taxonomy_category cat); const char *taxonomy_get_country(struct taxonomy_data *t); void taxonomy_set_country(struct taxonomy_data *t, const char *country, enum taxonomy_origin origin); |