diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2019-05-03 12:10:19 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2019-05-11 12:06:19 -0700 |
commit | d4a91a52fa54db951d09f9433b392d50183bf7ab (patch) | |
tree | e1a40541edcd23d0061ab6d263f65e13387a3959 /desktop-widgets | |
parent | 48b8129137ed3db1c4b0940301c8bfc9662bcee3 (diff) | |
download | subsurface-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.cpp | 1 | ||||
-rw-r--r-- | desktop-widgets/mapwidget.cpp | 12 | ||||
-rw-r--r-- | desktop-widgets/mapwidget.h | 3 | ||||
-rw-r--r-- | desktop-widgets/tab-widgets/maintab.cpp | 6 | ||||
-rw-r--r-- | desktop-widgets/tab-widgets/maintab.h | 2 |
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); |