[PATCH 1/2] Untagle DiveCartesianAxis from MainWindow

Lubomir I. Ivanov neolit123 at gmail.com
Fri Nov 6 03:54:35 PST 2015


From: "Lubomir I. Ivanov" <neolit123 at gmail.com>

DiveCartesianAxis and derivatives can recieve
ProfileWidget2 as an instance in their constructor.

Signed-off-by: Lubomir I. Ivanov <neolit123 at gmail.com>
---
i went old school and against the c++11 inheritable constructors.
more bloat, but more portability.
---
 profile-widget/divecartesianaxis.cpp | 19 ++++++++++++++-----
 profile-widget/divecartesianaxis.h   | 12 ++++++++----
 profile-widget/profilewidget2.cpp    | 14 +++++++-------
 3 files changed, 29 insertions(+), 16 deletions(-)

diff --git a/profile-widget/divecartesianaxis.cpp b/profile-widget/divecartesianaxis.cpp
index 0336ed1..4a7b029 100644
--- a/profile-widget/divecartesianaxis.cpp
+++ b/profile-widget/divecartesianaxis.cpp
@@ -74,10 +74,11 @@ void DiveCartesianAxis::setTextColor(const QColor &color)
 	textColor = color;
 }
 
-DiveCartesianAxis::DiveCartesianAxis() : QObject(),
+DiveCartesianAxis::DiveCartesianAxis(ProfileWidget2 *widget) : QObject(),
 	QGraphicsLineItem(),
 	printMode(false),
 	unitSystem(0),
+	profileWidget(widget),
 	orientation(LeftToRight),
 	min(0),
 	max(0),
@@ -149,7 +150,7 @@ void emptyList(QList<T *> &list, double steps)
 void DiveCartesianAxis::updateTicks(color_indice_t color)
 {
 #ifndef SUBSURFACE_MOBILE
-	if (!scene() || (!changed && !MainWindow::instance()->graphics()->getPrintMode()))
+	if (!scene() || (!changed && !profileWidget->getPrintMode()))
 #else
 	if (!scene() || !changed)
 #endif
@@ -382,7 +383,7 @@ QColor DepthAxis::colorForValue(double value)
 	return QColor(Qt::red);
 }
 
-DepthAxis::DepthAxis()
+DepthAxis::DepthAxis(ProfileWidget2 *widget) : DiveCartesianAxis(widget)
 {
 	connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged()));
 	changed = true;
@@ -399,6 +400,10 @@ void DepthAxis::settingsChanged()
 	unitSystem = prefs.units.length;
 }
 
+TimeAxis::TimeAxis(ProfileWidget2 *widget) : DiveCartesianAxis(widget)
+{
+}
+
 QColor TimeAxis::colorForValue(double value)
 {
 	Q_UNUSED(value);
@@ -423,13 +428,17 @@ void TimeAxis::updateTicks()
 	}
 }
 
+TemperatureAxis::TemperatureAxis(ProfileWidget2 *widget) : DiveCartesianAxis(widget)
+{
+}
+
 QString TemperatureAxis::textForValue(double value)
 {
 	return QString::number(mkelvin_to_C((int)value));
 }
 
-PartialGasPressureAxis::PartialGasPressureAxis() :
-	DiveCartesianAxis(),
+PartialGasPressureAxis::PartialGasPressureAxis(ProfileWidget2 *widget) :
+	DiveCartesianAxis(widget),
 	model(NULL)
 {
 	connect(PreferencesDialog::instance(), SIGNAL(settingsChanged()), this, SLOT(settingsChanged()));
diff --git a/profile-widget/divecartesianaxis.h b/profile-widget/divecartesianaxis.h
index cc7d0bc..4e06b9a 100644
--- a/profile-widget/divecartesianaxis.h
+++ b/profile-widget/divecartesianaxis.h
@@ -4,6 +4,7 @@
 #include <QObject>
 #include <QGraphicsLineItem>
 #include "subsurface-core/color.h"
+#include "profilewidget2.h"
 
 class QPropertyAnimation;
 class DiveTextItem;
@@ -26,7 +27,7 @@ public:
 		LeftToRight,
 		RightToLeft
 	};
-	DiveCartesianAxis();
+	DiveCartesianAxis(ProfileWidget2 *widget);
 	virtual ~DiveCartesianAxis();
 	void setPrintMode(bool mode);
 	void setMinimum(double minimum);
@@ -60,6 +61,7 @@ signals:
 	void maxChanged();
 
 protected:
+	ProfileWidget2 *profileWidget;
 	virtual QString textForValue(double value);
 	virtual QColor colorForValue(double value);
 	Orientation orientation;
@@ -80,8 +82,7 @@ protected:
 class DepthAxis : public DiveCartesianAxis {
 	Q_OBJECT
 public:
-	DepthAxis();
-
+	DepthAxis(ProfileWidget2 *widget);
 protected:
 	QString textForValue(double value);
 	QColor colorForValue(double value);
@@ -93,6 +94,7 @@ slots:
 class TimeAxis : public DiveCartesianAxis {
 	Q_OBJECT
 public:
+	TimeAxis(ProfileWidget2 *widget);
 	virtual void updateTicks();
 
 protected:
@@ -102,6 +104,8 @@ protected:
 
 class TemperatureAxis : public DiveCartesianAxis {
 	Q_OBJECT
+public:
+	TemperatureAxis(ProfileWidget2 *widget);
 protected:
 	QString textForValue(double value);
 };
@@ -109,7 +113,7 @@ protected:
 class PartialGasPressureAxis : public DiveCartesianAxis {
 	Q_OBJECT
 public:
-	PartialGasPressureAxis();
+	PartialGasPressureAxis(ProfileWidget2 *widget);
 	void setModel(DivePlotDataModel *model);
 public
 slots:
diff --git a/profile-widget/profilewidget2.cpp b/profile-widget/profilewidget2.cpp
index d485d4d..6b83508 100644
--- a/profile-widget/profilewidget2.cpp
+++ b/profile-widget/profilewidget2.cpp
@@ -82,14 +82,14 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent),
 	backgroundFile(":poster"),
 	toolTipItem(new ToolTipItem()),
 	isPlotZoomed(prefs.zoomed_plot),// no! bad use of prefs. 'PreferencesDialog::loadSettings' NOT CALLED yet.
-	profileYAxis(new DepthAxis()),
-	gasYAxis(new PartialGasPressureAxis()),
-	temperatureAxis(new TemperatureAxis()),
-	timeAxis(new TimeAxis()),
+	profileYAxis(new DepthAxis(this)),
+	gasYAxis(new PartialGasPressureAxis(this)),
+	temperatureAxis(new TemperatureAxis(this)),
+	timeAxis(new TimeAxis(this)),
 	diveProfileItem(new DiveProfileItem()),
 	temperatureItem(new DiveTemperatureItem()),
 	meanDepthItem(new DiveMeanDepthItem()),
-	cylinderPressureAxis(new DiveCartesianAxis()),
+	cylinderPressureAxis(new DiveCartesianAxis(this)),
 	gasPressureItem(new DiveGasPressureItem()),
 	diveComputerText(new DiveTextItem()),
 	diveCeiling(new DiveCalculatedCeiling()),
@@ -102,9 +102,9 @@ ProfileWidget2::ProfileWidget2(QWidget *parent) : QGraphicsView(parent),
 	ccrsensor1GasItem(new PartialPressureGasItem()),
 	ccrsensor2GasItem(new PartialPressureGasItem()),
 	ccrsensor3GasItem(new PartialPressureGasItem()),
-	heartBeatAxis(new DiveCartesianAxis()),
+	heartBeatAxis(new DiveCartesianAxis(this)),
 	heartBeatItem(new DiveHeartrateItem()),
-	percentageAxis(new DiveCartesianAxis()),
+	percentageAxis(new DiveCartesianAxis(this)),
 	ambPressureItem(new DiveAmbPressureItem()),
 	gflineItem(new DiveGFLineItem()),
 	mouseFollowerVertical(new DiveLineItem()),
-- 
1.7.11.msysgit.0



More information about the subsurface mailing list