mapwidget: add a method to set update editMode in MapWidgetHelper

The local slot coordinatesChangedLocal() tracks the MapWidgetHelper
coordinatesChanged() signal and emit a coordinatesChanged() signal
to any listeners (e.g. MainWindow).

Also add a small change in centerOnDiveSite(), to not be called if
we are skipping the reload (skipReload is updated by
selectedDivesChanged()).

Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
This commit is contained in:
Lubomir I. Ivanov 2017-07-27 23:59:30 +03:00 committed by Dirk Hohndel
parent 4d698310ff
commit 4a004f37ea
2 changed files with 19 additions and 4 deletions

View file

@ -29,11 +29,14 @@ MapWidget::MapWidget(QWidget *parent) : QQuickWidget(parent)
m_mapHelper = rootObject()->findChild<MapWidgetHelper *>();
connect(m_mapHelper, SIGNAL(selectedDivesChanged(QList<int>)),
this, SLOT(selectedDivesChanged(QList<int>)));
connect(m_mapHelper, SIGNAL(coordinatesChanged()),
this, SLOT(coordinatesChangedLocal()));
}
void MapWidget::centerOnDiveSite(struct dive_site *ds)
{
m_mapHelper->centerOnDiveSite(ds);
if (!skipReload)
m_mapHelper->centerOnDiveSite(ds);
}
void MapWidget::centerOnIndex(const QModelIndex& idx)
@ -52,23 +55,28 @@ void MapWidget::repopulateLabels()
void MapWidget::reload()
{
setEditMode(false);
if (!skipReload)
m_mapHelper->reloadMapLocations();
}
void MapWidget::setEditMode(bool editMode)
{
m_mapHelper->setEditMode(editMode);
}
void MapWidget::endGetDiveCoordinates()
{
// TODO;
setEditMode(false);
}
void MapWidget::prepareForGetDiveCoordinates()
{
// TODO;
setEditMode(true);
}
void MapWidget::selectedDivesChanged(QList<int> list)
{
qDebug() << "onSelectedDivesChanged:" << list.size();
skipReload = true;
MainWindow::instance()->dive_list()->unselectDives();
if (!list.empty())
@ -76,6 +84,11 @@ void MapWidget::selectedDivesChanged(QList<int> list)
skipReload = false;
}
void MapWidget::coordinatesChangedLocal()
{
emit coordinatesChanged();
}
MapWidget::~MapWidget()
{
m_instance = NULL;

View file

@ -33,8 +33,10 @@ public slots:
void repopulateLabels();
void prepareForGetDiveCoordinates();
void selectedDivesChanged(QList<int>);
void coordinatesChangedLocal();
private:
void setEditMode(bool editMode);
static MapWidget *m_instance;
QQuickItem *m_rootItem;
MapWidgetHelper *m_mapHelper;