Make sure there is a dive site if you try to edit it

If the user clicks on manage (or double clicks on the globe) and the
displayed_dive doesn't actually have a dive site associated with it (e.g.
because we are adding a dive or because it was imported or downloaded
without dive site information, then we need to make sure that there is an
empty dive site that we can make changes to.

Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Dirk Hohndel 2015-02-13 22:44:05 -08:00
parent e32459d313
commit cd77e2e700

View file

@ -666,10 +666,16 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
void LocationInformationWidget::setLocationId(uint32_t uuid)
{
currentDs = get_dive_site_by_uuid(uuid);
if (currentDs)
displayed_dive_site = *currentDs;
else
memset(&displayed_dive, 0, sizeof(displayed_dive));
if (!currentDs) {
currentDs = get_dive_site_by_uuid(create_dive_site(""));
displayed_dive.dive_site_uuid = currentDs->uuid;
ui.diveSiteName->clear();
ui.diveSiteDescription->clear();
ui.diveSiteNotes->clear();
ui.diveSiteCoordinates->clear();
}
displayed_dive_site = *currentDs;
ui.diveSiteName->setText(displayed_dive_site.name);
ui.diveSiteDescription->setText(displayed_dive_site.description);
ui.diveSiteNotes->setPlainText(displayed_dive_site.notes);
@ -708,6 +714,7 @@ void LocationInformationWidget::acceptChanges()
void LocationInformationWidget::rejectChanges()
{
Q_ASSERT(currentDs != NULL);
setLocationId(currentDs->uuid);
emit informationManagementEnded();
}