mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Recalculate the decompression if the date / time of a dive changes
The pre-existing tissue load going into a dive can change if the start time of a dive changes. Therefore we need to recalculate the ceiling when editing start time (or date) of a dive. Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									e1db94ea0c
								
							
						
					
					
						commit
						71d21c375c
					
				
					 4 changed files with 15 additions and 1 deletions
				
			
		| 
						 | 
					@ -978,6 +978,7 @@ void MainTab::on_dateEdit_dateChanged(const QDate &date)
 | 
				
			||||||
	dateTime.setTimeSpec(Qt::UTC);
 | 
						dateTime.setTimeSpec(Qt::UTC);
 | 
				
			||||||
	dateTime.setDate(date);
 | 
						dateTime.setDate(date);
 | 
				
			||||||
	DivePlannerPointsModel::instance()->getDiveplan().when = displayed_dive.when = dateTime.toTime_t();
 | 
						DivePlannerPointsModel::instance()->getDiveplan().when = displayed_dive.when = dateTime.toTime_t();
 | 
				
			||||||
 | 
						emit dateTimeChanged();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void MainTab::on_timeEdit_timeChanged(const QTime &time)
 | 
					void MainTab::on_timeEdit_timeChanged(const QTime &time)
 | 
				
			||||||
| 
						 | 
					@ -989,6 +990,7 @@ void MainTab::on_timeEdit_timeChanged(const QTime &time)
 | 
				
			||||||
	dateTime.setTimeSpec(Qt::UTC);
 | 
						dateTime.setTimeSpec(Qt::UTC);
 | 
				
			||||||
	dateTime.setTime(time);
 | 
						dateTime.setTime(time);
 | 
				
			||||||
	DivePlannerPointsModel::instance()->getDiveplan().when = displayed_dive.when = dateTime.toTime_t();
 | 
						DivePlannerPointsModel::instance()->getDiveplan().when = displayed_dive.when = dateTime.toTime_t();
 | 
				
			||||||
 | 
						emit dateTimeChanged();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// changing the tags on multiple dives is semantically strange - what's the right thing to do?
 | 
					// changing the tags on multiple dives is semantically strange - what's the right thing to do?
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -53,6 +53,7 @@ public:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
signals:
 | 
					signals:
 | 
				
			||||||
	void addDiveFinished();
 | 
						void addDiveFinished();
 | 
				
			||||||
 | 
						void dateTimeChanged();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
public
 | 
					public
 | 
				
			||||||
slots:
 | 
					slots:
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,6 +11,7 @@
 | 
				
			||||||
#include "helpers.h"
 | 
					#include "helpers.h"
 | 
				
			||||||
#include "diveplanner.h"
 | 
					#include "diveplanner.h"
 | 
				
			||||||
#include "libdivecomputer/parser.h"
 | 
					#include "libdivecomputer/parser.h"
 | 
				
			||||||
 | 
					#include "mainwindow.h"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <QPen>
 | 
					#include <QPen>
 | 
				
			||||||
#include <QPainter>
 | 
					#include <QPainter>
 | 
				
			||||||
| 
						 | 
					@ -675,6 +676,7 @@ DiveCalculatedCeiling::DiveCalculatedCeiling() : is3mIncrement(false), gradientF
 | 
				
			||||||
	gradientFactor->setY(0);
 | 
						gradientFactor->setY(0);
 | 
				
			||||||
	gradientFactor->setBrush(getColor(PRESSURE_TEXT));
 | 
						gradientFactor->setBrush(getColor(PRESSURE_TEXT));
 | 
				
			||||||
	gradientFactor->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
 | 
						gradientFactor->setAlignment(Qt::AlignHCenter | Qt::AlignBottom);
 | 
				
			||||||
 | 
						connect(MainWindow::instance()->information(), SIGNAL(dateTimeChanged()), this, SLOT(recalc()));
 | 
				
			||||||
	settingsChanged();
 | 
						settingsChanged();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -757,11 +759,16 @@ void DiveReportedCeiling::modelDataChanged(const QModelIndex &topLeft, const QMo
 | 
				
			||||||
	setBrush(pat);
 | 
						setBrush(pat);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void DiveCalculatedCeiling::recalc()
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						dataModel->calculateDecompression();
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void DiveCalculatedCeiling::settingsChanged()
 | 
					void DiveCalculatedCeiling::settingsChanged()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	if (dataModel && is3mIncrement != prefs.calcceiling3m) {
 | 
						if (dataModel && is3mIncrement != prefs.calcceiling3m) {
 | 
				
			||||||
		// recalculate that part.
 | 
							// recalculate that part.
 | 
				
			||||||
		dataModel->calculateDecompression();
 | 
							recalc();
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	is3mIncrement = prefs.calcceiling3m;
 | 
						is3mIncrement = prefs.calcceiling3m;
 | 
				
			||||||
	setVisible(prefs.calcceiling);
 | 
						setVisible(prefs.calcceiling);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -162,6 +162,10 @@ public:
 | 
				
			||||||
	virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
 | 
						virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
 | 
				
			||||||
	virtual void settingsChanged();
 | 
						virtual void settingsChanged();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public
 | 
				
			||||||
 | 
					slots:
 | 
				
			||||||
 | 
						void recalc();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
private:
 | 
					private:
 | 
				
			||||||
	bool is3mIncrement;
 | 
						bool is3mIncrement;
 | 
				
			||||||
	DiveTextItem *gradientFactor;
 | 
						DiveTextItem *gradientFactor;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue