From 47a0d1b61a64e2c887796ed5f05b40c2d36e5b5e Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <tomaz.canabrava@gmail.com>
Date: Sun, 17 May 2015 17:14:23 -0300
Subject: [PATCH 10/10] Update the dive location when showing the dialog

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@gmail.com>
---
 qt-ui/locationinformation.cpp | 23 ++++++++++++++++++-----
 qt-ui/locationinformation.h   |  9 ++++-----
 2 files changed, 22 insertions(+), 10 deletions(-)

diff --git a/qt-ui/locationinformation.cpp b/qt-ui/locationinformation.cpp
index ad23b09..9c7edb9 100644
--- a/qt-ui/locationinformation.cpp
+++ b/qt-ui/locationinformation.cpp
@@ -7,7 +7,7 @@
 #include <QDebug>
 #include <QShowEvent>
 
-LocationInformationModel::LocationInformationModel(QObject *obj)
+LocationInformationModel::LocationInformationModel(QObject *obj) : QAbstractListModel(obj), internalRowCount(0)
 {
 }
 
@@ -37,13 +37,13 @@ void LocationInformationModel::update()
 	for_each_dive_site (i, ds);
 
 	if (rowCount()) {
-		beginRemoveRows(QModelIndex(), 0, rowCount());
+		beginRemoveRows(QModelIndex(), 0, rowCount()-1);
 		endRemoveRows();
 	}
 	if (i) {
 		beginInsertRows(QModelIndex(), 0, i);
 		internalRowCount = i;
-		endRemoveRows();
+		endInsertRows();
 	}
 }
 
@@ -64,8 +64,16 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
 	connect(rejectAction, SIGNAL(triggered(bool)), this, SLOT(rejectChanges()));
 
 	ui.diveSiteMessage->setText(tr("Dive site management"));
-	ui.diveSiteMessage->addAction(closeAction);
+	ui.diveSiteMessage->addAction(closeAction);a
 
+	ui.currentLocation->setModel(new LocationInformationModel());
+	connect(ui.currentLocation, SIGNAL(currentIndexChanged(int)), this, SLOT(setCurrentDiveSite(int)));
+}
+
+void LocationInformationWidget::setCurrentDiveSite(int dive_nr)
+{
+	currentDs = get_dive_site(dive_nr);
+	setLocationId(currentDs->uuid);
 }
 
 void LocationInformationWidget::setLocationId(uint32_t uuid)
@@ -151,8 +159,13 @@ void LocationInformationWidget::rejectChanges()
 	emit informationManagementEnded();
 }
 
-void LocationInformationWidget::showEvent(QShowEvent *ev) {
+void LocationInformationWidget::showEvent(QShowEvent *ev)
+{
+	LocationInformationModel *m = (LocationInformationModel*) ui.currentLocation->model();
 	ui.diveSiteMessage->setCloseButtonVisible(false);
+	m->update();
+	QGroupBox::showEvent(ev);
+
 }
 
 void LocationInformationWidget::markChangedWidget(QWidget *w)
diff --git a/qt-ui/locationinformation.h b/qt-ui/locationinformation.h
index be6ec34..015d3d4 100644
--- a/qt-ui/locationinformation.h
+++ b/qt-ui/locationinformation.h
@@ -19,20 +19,19 @@ class LocationInformationWidget : public QGroupBox {
 Q_OBJECT
 public:
 	LocationInformationWidget(QWidget *parent = 0);
-
+protected:
+	void showEvent(QShowEvent *);
+\
 public slots:
 	void acceptChanges();
 	void rejectChanges();
-
-	void showEvent(QShowEvent *);
-
 	void setLocationId(uint32_t uuid);
 	void updateGpsCoordinates(void);
 	void markChangedWidget(QWidget *w);
 	void enableEdition();
 	void resetState();
 	void resetPallete();
-
+	void setCurrentDiveSite(int dive_nr);
 	void on_diveSiteCoordinates_textChanged(const QString& text);
 	void on_diveSiteDescription_textChanged(const QString& text);
 	void on_diveSiteName_textChanged(const QString& text);
-- 
2.3.2 (Apple Git-55)

