mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Dive site: pass dive-site pointer to is_dive_site_used()
Instead of passing a uuid, pass a pointer to the dive site. This is small step in an effort to remove uuids. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
14ab95608c
commit
8de471f90e
5 changed files with 15 additions and 16 deletions
|
@ -145,13 +145,15 @@ int nr_of_dives_at_dive_site(struct dive_site *ds, bool select_only)
|
||||||
return nr;
|
return nr;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_dive_site_used(uint32_t uuid, bool select_only)
|
bool is_dive_site_used(struct dive_site *ds, bool select_only)
|
||||||
{
|
{
|
||||||
int j;
|
int j;
|
||||||
bool found = false;
|
bool found = false;
|
||||||
struct dive *d;
|
struct dive *d;
|
||||||
|
if (!ds)
|
||||||
|
return false;
|
||||||
for_each_dive(j, d) {
|
for_each_dive(j, d) {
|
||||||
if (d->dive_site_uuid == uuid && (!select_only || d->selected)) {
|
if (d->dive_site_uuid == ds->uuid && (!select_only || d->selected)) {
|
||||||
found = true;
|
found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -55,7 +55,7 @@ static inline struct dive_site *get_dive_site_by_uuid(uint32_t uuid)
|
||||||
void dive_site_table_sort();
|
void dive_site_table_sort();
|
||||||
struct dive_site *alloc_or_get_dive_site(uint32_t uuid);
|
struct dive_site *alloc_or_get_dive_site(uint32_t uuid);
|
||||||
int nr_of_dives_at_dive_site(struct dive_site *ds, bool select_only);
|
int nr_of_dives_at_dive_site(struct dive_site *ds, bool select_only);
|
||||||
bool is_dive_site_used(uint32_t uuid, bool select_only);
|
bool is_dive_site_used(struct dive_site *ds, bool select_only);
|
||||||
void free_dive_site(struct dive_site *ds);
|
void free_dive_site(struct dive_site *ds);
|
||||||
void delete_dive_site(uint32_t id);
|
void delete_dive_site(uint32_t id);
|
||||||
struct dive_site *create_dive_site(const char *name, timestamp_t divetime);
|
struct dive_site *create_dive_site(const char *name, timestamp_t divetime);
|
||||||
|
|
|
@ -883,7 +883,7 @@ static void save_divesites(git_repository *repo, struct dir *tree)
|
||||||
for (int i = 0; i < dive_site_table.nr; i++) {
|
for (int i = 0; i < dive_site_table.nr; i++) {
|
||||||
struct membuffer b = { 0 };
|
struct membuffer b = { 0 };
|
||||||
struct dive_site *ds = get_dive_site(i);
|
struct dive_site *ds = get_dive_site(i);
|
||||||
if (dive_site_is_empty(ds) || !is_dive_site_used(ds->uuid, false)) {
|
if (dive_site_is_empty(ds) || !is_dive_site_used(ds, false)) {
|
||||||
int j;
|
int j;
|
||||||
struct dive *d;
|
struct dive *d;
|
||||||
for_each_dive(j, d) {
|
for_each_dive(j, d) {
|
||||||
|
@ -900,7 +900,7 @@ static void save_divesites(git_repository *repo, struct dir *tree)
|
||||||
// these are the two default names for sites from
|
// these are the two default names for sites from
|
||||||
// the web service; if the site isn't used in any
|
// the web service; if the site isn't used in any
|
||||||
// dive (really? you didn't rename it?), delete it
|
// dive (really? you didn't rename it?), delete it
|
||||||
if (!is_dive_site_used(ds->uuid, false)) {
|
if (!is_dive_site_used(ds, false)) {
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Deleted unused auto-created dive site %s\n", ds->name);
|
fprintf(stderr, "Deleted unused auto-created dive site %s\n", ds->name);
|
||||||
delete_dive_site(ds->uuid);
|
delete_dive_site(ds->uuid);
|
||||||
|
|
|
@ -600,7 +600,7 @@ void save_dives_buffer(struct membuffer *b, const bool select_only, bool anonymi
|
||||||
int j;
|
int j;
|
||||||
struct dive *d;
|
struct dive *d;
|
||||||
struct dive_site *ds = get_dive_site(i);
|
struct dive_site *ds = get_dive_site(i);
|
||||||
if (dive_site_is_empty(ds) || !is_dive_site_used(ds->uuid, false)) {
|
if (dive_site_is_empty(ds) || !is_dive_site_used(ds, false)) {
|
||||||
for_each_dive(j, d) {
|
for_each_dive(j, d) {
|
||||||
if (d->dive_site_uuid == ds->uuid)
|
if (d->dive_site_uuid == ds->uuid)
|
||||||
d->dive_site_uuid = 0;
|
d->dive_site_uuid = 0;
|
||||||
|
@ -614,7 +614,7 @@ void save_dives_buffer(struct membuffer *b, const bool select_only, bool anonymi
|
||||||
// these are the two default names for sites from
|
// these are the two default names for sites from
|
||||||
// the web service; if the site isn't used in any
|
// the web service; if the site isn't used in any
|
||||||
// dive (really? you didn't rename it?), delete it
|
// dive (really? you didn't rename it?), delete it
|
||||||
if (!is_dive_site_used(ds->uuid, false)) {
|
if (!is_dive_site_used(ds, false)) {
|
||||||
if (verbose)
|
if (verbose)
|
||||||
fprintf(stderr, "Deleted unused auto-created dive site %s\n", ds->name);
|
fprintf(stderr, "Deleted unused auto-created dive site %s\n", ds->name);
|
||||||
delete_dive_site(ds->uuid);
|
delete_dive_site(ds->uuid);
|
||||||
|
@ -622,7 +622,7 @@ void save_dives_buffer(struct membuffer *b, const bool select_only, bool anonymi
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (select_only && !is_dive_site_used(ds->uuid, true))
|
if (select_only && !is_dive_site_used(ds, true))
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
put_format(b, "<site uuid='%8x'", ds->uuid);
|
put_format(b, "<site uuid='%8x'", ds->uuid);
|
||||||
|
|
|
@ -713,7 +713,6 @@ uint32_t MainTab::updateDiveSite(uint32_t pickedUuid, dive *d)
|
||||||
return pickedUuid;
|
return pickedUuid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Get the list of selected dives, but put the current dive at the last position of the vector
|
// Get the list of selected dives, but put the current dive at the last position of the vector
|
||||||
static QVector<dive *> getSelectedDivesCurrentLast()
|
static QVector<dive *> getSelectedDivesCurrentLast()
|
||||||
{
|
{
|
||||||
|
@ -880,18 +879,16 @@ void MainTab::acceptChanges()
|
||||||
}
|
}
|
||||||
|
|
||||||
// update the dive site for the selected dives that had the same dive site as the current dive
|
// update the dive site for the selected dives that had the same dive site as the current dive
|
||||||
uint32_t oldUuid = cd->dive_site_uuid;
|
struct dive_site *oldDs = get_dive_site_by_uuid(cd->dive_site_uuid);
|
||||||
uint32_t newUuid = 0;
|
uint32_t newUuid = 0;
|
||||||
MODIFY_DIVES(selectedDives,
|
MODIFY_DIVES(selectedDives,
|
||||||
if (mydive->dive_site_uuid == current_dive->dive_site_uuid)
|
if (mydive->dive_site_uuid == current_dive->dive_site_uuid)
|
||||||
newUuid = updateDiveSite(newUuid == 0 ? ui.location->currDiveSiteUuid() : newUuid, mydive);
|
newUuid = updateDiveSite(newUuid == 0 ? ui.location->currDiveSiteUuid() : newUuid, mydive);
|
||||||
);
|
);
|
||||||
if (!is_dive_site_used(oldUuid, false)) {
|
if (oldDs && !is_dive_site_used(oldDs, false)) {
|
||||||
if (verbose) {
|
if (verbose)
|
||||||
struct dive_site *ds = get_dive_site_by_uuid(oldUuid);
|
qDebug() << "delete now unused dive site" << (oldDs->name ? oldDs->name : "without name");
|
||||||
qDebug() << "delete now unused dive site" << ((ds && ds->name) ? ds->name : "without name");
|
delete_dive_site(oldDs->uuid);
|
||||||
}
|
|
||||||
delete_dive_site(oldUuid);
|
|
||||||
MapWidget::instance()->reload();
|
MapWidget::instance()->reload();
|
||||||
}
|
}
|
||||||
// the code above can change the correct uuid for the displayed dive site - and the
|
// the code above can change the correct uuid for the displayed dive site - and the
|
||||||
|
|
Loading…
Add table
Reference in a new issue