This last patch should fix robert's issues with the different deco models
for display and plan.
Robert issues should be fixed with this path.
The issue was that the preferences wasn't hoocked up (it was actually
partially hoocked in the wrong pref)



On Tue, Nov 1, 2016 at 3:45 PM, Tomaz Canabrava <[email protected]> wrote:

>
>
> On Tue, Nov 1, 2016 at 3:25 PM, Tomaz Canabrava <[email protected]>
> wrote:
>
>> more fixes regarding preferences
>>
>> On Tue, Nov 1, 2016 at 2:46 PM, Tomaz Canabrava <[email protected]>
>> wrote:
>>
>>>  bugfixes regarding preferences
>>>
>>> still checking for more.
>>> (the font issue that willem said is fixed on this series)
>>>
>>> Tomaz
>>>
>>> On Tue, Nov 1, 2016 at 12:06 PM, Tomaz Canabrava <[email protected]>
>>> wrote:
>>>
>>>> FINALLY
>>>> this finishes the unittests - sorry for all delays.
>>>>
>>>> I'll now look for misbehaving preferences, like the one willan
>>>> complained.
>>>>
>>>> Tomaz
>>>>
>>>
>>>
>>
>
From 9b7be36c9dd6b8c46bad38c1c83b7dee12fb5130 Mon Sep 17 00:00:00 2001
From: Tomaz Canabrava <[email protected]>
Date: Tue, 1 Nov 2016 17:00:06 +0100
Subject: [PATCH 14/14] Deco mode for plannining is not deco mode for showing

We had (in the wrong place, imo) a new feature that
should differentiate the different deco_modes, you could
plan your dive in buelhman and see it in vpm-b, for instance
but both of them accessed the same pref.

Signed-off-by: Tomaz Canabrava <[email protected]>
---
 core/pref.h                                       |  1 +
 core/subsurface-qt/SettingsObjectWrapper.cpp      | 24 ++++++++++++++++++-----
 core/subsurface-qt/SettingsObjectWrapper.h        |  5 +++++
 desktop-widgets/preferences/preferences_graph.cpp |  4 +++-
 profile-widget/divetooltipitem.cpp                |  5 ++++-
 profile-widget/profilewidget2.cpp                 |  4 ++--
 6 files changed, 34 insertions(+), 9 deletions(-)

diff --git a/core/pref.h b/core/pref.h
index c12a040..78d49b1 100644
--- a/core/pref.h
+++ b/core/pref.h
@@ -107,6 +107,7 @@ struct preferences {
 	int descrate;
 	int bottompo2;
 	int decopo2;
+	enum deco_mode display_deco_mode;
 	depth_t bestmixend;
 	int proxy_type;
 	char *proxy_host;
diff --git a/core/subsurface-qt/SettingsObjectWrapper.cpp b/core/subsurface-qt/SettingsObjectWrapper.cpp
index 60efe9a..34fe3dd 100644
--- a/core/subsurface-qt/SettingsObjectWrapper.cpp
+++ b/core/subsurface-qt/SettingsObjectWrapper.cpp
@@ -259,6 +259,24 @@ TechnicalDetailsSettings::TechnicalDetailsSettings(QObject* parent): QObject(par
 
 }
 
+deco_mode TechnicalDetailsSettings::deco() const
+{
+
+	return prefs.display_deco_mode;
+}
+
+void TechnicalDetailsSettings::setDecoMode(deco_mode d)
+{
+	if (prefs.display_deco_mode == d)
+		return;
+
+	prefs.display_deco_mode = d;
+	QSettings s;
+	s.beginGroup(group);
+	s.setValue("display_deco_mode", d);
+	emit decoModeChanged(d);
+}
+
 double TechnicalDetailsSettings:: modp02() const
 {
 	return prefs.modpO2;
@@ -2131,11 +2149,6 @@ void SettingsObjectWrapper::load()
 	GET_BOOL("tankbar", tankbar);
 	GET_BOOL("RulerBar", rulergraph);
 	GET_BOOL("percentagegraph", percentagegraph);
-	v = s.value("buehlmann");
-	if (v.isValid())
-		prefs.deco_mode = v.toBool() ? BUEHLMANN : VPMB;
-	else
-		prefs.deco_mode = BUEHLMANN;
 	GET_INT("gflow", gflow);
 	GET_INT("gfhigh", gfhigh);
 	GET_INT("vpmb_conservatism", vpmb_conservatism);
@@ -2149,6 +2162,7 @@ void SettingsObjectWrapper::load()
 	GET_BOOL("display_unused_tanks", display_unused_tanks);
 	GET_BOOL("show_average_depth", show_average_depth);
 	GET_BOOL("show_pictures_in_profile", show_pictures_in_profile);
+	prefs.display_deco_mode =  (deco_mode) s.value("display_deco_mode").toInt();
 	s.endGroup();
 
 	s.beginGroup("GeneralSettings");
diff --git a/core/subsurface-qt/SettingsObjectWrapper.h b/core/subsurface-qt/SettingsObjectWrapper.h
index bd12da5..7fdd104 100644
--- a/core/subsurface-qt/SettingsObjectWrapper.h
+++ b/core/subsurface-qt/SettingsObjectWrapper.h
@@ -132,6 +132,8 @@ class TechnicalDetailsSettings : public QObject {
 	Q_PROPERTY(bool display_unused_tanks READ displayUnusedTanks WRITE setDisplayUnusedTanks NOTIFY displayUnusedTanksChanged)
 	Q_PROPERTY(bool show_average_depth   READ showAverageDepth   WRITE setShowAverageDepth   NOTIFY showAverageDepthChanged)
 	Q_PROPERTY(bool show_pictures_in_profile READ showPicturesInProfile WRITE setShowPicturesInProfile NOTIFY showPicturesInProfileChanged)
+	Q_PROPERTY(deco_mode deco READ deco WRITE setDecoMode NOTIFY decoModeChanged)
+
 public:
 	TechnicalDetailsSettings(QObject *parent);
 
@@ -160,6 +162,7 @@ public:
 	bool displayUnusedTanks() const;
 	bool showAverageDepth() const;
 	bool showPicturesInProfile() const;
+	deco_mode deco() const;
 
 public slots:
 	void setMod(bool value);
@@ -187,6 +190,7 @@ public slots:
 	void setDisplayUnusedTanks(bool value);
 	void setShowAverageDepth(bool value);
 	void setShowPicturesInProfile(bool value);
+	void setDecoMode(deco_mode d);
 
 signals:
 	void modpO2Changed(double value);
@@ -214,6 +218,7 @@ signals:
 	void displayUnusedTanksChanged(bool value);
 	void showAverageDepthChanged(bool value);
 	void showPicturesInProfileChanged(bool value);
+	void decoModeChanged(deco_mode m);
 
 private:
 	const QString group = QStringLiteral("TecDetails");
diff --git a/desktop-widgets/preferences/preferences_graph.cpp b/desktop-widgets/preferences/preferences_graph.cpp
index 8f3e5e7..132db81 100644
--- a/desktop-widgets/preferences/preferences_graph.cpp
+++ b/desktop-widgets/preferences/preferences_graph.cpp
@@ -25,13 +25,14 @@ void PreferencesGraph::refreshSettings()
 	ui->maxpo2->setValue(prefs.modpO2);
 	ui->red_ceiling->setChecked(prefs.redceiling);
 
-	if (prefs.deco_mode == BUEHLMANN) {
+	if (prefs.display_deco_mode == BUEHLMANN) {
 		ui->buehlmann->setChecked(true);
 		ui->vpmb->setChecked(false);
 	} else {
 		ui->buehlmann->setChecked(false);
 		ui->vpmb->setChecked(false);
 	}
+
 	ui->gflow->setValue(prefs.gflow);
 	ui->gfhigh->setValue(prefs.gfhigh);
 	ui->vpmb_conservatism->setValue(prefs.vpmb_conservatism);
@@ -70,6 +71,7 @@ void PreferencesGraph::syncSettings()
 	tech->setShowCCRSensors(ui->show_ccr_sensors->isChecked());
 	tech->setDisplayUnusedTanks(ui->display_unused_tanks->isChecked());
 	tech->setShowAverageDepth(ui->show_average_depth->isChecked());
+	tech->setDecoMode(ui->vpmb->isChecked() ? VPMB : BUEHLMANN);
 }
 
 #define DANGER_GF (gf > 100) ? "* { color: red; }" : ""
diff --git a/profile-widget/divetooltipitem.cpp b/profile-widget/divetooltipitem.cpp
index cb46e89..e55ceb2 100644
--- a/profile-widget/divetooltipitem.cpp
+++ b/profile-widget/divetooltipitem.cpp
@@ -263,8 +263,11 @@ void ToolTipItem::refresh(const QPointF &pos)
 	painter.setBrush(QColor(Qt::red));
 	painter.drawRect(0,0,16,10);
 	if (entry) {
+		ProfileWidget2 *view = qobject_cast<ProfileWidget2*>(scene()->views().first());
+		Q_ASSERT(view);
+
 		painter.setPen(QColor(0, 0, 0, 255));
-		if (prefs.deco_mode == BUEHLMANN)
+		if ((view->currentState == ProfileWidget2::PLAN && prefs.deco_mode == BUEHLMANN) || prefs.display_deco_mode == BUEHLMANN)
 			painter.drawLine(0, 60 - entry->gfline / 2, 16, 60 - entry->gfline / 2);
 		painter.drawLine(0, 60 - AMB_PERCENTAGE * (entry->pressures.n2 + entry->pressures.he) / entry->ambpressure / 2,
 				16, 60 - AMB_PERCENTAGE * (entry->pressures.n2 + entry->pressures.he) / entry->ambpressure /2);
diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp
index 65bdb09..44e06ea 100644
--- a/profile-widget/profilewidget2.cpp
+++ b/profile-widget/profilewidget2.cpp
@@ -558,7 +558,7 @@ void ProfileWidget2::plotDive(struct dive *d, bool force)
 		// this copies the dive and makes copies of all the relevant additional data
 		copy_dive(d, &displayed_dive);
 #ifndef SUBSURFACE_MOBILE
-		if (prefs.deco_mode == VPMB)
+		if ((currentState == PLAN && prefs.deco_mode == VPMB) || prefs.display_deco_mode == VPMB)
 			decoModelParameters->setText(QString("VPM-B +%1").arg(prefs.vpmb_conservatism));
 		else
 			decoModelParameters->setText(QString("GF %1/%2").arg(prefs.gflow).arg(prefs.gfhigh));
@@ -570,7 +570,7 @@ void ProfileWidget2::plotDive(struct dive *d, bool force)
 			plannerModel->deleteTemporaryPlan();
 			return;
 		}
-		if (prefs.deco_mode == VPMB)
+		if ((currentState == PLAN && prefs.deco_mode == VPMB) || prefs.display_deco_mode == VPMB)
 			decoModelParameters->setText(QString("VPM-B +%1").arg(diveplan.vpmb_conservatism));
 		else
 			decoModelParameters->setText(QString("GF %1/%2").arg(diveplan.gflow).arg(diveplan.gfhigh));
-- 
2.10.2

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

Reply via email to