summaryrefslogtreecommitdiffstats
path: root/desktop-widgets
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2019-05-03 12:10:19 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2019-05-11 12:06:19 -0700
commitd4a91a52fa54db951d09f9433b392d50183bf7ab (patch)
treee1a40541edcd23d0061ab6d263f65e13387a3959 /desktop-widgets
parent48b8129137ed3db1c4b0940301c8bfc9662bcee3 (diff)
downloadsubsurface-d4a91a52fa54db951d09f9433b392d50183bf7ab.tar.gz
Map: reload on selection change directly
When changing the dive selection, we have to reload the map to show the correctly highlighted flags. Do this directly by hooking into the DiveListNotifier::divesChanged signal instead of indirectly via the MainTab. Moreover, on reload center on the highlighted dive sites. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets')
-rw-r--r--desktop-widgets/mainwindow.cpp1
-rw-r--r--desktop-widgets/mapwidget.cpp12
-rw-r--r--desktop-widgets/mapwidget.h3
-rw-r--r--desktop-widgets/tab-widgets/maintab.cpp6
-rw-r--r--desktop-widgets/tab-widgets/maintab.h2
5 files changed, 12 insertions, 12 deletions
diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp
index 18571e3b8..037d0c01f 100644
--- a/desktop-widgets/mainwindow.cpp
+++ b/desktop-widgets/mainwindow.cpp
@@ -216,7 +216,6 @@ MainWindow::MainWindow() : QMainWindow(),
connect(DivePlannerPointsModel::instance(), SIGNAL(planCanceled()), this, SLOT(planCanceled()));
connect(DivePlannerPointsModel::instance(), SIGNAL(variationsComputed(QString)), this, SLOT(updateVariations(QString)));
connect(plannerDetails->printPlan(), SIGNAL(pressed()), divePlannerWidget, SLOT(printDecoPlan()));
- connect(mainTab.get(), &MainTab::diveSiteChanged, mapWidget, &MapWidget::centerOnSelectedDiveSite);
connect(this, &MainWindow::showError, ui.mainErrorMessage, &NotificationWidget::showError, Qt::AutoConnection);
connect(&windowTitleUpdate, &WindowTitleUpdate::updateTitle, this, &MainWindow::setAutomaticTitle);
diff --git a/desktop-widgets/mapwidget.cpp b/desktop-widgets/mapwidget.cpp
index 14ac3a075..3d26f4d6a 100644
--- a/desktop-widgets/mapwidget.cpp
+++ b/desktop-widgets/mapwidget.cpp
@@ -6,7 +6,6 @@
#include "mapwidget.h"
#include "core/divesite.h"
-#include "core/subsurface-qt/DiveListNotifier.h"
#include "map-widget/qmlmapwidgethelper.h"
#include "qt-models/maplocationmodel.h"
#include "qt-models/divelocationmodel.h"
@@ -31,6 +30,7 @@ MapWidget::MapWidget(QWidget *parent) : QQuickWidget(parent)
setResizeMode(QQuickWidget::SizeRootObjectToView);
connect(this, &QQuickWidget::statusChanged, this, &MapWidget::doneLoading);
connect(&diveListNotifier, &DiveListNotifier::diveSiteChanged, this, &MapWidget::diveSiteChanged);
+ connect(&diveListNotifier, &DiveListNotifier::divesChanged, this, &MapWidget::divesChanged);
setSource(urlMapWidget);
}
@@ -85,8 +85,10 @@ void MapWidget::repopulateLabels()
void MapWidget::reload()
{
CHECK_IS_READY_RETURN_VOID();
- if (!skipReload)
+ if (!skipReload) {
m_mapHelper->reloadMapLocations();
+ centerOnSelectedDiveSite();
+ }
}
void MapWidget::endGetDiveCoordinates()
@@ -129,6 +131,12 @@ void MapWidget::diveSiteChanged(struct dive_site *ds, int field)
m_mapHelper->updateDiveSiteCoordinates(ds, ds->location);
}
+void MapWidget::divesChanged(dive_trip *, const QVector<dive *> &, DiveField field)
+{
+ if (field == DiveField::DIVESITE)
+ reload();
+}
+
MapWidget::~MapWidget()
{
m_instance = NULL;
diff --git a/desktop-widgets/mapwidget.h b/desktop-widgets/mapwidget.h
index 96da308d8..cfa7ce8b6 100644
--- a/desktop-widgets/mapwidget.h
+++ b/desktop-widgets/mapwidget.h
@@ -3,6 +3,7 @@
#define MAPWIDGET_H
#include "core/units.h"
+#include "core/subsurface-qt/DiveListNotifier.h"
#include <QQuickWidget>
#include <QList>
@@ -11,7 +12,6 @@
class QResizeEvent;
class QQuickItem;
class MapWidgetHelper;
-struct dive_site;
class MapWidget : public QQuickWidget {
@@ -35,6 +35,7 @@ public slots:
void coordinatesChanged(struct dive_site *ds, const location_t &);
void doneLoading(QQuickWidget::Status status);
void diveSiteChanged(struct dive_site *ds, int field);
+ void divesChanged(dive_trip *, const QVector<dive *> &, DiveField field);
private:
static MapWidget *m_instance;
diff --git a/desktop-widgets/tab-widgets/maintab.cpp b/desktop-widgets/tab-widgets/maintab.cpp
index 412ec899b..0638fbded 100644
--- a/desktop-widgets/tab-widgets/maintab.cpp
+++ b/desktop-widgets/tab-widgets/maintab.cpp
@@ -310,11 +310,6 @@ void MainTab::divesChanged(dive_trip *trip, const QVector<dive *> &dives, DiveFi
break;
case DiveField::DIVESITE:
updateDiveSite(current_dive);
- // Since we only show dive sites with a dive, a new dive site may have appeared or an old one disappeared.
- // Therefore reload the map widget.
- // TODO: Call this only if a site *actually* went from usage count 0 to 1 or 1 to 0.
- MapWidget::instance()->repopulateLabels();
- emit diveSiteChanged();
break;
case DiveField::TAGS:
ui.tagWidget->setText(get_taglist_string(current_dive->tag_list));
@@ -593,7 +588,6 @@ void MainTab::updateDiveInfo()
if (verbose && current_dive && current_dive->dive_site)
qDebug() << "Set the current dive site:" << current_dive->dive_site->uuid;
- emit diveSiteChanged();
}
void MainTab::reload()
diff --git a/desktop-widgets/tab-widgets/maintab.h b/desktop-widgets/tab-widgets/maintab.h
index c65d7fe32..cdb761afd 100644
--- a/desktop-widgets/tab-widgets/maintab.h
+++ b/desktop-widgets/tab-widgets/maintab.h
@@ -44,8 +44,6 @@ public:
void nextInputField(QKeyEvent *event);
void stealFocus();
-signals:
- void diveSiteChanged();
public
slots:
void divesChanged(dive_trip *trip, const QVector<dive *> &dives, DiveField field);