mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Undo: implement undo of dive site location editing
Simply copy the code of note editing. It's a bit more complex, since we have to parse the Gps coordinates. For consitency, rename the COORD field to LOCATION (the field in the dive_site struct is called LOCATION). Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
parent
1deded7874
commit
fa4fedbb48
9 changed files with 69 additions and 25 deletions
|
@ -142,6 +142,15 @@ void LocationInformationWidget::diveSiteChanged(struct dive_site *ds, int field)
|
|||
case LocationInformationModel::TAXONOMY:
|
||||
ui.diveSiteCountry->setText(taxonomy_get_country(&diveSite->taxonomy));
|
||||
return;
|
||||
case LocationInformationModel::LOCATION:
|
||||
filter_model.setCoordinates(diveSite->location);
|
||||
if (has_location(&diveSite->location)) {
|
||||
enableLocationButtons(true);
|
||||
ui.diveSiteCoordinates->setText(printGPSCoords(&diveSite->location));
|
||||
} else {
|
||||
enableLocationButtons(false);
|
||||
ui.diveSiteCoordinates->clear();
|
||||
}
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
@ -181,14 +190,6 @@ bool parseGpsText(const QString &text, location_t &location)
|
|||
|
||||
void LocationInformationWidget::acceptChanges()
|
||||
{
|
||||
if (!diveSite) {
|
||||
qWarning() << "did not have valid dive site in LocationInformationWidget";
|
||||
return;
|
||||
}
|
||||
|
||||
if (!ui.diveSiteCoordinates->text().isEmpty())
|
||||
parseGpsText(ui.diveSiteCoordinates->text(), diveSite->location);
|
||||
mark_divelist_changed(true);
|
||||
resetState();
|
||||
}
|
||||
|
||||
|
@ -250,22 +251,11 @@ void LocationInformationWidget::enableEdition()
|
|||
ui.diveSiteMessage->setText(tr("You are editing a dive site"));
|
||||
}
|
||||
|
||||
void LocationInformationWidget::on_diveSiteCoordinates_textChanged(const QString &text)
|
||||
void LocationInformationWidget::on_diveSiteCoordinates_editingFinished()
|
||||
{
|
||||
if (!diveSite)
|
||||
return;
|
||||
location_t location;
|
||||
bool ok_old = has_location(&diveSite->location);
|
||||
bool ok = parseGpsText(text, location);
|
||||
if (ok != ok_old || !same_location(&location, &diveSite->location)) {
|
||||
if (ok) {
|
||||
markChangedWidget(ui.diveSiteCoordinates);
|
||||
enableLocationButtons(true);
|
||||
filter_model.setCoordinates(location);
|
||||
} else {
|
||||
enableLocationButtons(false);
|
||||
}
|
||||
}
|
||||
Command::editDiveSiteLocation(diveSite, ui.diveSiteCoordinates->text());
|
||||
}
|
||||
|
||||
void LocationInformationWidget::on_diveSiteCountry_editingFinished()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue