summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/locationinformation.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2017-11-26 10:42:22 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2017-11-26 18:50:40 -0800
commitf4bcdf46aa6498c449be8f63c052a7cbeaf8baa6 (patch)
treec13dce16fce00b4ee383e073aa0765bacd5bf99f /desktop-widgets/locationinformation.cpp
parent2a0520d57d18d9e188d7633b0d39506b36e196ac (diff)
downloadsubsurface-f4bcdf46aa6498c449be8f63c052a7cbeaf8baa6.tar.gz
Inform LocationFilterModel of changed dive site name
Since commit 01d961086c1d175732c597dc9acdba7cc4cd2d26, the location filter list is updated if a dive site is edited. The problem is that if the name of a selected dive site is changed, the selection is lost. Therefore, before repopulating, inform the location filter that a dive site changed its name. The location filter then internally changes the name and can properly transfer the old selection on repopulate. This is performed via the new LocationInformationWidget::nameChanged signal, which is connected to the new LocationFilterModel::changeName slot. A special case to be handled is the following: [ ] Site 1 [x] Site 2 and "Site 2" being renamed to "Site 1", i.e. both sites being merged. Here, the merging is detected and "Site 1" will likewise be checked: [x] Site 1 [x] Site 1 No merging is performed, as the list will be repopulated anyway. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/locationinformation.cpp')
-rw-r--r--desktop-widgets/locationinformation.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/desktop-widgets/locationinformation.cpp b/desktop-widgets/locationinformation.cpp
index a74f08fa1..ad00198b7 100644
--- a/desktop-widgets/locationinformation.cpp
+++ b/desktop-widgets/locationinformation.cpp
@@ -36,6 +36,8 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
connect(this, SIGNAL(startFilterDiveSite(uint32_t)), MultiFilterSortModel::instance(), SLOT(startFilterDiveSite(uint32_t)));
connect(this, SIGNAL(stopFilterDiveSite()), MultiFilterSortModel::instance(), SLOT(stopFilterDiveSite()));
connect(ui.geoCodeButton, SIGNAL(clicked()), this, SLOT(reverseGeocode()));
+ connect(this, SIGNAL(nameChanged(const QString &, const QString &)),
+ LocationFilterModel::instance(), SLOT(changeName(const QString &, const QString &)));
SsrfSortFilterProxyModel *filter_model = new SsrfSortFilterProxyModel(this);
filter_model->setSourceModel(LocationInformationModel::instance());
@@ -156,6 +158,7 @@ void LocationInformationWidget::acceptChanges()
currentDs->latitude = displayed_dive_site.latitude;
currentDs->longitude = displayed_dive_site.longitude;
if (!same_string(uiString, currentDs->name)) {
+ emit nameChanged(QString(currentDs->name), ui.diveSiteName->text());
free(currentDs->name);
currentDs->name = uiString;
} else {