mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-30 22:20:21 +00:00
Be way more carefull when copying dive site
I don't know how I was not shot regarding on how broken the old behavior was. The new behavior: 1 copy the old_dive_site on top of the current_dive_site only if the current_dive_site was actually a new uuid, created by that method. 2 if the current_dive_site is an existing one but it doesn't have gps coords, copy only the gps coords. This fixes existing dive sites copying notes and coordinates from the old_dive_site. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
20f8c89d64
commit
786f164046
1 changed files with 14 additions and 5 deletions
|
@ -834,23 +834,32 @@ uint32_t MainTab::updateDiveSite(uint32_t pickedUuid, int divenr)
|
|||
const uint32_t origUuid = cd->dive_site_uuid;
|
||||
struct dive_site *origDs = get_dive_site_by_uuid(origUuid);
|
||||
struct dive_site *newDs = NULL;
|
||||
bool createdNewDive = false;
|
||||
|
||||
if (pickedUuid == origUuid)
|
||||
return origUuid;
|
||||
|
||||
if (pickedUuid == RECENTLY_ADDED_DIVESITE) {
|
||||
pickedUuid = create_dive_site(ui.location->text().isEmpty() ? qPrintable(tr("New dive site")) : qPrintable(ui.location->text()), displayed_dive.when);
|
||||
createdNewDive = true;
|
||||
}
|
||||
|
||||
newDs = get_dive_site_by_uuid(pickedUuid);
|
||||
|
||||
// Copy everything from the displayed_dive_site, so we have the latitude, longitude, notes, etc.
|
||||
// The user *might* be using wrongly the 'choose dive site' just to edit the name of it, sigh.
|
||||
if(origDs) {
|
||||
copy_dive_site(origDs, newDs);
|
||||
free(newDs->name);
|
||||
newDs->name = copy_string(qPrintable(ui.location->text().constData()));
|
||||
newDs->uuid = pickedUuid;
|
||||
if (origDs) {
|
||||
if(createdNewDive) {
|
||||
copy_dive_site(origDs, newDs);
|
||||
free(newDs->name);
|
||||
newDs->name = copy_string(qPrintable(ui.location->text().constData()));
|
||||
newDs->uuid = pickedUuid;
|
||||
qDebug() << "Creating and copying dive site";
|
||||
} else if (newDs->latitude.udeg == 0 && newDs->longitude.udeg == 0) {
|
||||
newDs->latitude.udeg = origDs->latitude.udeg;
|
||||
newDs->longitude.udeg = origDs->longitude.udeg;
|
||||
qDebug() << "Copying GPS information";
|
||||
}
|
||||
}
|
||||
|
||||
if (origDs && pickedUuid != origDs->uuid && same_string(origDs->notes, "SubsurfaceWebservice")) {
|
||||
|
|
Loading…
Reference in a new issue