Add helper function that checks if a dive site is in use

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-07-15 21:25:26 -07:00
parent 542e04266d
commit 1dbb6071bd
3 changed files with 17 additions and 10 deletions

View file

@ -108,6 +108,20 @@ struct dive_site *alloc_dive_site()
return ds;
}
bool is_dive_site_used(uint32_t uuid, bool select_only)
{
int j;
bool found = false;
struct dive *d;
for_each_dive(j, d) {
if (d->dive_site_uuid == uuid && (!select_only || d->selected)) {
found = true;
break;
}
}
return found;
}
void delete_dive_site(uint32_t id)
{
int nr = dive_site_table.nr;

View file

@ -50,6 +50,7 @@ static inline struct dive_site *get_dive_site_by_uuid(uint32_t uuid)
}
struct dive_site *alloc_dive_site();
bool is_dive_site_used(uint32_t uuid, bool select_only);
void delete_dive_site(uint32_t id);
uint32_t create_dive_site(const char *name);
uint32_t create_dive_site_with_gps(const char *name, degrees_t latitude, degrees_t longitude);

View file

@ -520,17 +520,9 @@ void save_dives_buffer(struct membuffer *b, const bool select_only)
i--; // since we just deleted that one
continue;
}
if (select_only) {
bool found = false;
for_each_dive(j, d) {
if (d->selected && d->dive_site_uuid == ds->uuid) {
found = true;
break;
}
}
if (!found)
if (select_only && !is_dive_site_used(ds->uuid, true))
continue;
}
put_format(b, "<site uuid='%8x'", ds->uuid);
show_utf8(b, ds->name, " name='", "'", 1);
if (ds->latitude.udeg || ds->longitude.udeg) {