Undo: implement undo of dive site country editing

Simply copy the code of notes editing, but use the taxonomy_* functions
to read and set the value. Moreover, replace the three TAXONOMY_n field
ids by a single TAXONOMY id. We will probably never show one column per
taxonomy field, but rather a single column with a string derived from all
taxonomy fields.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2019-03-14 08:26:50 +01:00 committed by Dirk Hohndel
parent 4d183e0d75
commit 021aa4bd57
8 changed files with 54 additions and 20 deletions

View file

@ -139,6 +139,9 @@ void LocationInformationWidget::diveSiteChanged(struct dive_site *ds, int field)
case LocationInformationModel::NOTES:
ui.diveSiteNotes->setText(diveSite->notes);
return;
case LocationInformationModel::TAXONOMY:
ui.diveSiteCountry->setText(taxonomy_get_country(&diveSite->taxonomy));
return;
default:
return;
}
@ -183,18 +186,6 @@ void LocationInformationWidget::acceptChanges()
return;
}
char *uiString;
uiString = copy_qstring(ui.diveSiteCountry->text());
// if the user entered a different country, first update the local taxonomy
// this below will get copied into the diveSite
if (!same_string(uiString, taxonomy_get_country(&taxonomy)) &&
!empty_string(uiString))
taxonomy_set_country(&taxonomy, uiString, taxonomy_origin::GEOMANUAL);
else
free(uiString);
// now update the diveSite
copy_taxonomy(&taxonomy, &diveSite->taxonomy);
if (!ui.diveSiteCoordinates->text().isEmpty())
parseGpsText(ui.diveSiteCoordinates->text(), diveSite->location);
mark_divelist_changed(true);
@ -277,10 +268,10 @@ void LocationInformationWidget::on_diveSiteCoordinates_textChanged(const QString
}
}
void LocationInformationWidget::on_diveSiteCountry_textChanged(const QString& text)
void LocationInformationWidget::on_diveSiteCountry_editingFinished()
{
if (!same_string(qPrintable(text), taxonomy_get_country(&taxonomy)))
markChangedWidget(ui.diveSiteCountry);
if (diveSite)
Command::editDiveSiteCountry(diveSite, ui.diveSiteCountry->text());
}
void LocationInformationWidget::on_diveSiteDescription_editingFinished()