with this, the Location Edit should behave more like the old MainTab edit.
there's still work to be done, I'v used a bit of free time today to try to
do that.
From f782e03831ba88bc05cdcf3131bc36ef61181bc0 Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <[email protected]>
Date: Mon, 9 Mar 2015 15:55:49 -0300
Subject: [PATCH 6/6] Clear after accepting / rejecting the LocationEdit

Signed-off-by: Tomaz Canabrava <[email protected]>
---
 qt-ui/simplewidgets.cpp | 13 +++++++++++++
 qt-ui/simplewidgets.h   |  1 +
 2 files changed, 14 insertions(+)

diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp
index e1ad6b8..08e6f1d 100644
--- a/qt-ui/simplewidgets.cpp
+++ b/qt-ui/simplewidgets.cpp
@@ -740,6 +740,8 @@ void LocationInformationWidget::acceptChanges()
 		setLocationId(currentDs->uuid);
 	}
 	mark_divelist_changed(true);
+	resetPallete();
+	ui.diveSiteNotes->hide();
 	emit informationManagementEnded();
 }
 
@@ -753,6 +755,8 @@ void LocationInformationWidget::rejectChanges()
 	} else {
 		setLocationId(currentDs->uuid);
 	}
+	resetPallete();
+	ui.diveSiteNotes->hide();
 	emit informationManagementEnded();
 }
 
@@ -800,3 +804,12 @@ void LocationInformationWidget::on_diveSiteNotes_textChanged()
 	if (!same_string(qPrintable(ui.diveSiteNotes->toPlainText()),  currentDs->notes))
 		markChangedWidget(ui.diveSiteNotes);
 }
+
+void LocationInformationWidget::resetPallete()
+{
+	QPalette p;
+	ui.diveSiteCoordinates->setPalette(p);
+	ui.diveSiteDescription->setPalette(p);
+	ui.diveSiteName->setPalette(p);
+	ui.diveSiteNotes->setPalette(p);
+}
diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h
index f90e5bc..d86fefd 100644
--- a/qt-ui/simplewidgets.h
+++ b/qt-ui/simplewidgets.h
@@ -232,6 +232,7 @@ public slots:
 	void updateGpsCoordinates(void);
 	void markChangedWidget(QWidget *w);
 	void enableEdition();
+	void resetPallete();
 
 	void on_diveSiteCoordinates_textChanged(const QString& text);
 	void on_diveSiteDescription_textChanged(const QString& text);
-- 
2.3.2

From 2033a7be076c519f1058c58fc9ca7e265aa5fbcf Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <[email protected]>
Date: Mon, 9 Mar 2015 15:51:32 -0300
Subject: [PATCH 5/6] Change color / Mark widget as changed correctly on
 LocationEdit

Signed-off-by: Tomaz Canabrava <[email protected]>
---
 qt-ui/simplewidgets.cpp | 37 +++++++++++++++++++++++++++++++++----
 qt-ui/simplewidgets.h   |  5 +++++
 2 files changed, 38 insertions(+), 4 deletions(-)

diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp
index edee3ec..e1ad6b8 100644
--- a/qt-ui/simplewidgets.cpp
+++ b/qt-ui/simplewidgets.cpp
@@ -696,10 +696,14 @@ void LocationInformationWidget::setLocationId(uint32_t uuid)
 		ui.diveSiteCoordinates->clear();
 	}
 	displayed_dive_site = *currentDs;
-	ui.diveSiteName->setText(displayed_dive_site.name);
-	ui.diveSiteDescription->setText(displayed_dive_site.description);
-	ui.diveSiteNotes->setPlainText(displayed_dive_site.notes);
-	ui.diveSiteCoordinates->setText(printGPSCoords(displayed_dive_site.latitude.udeg, displayed_dive_site.longitude.udeg));
+	if (displayed_dive_site.name)
+		ui.diveSiteName->setText(displayed_dive_site.name);
+	if (displayed_dive_site.description)
+		ui.diveSiteDescription->setText(displayed_dive_site.description);
+	if (displayed_dive_site.notes)
+		ui.diveSiteNotes->setPlainText(displayed_dive_site.notes);
+	if (displayed_dive_site.latitude.udeg || displayed_dive_site.longitude.udeg)
+		ui.diveSiteCoordinates->setText(printGPSCoords(displayed_dive_site.latitude.udeg, displayed_dive_site.longitude.udeg));
 }
 
 void LocationInformationWidget::updateGpsCoordinates()
@@ -769,5 +773,30 @@ void LocationInformationWidget::markChangedWidget(QWidget *w)
 
 void LocationInformationWidget::enableEdition()
 {
+	MainWindow::instance()->dive_list()->setEnabled(false);
+	MainWindow::instance()->setEnabledToolbar(false);
+	ui.diveSiteMessage->show();
+}
+
+void LocationInformationWidget::on_diveSiteCoordinates_textChanged(const QString& text)
+{
+	markChangedWidget(ui.diveSiteCoordinates);
+}
+
+void LocationInformationWidget::on_diveSiteDescription_textChanged(const QString& text)
+{
+	if (!same_string(qPrintable(text), currentDs->description))
+		markChangedWidget(ui.diveSiteDescription);
+}
+
+void LocationInformationWidget::on_diveSiteName_textChanged(const QString& text)
+{
+	if (!same_string(qPrintable(text), currentDs->name))
+		markChangedWidget(ui.diveSiteName);
+}
 
+void LocationInformationWidget::on_diveSiteNotes_textChanged()
+{
+	if (!same_string(qPrintable(ui.diveSiteNotes->toPlainText()),  currentDs->notes))
+		markChangedWidget(ui.diveSiteNotes);
 }
diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h
index f9e4b46..f90e5bc 100644
--- a/qt-ui/simplewidgets.h
+++ b/qt-ui/simplewidgets.h
@@ -232,6 +232,11 @@ public slots:
 	void updateGpsCoordinates(void);
 	void markChangedWidget(QWidget *w);
 	void enableEdition();
+
+	void on_diveSiteCoordinates_textChanged(const QString& text);
+	void on_diveSiteDescription_textChanged(const QString& text);
+	void on_diveSiteName_textChanged(const QString& text);
+	void on_diveSiteNotes_textChanged();
 signals:
 	void informationManagementEnded();
 
-- 
2.3.2

From 9d3d27f19cab0437cb9a766c24aecdeed25b0654 Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <[email protected]>
Date: Mon, 9 Mar 2015 15:22:52 -0300
Subject: [PATCH 4/6] Clone a bit of code to mark the Location Widget chagned

This code is the same that is used on the MainTab, but
since they are different objects, I can't just call it.
so I'm duplicating them for the time being.

Signed-off-by: Tomaz Canabrava <[email protected]>
---
 qt-ui/simplewidgets.cpp | 18 +++++++++++++++++-
 qt-ui/simplewidgets.h   |  4 +++-
 2 files changed, 20 insertions(+), 2 deletions(-)

diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp
index 8a808d2..edee3ec 100644
--- a/qt-ui/simplewidgets.cpp
+++ b/qt-ui/simplewidgets.cpp
@@ -667,7 +667,7 @@ void MultiFilter::closeFilter()
 #include <QDebug>
 #include <QShowEvent>
 
-LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBox(parent)
+LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBox(parent), modified(false)
 {
 	ui.setupUi(this);
 	ui.diveSiteMessage->setText("You are editing the Dive Site");
@@ -755,3 +755,19 @@ void LocationInformationWidget::rejectChanges()
 void LocationInformationWidget::showEvent(QShowEvent *ev) {
 	ui.diveSiteMessage->setCloseButtonVisible(false);
 }
+
+void LocationInformationWidget::markChangedWidget(QWidget *w)
+{
+	QPalette p;
+	qreal h, s, l, a;
+	enableEdition();
+	qApp->palette().color(QPalette::Text).getHslF(&h, &s, &l, &a);
+	p.setBrush(QPalette::Base, (l <= 0.3) ? QColor(Qt::yellow).lighter() : (l <= 0.6) ? QColor(Qt::yellow).light() : /* else */ QColor(Qt::yellow).darker(300));
+	w->setPalette(p);
+	modified = true;
+}
+
+void LocationInformationWidget::enableEdition()
+{
+
+}
diff --git a/qt-ui/simplewidgets.h b/qt-ui/simplewidgets.h
index d0cb605..f9e4b46 100644
--- a/qt-ui/simplewidgets.h
+++ b/qt-ui/simplewidgets.h
@@ -230,13 +230,15 @@ public slots:
 
 	void setLocationId(uint32_t uuid);
 	void updateGpsCoordinates(void);
-
+	void markChangedWidget(QWidget *w);
+	void enableEdition();
 signals:
 	void informationManagementEnded();
 
 private:
 	struct dive_site *currentDs;
 	Ui::LocationInformation ui;
+	bool modified;
 };
 
 bool isGnome3Session();
-- 
2.3.2

From 7e89b79afbefd508015841a667cc68a73865754b Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <[email protected]>
Date: Mon, 9 Mar 2015 15:12:48 -0300
Subject: [PATCH 3/6] Remove redundant code

Another bit of piece of software that shouldn't exist.

Signed-off-by: Tomaz Canabrava <[email protected]>
---
 qt-ui/maintab.cpp | 6 ++----
 1 file changed, 2 insertions(+), 4 deletions(-)

diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 956a1bc..dff49d8 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -71,6 +71,7 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
 	// filled from a dive, they are made writeable
 	setEnabled(false);
 
+
 	Q_FOREACH (QObject *obj, ui.statisticsTab->children()) {
 		QLabel *label = qobject_cast<QLabel *>(obj);
 		if (label)
@@ -955,10 +956,7 @@ void MainTab::markChangedWidget(QWidget *w)
 	qApp->palette().color(QPalette::Text).getHslF(&h, &s, &l, &a);
 	p.setBrush(QPalette::Base, (l <= 0.3) ? QColor(Qt::yellow).lighter() : (l <= 0.6) ? QColor(Qt::yellow).light() : /* else */ QColor(Qt::yellow).darker(300));
 	w->setPalette(p);
-	if (!modified) {
-		modified = true;
-		enableEdition();
-	}
+	modified = true;
 }
 
 void MainTab::on_buddy_textChanged()
-- 
2.3.2

From 855defb191beb5be9636956a4d9c35662c0fc98e Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <[email protected]>
Date: Mon, 9 Mar 2015 15:01:18 -0300
Subject: [PATCH 2/6] Removed dead code.

This code used to trigger the edit mode a long time ago
since now I'm re-reading the code to implement the
same stuff on the Location edit mode, I realized that
this is not needed anymore.

Signed-off-by: Tomaz Canabrava <[email protected]>
---
 qt-ui/maintab.cpp | 14 --------------
 1 file changed, 14 deletions(-)

diff --git a/qt-ui/maintab.cpp b/qt-ui/maintab.cpp
index 3f6345c..956a1bc 100644
--- a/qt-ui/maintab.cpp
+++ b/qt-ui/maintab.cpp
@@ -71,20 +71,6 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
 	// filled from a dive, they are made writeable
 	setEnabled(false);
 
-	ui.location->installEventFilter(this);
-	ui.divemaster->installEventFilter(this);
-	ui.buddy->installEventFilter(this);
-	ui.suit->installEventFilter(this);
-	ui.notes->viewport()->installEventFilter(this);
-	ui.rating->installEventFilter(this);
-	ui.visibility->installEventFilter(this);
-	ui.airtemp->installEventFilter(this);
-	ui.watertemp->installEventFilter(this);
-	ui.dateEdit->installEventFilter(this);
-	ui.timeEdit->installEventFilter(this);
-	ui.tagWidget->installEventFilter(this);
-	ui.DiveType->installEventFilter(this);
-
 	Q_FOREACH (QObject *obj, ui.statisticsTab->children()) {
 		QLabel *label = qobject_cast<QLabel *>(obj);
 		if (label)
-- 
2.3.2

From a5c390c8cf41573768090290d346b5b437d2241a Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <[email protected]>
Date: Mon, 9 Mar 2015 14:56:40 -0300
Subject: [PATCH 1/6] Do not show the Edit mode message when enter location

Signed-off-by: Tomaz Canabrava <[email protected]>
---
 qt-ui/simplewidgets.cpp | 1 +
 1 file changed, 1 insertion(+)

diff --git a/qt-ui/simplewidgets.cpp b/qt-ui/simplewidgets.cpp
index 003fc05..8a808d2 100644
--- a/qt-ui/simplewidgets.cpp
+++ b/qt-ui/simplewidgets.cpp
@@ -672,6 +672,7 @@ LocationInformationWidget::LocationInformationWidget(QWidget *parent) : QGroupBo
 	ui.setupUi(this);
 	ui.diveSiteMessage->setText("You are editing the Dive Site");
 	ui.diveSiteMessage->setCloseButtonVisible(false);
+	ui.diveSiteMessage->hide();
 
 	QAction *action = new QAction(tr("Apply changes"), this);
 	connect(action, SIGNAL(triggered(bool)), this, SLOT(acceptChanges()));
-- 
2.3.2

_______________________________________________
subsurface mailing list
[email protected]
http://lists.subsurface-divelog.org/cgi-bin/mailman/listinfo/subsurface

Reply via email to