| 
									
										
										
										
											2017-04-27 20:26:36 +02:00
										 |  |  | // SPDX-License-Identifier: GPL-2.0
 | 
					
						
							| 
									
										
										
										
											2014-01-14 14:30:13 -02:00
										 |  |  | #ifndef PROFILEWIDGET2_H
 | 
					
						
							|  |  |  | #define PROFILEWIDGET2_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <QGraphicsView>
 | 
					
						
							| 
									
										
										
										
											2018-04-06 17:58:16 +02:00
										 |  |  | #include <vector>
 | 
					
						
							|  |  |  | #include <memory>
 | 
					
						
							| 
									
										
										
										
											2014-01-14 14:30:13 -02:00
										 |  |  | 
 | 
					
						
							|  |  |  | // /* The idea of this widget is to display and edit the profile.
 | 
					
						
							|  |  |  | //  * It has:
 | 
					
						
							|  |  |  | //  * 1 - ToolTip / Legend item, displays every information of the current mouse position on it, plus the legends of the maps.
 | 
					
						
							|  |  |  | //  * 2 - ToolBox, displays the QActions that are used to do special stuff on the profile ( like activating the plugins. )
 | 
					
						
							|  |  |  | //  * 3 - Cartesian Axis for depth ( y )
 | 
					
						
							|  |  |  | //  * 4 - Cartesian Axis for Gases ( y )
 | 
					
						
							|  |  |  | //  * 5 - Cartesian Axis for Time  ( x )
 | 
					
						
							|  |  |  | //  *
 | 
					
						
							|  |  |  | //  * It needs to be dynamic, things should *flow* on it, not just appear / disappear.
 | 
					
						
							|  |  |  | //  */
 | 
					
						
							| 
									
										
										
										
											2016-04-04 22:02:03 -07:00
										 |  |  | #include "profile-widget/divelineitem.h"
 | 
					
						
							|  |  |  | #include "profile-widget/diveprofileitem.h"
 | 
					
						
							|  |  |  | #include "core/display.h"
 | 
					
						
							| 
									
										
										
										
											2018-01-10 17:28:24 +01:00
										 |  |  | #include "core/color.h"
 | 
					
						
							| 
									
										
										
										
											2020-04-17 23:18:58 +02:00
										 |  |  | #include "core/pictureobj.h"
 | 
					
						
							| 
									
										
										
										
											2018-06-30 11:36:37 +02:00
										 |  |  | #include "core/units.h"
 | 
					
						
							| 
									
										
										
										
											2014-01-16 15:02:32 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 15:20:03 -03:00
										 |  |  | class RulerItem2; | 
					
						
							| 
									
										
										
										
											2014-02-10 20:28:33 -08:00
										 |  |  | struct dive; | 
					
						
							|  |  |  | struct plot_info; | 
					
						
							| 
									
										
										
										
											2014-02-05 14:34:45 -02:00
										 |  |  | class ToolTipItem; | 
					
						
							| 
									
										
										
										
											2014-01-21 17:34:36 -02:00
										 |  |  | class DiveReportedCeiling; | 
					
						
							| 
									
										
										
										
											2014-01-21 10:48:26 -02:00
										 |  |  | class DiveTextItem; | 
					
						
							| 
									
										
										
										
											2014-01-16 18:39:13 -02:00
										 |  |  | class TemperatureAxis; | 
					
						
							| 
									
										
										
										
											2014-01-16 15:02:32 -02:00
										 |  |  | class DiveEventItem; | 
					
						
							| 
									
										
										
										
											2014-02-10 20:28:33 -08:00
										 |  |  | class DivePlotDataModel; | 
					
						
							|  |  |  | class DivePixmapItem; | 
					
						
							|  |  |  | class DiveRectItem; | 
					
						
							|  |  |  | class DepthAxis; | 
					
						
							|  |  |  | class DiveCartesianAxis; | 
					
						
							|  |  |  | class DiveProfileItem; | 
					
						
							|  |  |  | class TimeAxis; | 
					
						
							|  |  |  | class DiveTemperatureItem; | 
					
						
							| 
									
										
										
										
											2014-02-23 15:28:31 -08:00
										 |  |  | class DiveHeartrateItem; | 
					
						
							| 
									
										
										
										
											2014-02-10 20:28:33 -08:00
										 |  |  | class DiveGasPressureItem; | 
					
						
							|  |  |  | class DiveCalculatedCeiling; | 
					
						
							|  |  |  | class DiveCalculatedTissue; | 
					
						
							|  |  |  | class PartialPressureGasItem; | 
					
						
							|  |  |  | class PartialGasPressureAxis; | 
					
						
							|  |  |  | class AbstractProfilePolygonItem; | 
					
						
							| 
									
										
										
										
											2014-08-14 18:22:27 -06:00
										 |  |  | class TankItem; | 
					
						
							| 
									
										
										
										
											2014-05-21 21:18:10 -03:00
										 |  |  | class DiveHandler; | 
					
						
							|  |  |  | class QGraphicsSimpleTextItem; | 
					
						
							|  |  |  | class QModelIndex; | 
					
						
							| 
									
										
										
										
											2014-06-08 12:43:04 -03:00
										 |  |  | class DivePictureItem; | 
					
						
							| 
									
										
										
										
											2014-01-14 14:30:13 -02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class ProfileWidget2 : public QGraphicsView { | 
					
						
							|  |  |  | 	Q_OBJECT | 
					
						
							|  |  |  | public: | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	enum State { | 
					
						
							|  |  |  | 		EMPTY, | 
					
						
							|  |  |  | 		PROFILE, | 
					
						
							|  |  |  | 		EDIT, | 
					
						
							|  |  |  | 		ADD, | 
					
						
							|  |  |  | 		PLAN, | 
					
						
							|  |  |  | 		INVALID | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 	enum Items { | 
					
						
							|  |  |  | 		BACKGROUND, | 
					
						
							|  |  |  | 		PROFILE_Y_AXIS, | 
					
						
							|  |  |  | 		GAS_Y_AXIS, | 
					
						
							|  |  |  | 		TIME_AXIS, | 
					
						
							|  |  |  | 		DEPTH_CONTROLLER, | 
					
						
							|  |  |  | 		TIME_CONTROLLER, | 
					
						
							|  |  |  | 		COLUMNS | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2014-01-14 14:30:13 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-03-07 12:42:13 -03:00
										 |  |  | 	ProfileWidget2(QWidget *parent = 0); | 
					
						
							| 
									
										
										
										
											2019-07-15 20:41:42 +02:00
										 |  |  | 	~ProfileWidget2(); | 
					
						
							| 
									
										
										
										
											2015-10-11 14:21:13 +03:00
										 |  |  | 	void resetZoom(); | 
					
						
							| 
									
										
										
										
											2018-07-15 17:56:18 +02:00
										 |  |  | 	void scale(qreal sx, qreal sy); | 
					
						
							| 
									
										
										
										
											2020-04-13 13:45:52 +02:00
										 |  |  | 	void plotDive(const struct dive *d, bool force = false, bool clearPictures = false, bool instant = false); | 
					
						
							| 
									
										
										
										
											2018-01-10 17:08:56 +01:00
										 |  |  | 	void setupItem(AbstractProfilePolygonItem *item, DiveCartesianAxis *vAxis, int vData, int hData, int zValue); | 
					
						
							| 
									
										
										
										
											2014-03-25 23:34:09 +02:00
										 |  |  | 	void setPrintMode(bool mode, bool grayscale = false); | 
					
						
							| 
									
										
										
										
											2014-07-09 13:09:52 -07:00
										 |  |  | 	bool getPrintMode(); | 
					
						
							| 
									
										
										
										
											2014-05-22 11:40:22 -07:00
										 |  |  | 	bool isPointOutOfBoundaries(const QPointF &point) const; | 
					
						
							| 
									
										
										
										
											2014-05-26 15:17:34 -07:00
										 |  |  | 	bool isPlanner(); | 
					
						
							| 
									
										
										
										
											2014-07-09 13:09:52 -07:00
										 |  |  | 	double getFontPrintScale(); | 
					
						
							|  |  |  | 	void setFontPrintScale(double scale); | 
					
						
							| 
									
										
										
										
											2015-11-05 16:05:44 -08:00
										 |  |  | #ifndef SUBSURFACE_MOBILE
 | 
					
						
							| 
									
										
										
										
											2018-09-29 22:13:44 +02:00
										 |  |  | 	bool eventFilter(QObject *, QEvent *) override; | 
					
						
							| 
									
										
										
										
											2015-11-05 16:05:44 -08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2015-01-31 10:32:02 -08:00
										 |  |  | 	void setToolTipVisibile(bool visible); | 
					
						
							| 
									
										
										
										
											2014-05-21 14:24:19 -03:00
										 |  |  | 	State currentState; | 
					
						
							| 
									
										
										
										
											2019-07-10 22:40:06 +02:00
										 |  |  | 	int animSpeed; | 
					
						
							| 
									
										
										
										
											2014-01-14 14:30:13 -02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-07-29 12:21:27 -07:00
										 |  |  | signals: | 
					
						
							|  |  |  | 	void fontPrintScaleChanged(double scale); | 
					
						
							| 
									
										
										
										
											2015-11-05 09:32:19 -08:00
										 |  |  | 	void enableToolbar(bool enable); | 
					
						
							| 
									
										
										
										
											2015-11-05 11:12:22 -08:00
										 |  |  | 	void enableShortcuts(); | 
					
						
							|  |  |  | 	void disableShortcuts(bool paste); | 
					
						
							| 
									
										
										
										
											2015-11-05 13:44:19 -08:00
										 |  |  | 	void editCurrentDive(); | 
					
						
							| 
									
										
										
										
											2015-11-06 14:40:20 +02:00
										 |  |  | 	void dateTimeChangedItems(); | 
					
						
							| 
									
										
										
										
											2015-07-29 12:21:27 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | public | 
					
						
							|  |  |  | slots: // Necessary to call from QAction's signals.
 | 
					
						
							| 
									
										
										
										
											2015-11-06 14:40:20 +02:00
										 |  |  | 	void dateTimeChanged(); | 
					
						
							| 
									
										
										
										
											2014-01-14 14:30:13 -02:00
										 |  |  | 	void settingsChanged(); | 
					
						
							| 
									
										
										
										
											2016-01-25 15:54:23 -02:00
										 |  |  | 	void actionRequestedReplot(bool triggered); | 
					
						
							| 
									
										
										
										
											2014-02-07 16:34:42 -02:00
										 |  |  | 	void setEmptyState(); | 
					
						
							|  |  |  | 	void setProfileState(); | 
					
						
							| 
									
										
										
										
											2015-11-05 16:05:44 -08:00
										 |  |  | #ifndef SUBSURFACE_MOBILE
 | 
					
						
							| 
									
										
										
										
											2018-01-10 13:55:29 +01:00
										 |  |  | 	void plotPictures(); | 
					
						
							| 
									
										
										
										
											2020-04-17 23:18:58 +02:00
										 |  |  | 	void picturesRemoved(dive *d, QVector<QString> filenames); | 
					
						
							|  |  |  | 	void picturesAdded(dive *d, QVector<PictureObj> pics); | 
					
						
							| 
									
										
										
										
											2016-02-06 13:25:58 -08:00
										 |  |  | 	void setPlanState(); | 
					
						
							|  |  |  | 	void setAddState(); | 
					
						
							| 
									
										
										
										
											2014-05-21 21:18:10 -03:00
										 |  |  | 	void pointInserted(const QModelIndex &parent, int start, int end); | 
					
						
							|  |  |  | 	void pointsRemoved(const QModelIndex &, int start, int end); | 
					
						
							| 
									
										
										
										
											2018-07-15 17:56:18 +02:00
										 |  |  | 	void updateThumbnail(QString filename, QImage thumbnail, duration_t duration); | 
					
						
							| 
									
										
										
										
											2020-03-03 22:42:51 +01:00
										 |  |  | 	void profileChanged(dive *d); | 
					
						
							| 
									
										
										
										
											2020-04-14 22:07:00 +02:00
										 |  |  | 	void pictureOffsetChanged(dive *d, QString filename, offset_t offset); | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-23 20:51:30 -03:00
										 |  |  | 	/* this is called for every move on the handlers. maybe we can speed up this a bit? */ | 
					
						
							|  |  |  | 	void recreatePlannedDive(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-05-24 12:39:40 -03:00
										 |  |  | 	/* key press handlers */ | 
					
						
							|  |  |  | 	void keyEscAction(); | 
					
						
							|  |  |  | 	void keyDeleteAction(); | 
					
						
							|  |  |  | 	void keyUpAction(); | 
					
						
							|  |  |  | 	void keyDownAction(); | 
					
						
							|  |  |  | 	void keyLeftAction(); | 
					
						
							|  |  |  | 	void keyRightAction(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-30 19:08:16 -03:00
										 |  |  | 	void divePlannerHandlerClicked(); | 
					
						
							|  |  |  | 	void divePlannerHandlerReleased(); | 
					
						
							| 
									
										
										
										
											2015-11-05 16:05:44 -08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2015-01-01 16:28:37 -08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-13 19:37:24 +02:00
										 |  |  | private: | 
					
						
							| 
									
										
										
										
											2018-09-29 22:13:44 +02:00
										 |  |  | 	void resizeEvent(QResizeEvent *event) override; | 
					
						
							| 
									
										
										
										
											2016-02-06 13:25:58 -08:00
										 |  |  | #ifndef SUBSURFACE_MOBILE
 | 
					
						
							| 
									
										
										
										
											2018-09-29 22:13:44 +02:00
										 |  |  | 	void wheelEvent(QWheelEvent *event) override; | 
					
						
							|  |  |  | 	void mouseMoveEvent(QMouseEvent *event) override; | 
					
						
							|  |  |  | 	void contextMenuEvent(QContextMenuEvent *event) override; | 
					
						
							|  |  |  | 	void mouseDoubleClickEvent(QMouseEvent *event) override; | 
					
						
							|  |  |  | 	void mousePressEvent(QMouseEvent *event) override; | 
					
						
							|  |  |  | 	void mouseReleaseEvent(QMouseEvent *event) override; | 
					
						
							| 
									
										
										
										
											2016-02-06 13:25:58 -08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2018-09-29 22:13:44 +02:00
										 |  |  | 	void dropEvent(QDropEvent *event) override; | 
					
						
							|  |  |  | 	void dragEnterEvent(QDragEnterEvent *event) override; | 
					
						
							|  |  |  | 	void dragMoveEvent(QDragMoveEvent *event) override; | 
					
						
							| 
									
										
										
										
											2015-11-03 21:17:50 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-12 12:48:38 +02:00
										 |  |  | 	void replot(); | 
					
						
							| 
									
										
										
										
											2020-01-30 15:03:48 +01:00
										 |  |  | 	void changeGas(int tank, int seconds); | 
					
						
							| 
									
										
										
										
											2014-02-07 15:32:39 -02:00
										 |  |  | 	void fixBackgroundPos(); | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	void scrollViewTo(const QPoint &pos); | 
					
						
							| 
									
										
										
										
											2014-02-07 15:32:39 -02:00
										 |  |  | 	void setupSceneAndFlags(); | 
					
						
							|  |  |  | 	void setupItemSizes(); | 
					
						
							|  |  |  | 	void addItemsToScene(); | 
					
						
							|  |  |  | 	void setupItemOnScene(); | 
					
						
							| 
									
										
										
										
											2014-05-21 21:23:19 -03:00
										 |  |  | 	void disconnectTemporaryConnections(); | 
					
						
							| 
									
										
										
										
											2014-11-19 22:31:28 +00:00
										 |  |  | 	struct plot_data *getEntryFromPos(QPointF pos); | 
					
						
							| 
									
										
										
										
											2018-01-10 16:50:57 +01:00
										 |  |  | 	void addActionShortcut(const Qt::Key shortcut, void (ProfileWidget2::*slot)()); | 
					
						
							| 
									
										
										
										
											2018-01-10 17:33:20 +01:00
										 |  |  | 	void createPPGas(PartialPressureGasItem *item, int verticalColumn, color_index_t color, color_index_t colorAlert, | 
					
						
							| 
									
										
										
										
											2018-09-02 22:26:19 +02:00
										 |  |  | 			 const double *thresholdSettingsMin, const double *thresholdSettingsMax); | 
					
						
							| 
									
										
										
										
											2018-04-06 17:58:16 +02:00
										 |  |  | 	void clearPictures(); | 
					
						
							| 
									
										
										
										
											2020-11-25 07:40:09 +01:00
										 |  |  | #ifndef SUBSURFACE_MOBILE
 | 
					
						
							|  |  |  | 	void clearHandlers(); | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2019-02-03 13:28:33 +01:00
										 |  |  | 	void plotPicturesInternal(const struct dive *d, bool synchronous); | 
					
						
							| 
									
										
										
										
											2020-03-02 21:48:53 +01:00
										 |  |  | 	void addDivemodeSwitch(int seconds, int divemode); | 
					
						
							| 
									
										
										
										
											2020-03-02 22:02:33 +01:00
										 |  |  | 	void addBookmark(int seconds); | 
					
						
							|  |  |  | 	void splitDive(int seconds); | 
					
						
							|  |  |  | 	void addSetpointChange(int seconds); | 
					
						
							| 
									
										
										
										
											2020-03-02 22:23:40 +01:00
										 |  |  | 	void removeEvent(DiveEventItem *item); | 
					
						
							|  |  |  | 	void hideEvents(DiveEventItem *item); | 
					
						
							|  |  |  | 	void editName(DiveEventItem *item); | 
					
						
							| 
									
										
										
										
											2020-03-02 22:48:12 +01:00
										 |  |  | 	void unhideEvents(); | 
					
						
							|  |  |  | 	void makeFirstDC(); | 
					
						
							|  |  |  | 	void deleteCurrentDC(); | 
					
						
							|  |  |  | 	void splitCurrentDC(); | 
					
						
							| 
									
										
										
										
											2020-04-13 19:37:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-01-15 12:00:23 -02:00
										 |  |  | 	DivePlotDataModel *dataModel; | 
					
						
							| 
									
										
										
										
											2014-02-04 21:47:50 -02:00
										 |  |  | 	int zoomLevel; | 
					
						
							| 
									
										
										
										
											2014-03-10 17:59:02 +02:00
										 |  |  | 	qreal zoomFactor; | 
					
						
							| 
									
										
										
										
											2014-02-07 16:34:42 -02:00
										 |  |  | 	DivePixmapItem *background; | 
					
						
							|  |  |  | 	QString backgroundFile; | 
					
						
							| 
									
										
										
										
											2016-02-06 13:25:58 -08:00
										 |  |  | #ifndef SUBSURFACE_MOBILE
 | 
					
						
							| 
									
										
										
										
											2014-02-05 14:34:45 -02:00
										 |  |  | 	ToolTipItem *toolTipItem; | 
					
						
							| 
									
										
										
										
											2016-02-06 13:25:58 -08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2014-02-27 12:39:53 -03:00
										 |  |  | 	bool isPlotZoomed; | 
					
						
							| 
									
										
										
										
											2014-01-16 15:02:32 -02:00
										 |  |  | 	// All those here should probably be merged into one structure,
 | 
					
						
							|  |  |  | 	// So it's esyer to replicate for more dives later.
 | 
					
						
							|  |  |  | 	// In the meantime, keep it here.
 | 
					
						
							| 
									
										
										
										
											2014-11-19 22:28:16 +00:00
										 |  |  | 	struct plot_info plotInfo; | 
					
						
							| 
									
										
										
										
											2014-02-09 19:11:17 +01:00
										 |  |  | 	DepthAxis *profileYAxis; | 
					
						
							| 
									
										
										
										
											2014-01-27 15:14:42 -02:00
										 |  |  | 	PartialGasPressureAxis *gasYAxis; | 
					
						
							| 
									
										
										
										
											2014-01-16 18:39:13 -02:00
										 |  |  | 	TemperatureAxis *temperatureAxis; | 
					
						
							| 
									
										
										
										
											2014-01-15 12:00:23 -02:00
										 |  |  | 	TimeAxis *timeAxis; | 
					
						
							|  |  |  | 	DiveProfileItem *diveProfileItem; | 
					
						
							| 
									
										
										
										
											2014-01-16 18:39:13 -02:00
										 |  |  | 	DiveTemperatureItem *temperatureItem; | 
					
						
							| 
									
										
										
										
											2015-01-01 16:28:37 -08:00
										 |  |  | 	DiveMeanDepthItem *meanDepthItem; | 
					
						
							| 
									
										
										
										
											2014-01-17 14:28:59 -02:00
										 |  |  | 	DiveCartesianAxis *cylinderPressureAxis; | 
					
						
							| 
									
										
										
										
											2014-01-17 15:34:15 -02:00
										 |  |  | 	DiveGasPressureItem *gasPressureItem; | 
					
						
							| 
									
										
										
										
											2014-02-27 20:09:57 -08:00
										 |  |  | 	QList<DiveEventItem *> eventItems; | 
					
						
							| 
									
										
										
										
											2014-01-21 10:48:26 -02:00
										 |  |  | 	DiveTextItem *diveComputerText; | 
					
						
							| 
									
										
										
										
											2016-02-06 13:25:58 -08:00
										 |  |  | 	DiveReportedCeiling *reportedCeiling; | 
					
						
							| 
									
										
										
										
											2014-01-23 17:54:34 -02:00
										 |  |  | 	PartialPressureGasItem *pn2GasItem; | 
					
						
							| 
									
										
										
										
											2014-01-23 17:59:14 -02:00
										 |  |  | 	PartialPressureGasItem *pheGasItem; | 
					
						
							| 
									
										
										
										
											2014-01-23 18:03:28 -02:00
										 |  |  | 	PartialPressureGasItem *po2GasItem; | 
					
						
							| 
									
										
										
										
											2015-01-05 09:20:26 +02:00
										 |  |  | 	PartialPressureGasItem *o2SetpointGasItem; | 
					
						
							| 
									
										
										
										
											2015-01-20 20:13:53 +02:00
										 |  |  | 	PartialPressureGasItem *ccrsensor1GasItem; | 
					
						
							|  |  |  | 	PartialPressureGasItem *ccrsensor2GasItem; | 
					
						
							|  |  |  | 	PartialPressureGasItem *ccrsensor3GasItem; | 
					
						
							| 
									
										
										
										
											2018-03-14 17:13:37 +02:00
										 |  |  | 	PartialPressureGasItem *ocpo2GasItem; | 
					
						
							| 
									
										
										
										
											2017-03-25 13:03:37 +01:00
										 |  |  | #ifndef SUBSURFACE_MOBILE
 | 
					
						
							|  |  |  | 	DiveCalculatedCeiling *diveCeiling; | 
					
						
							|  |  |  | 	DiveTextItem *decoModelParameters; | 
					
						
							|  |  |  | 	QList<DiveCalculatedTissue *> allTissues; | 
					
						
							| 
									
										
										
										
											2014-02-19 17:18:26 -08:00
										 |  |  | 	DiveCartesianAxis *heartBeatAxis; | 
					
						
							| 
									
										
										
										
											2014-02-23 15:28:31 -08:00
										 |  |  | 	DiveHeartrateItem *heartBeatItem; | 
					
						
							| 
									
										
										
										
											2014-09-15 14:09:00 +02:00
										 |  |  | 	DiveCartesianAxis *percentageAxis; | 
					
						
							|  |  |  | 	QList<DivePercentageItem *> allPercentages; | 
					
						
							|  |  |  | 	DiveAmbPressureItem *ambPressureItem; | 
					
						
							|  |  |  | 	DiveGFLineItem *gflineItem; | 
					
						
							| 
									
										
										
										
											2014-08-05 18:27:00 -03:00
										 |  |  | 	DiveLineItem *mouseFollowerVertical; | 
					
						
							|  |  |  | 	DiveLineItem *mouseFollowerHorizontal; | 
					
						
							| 
									
										
										
										
											2014-02-27 15:20:03 -03:00
										 |  |  | 	RulerItem2 *rulerItem; | 
					
						
							| 
									
										
										
										
											2016-02-06 13:25:58 -08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2014-08-14 18:22:27 -06:00
										 |  |  | 	TankItem *tankItem; | 
					
						
							| 
									
										
										
										
											2014-03-25 23:34:09 +02:00
										 |  |  | 	bool isGrayscale; | 
					
						
							|  |  |  | 	bool printMode; | 
					
						
							| 
									
										
										
										
											2014-05-21 21:18:10 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	QList<QGraphicsSimpleTextItem *> gases; | 
					
						
							| 
									
										
										
										
											2018-04-06 17:58:16 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-04-09 19:58:58 +02:00
										 |  |  | 	//specifics for ADD and PLAN
 | 
					
						
							|  |  |  | #ifndef SUBSURFACE_MOBILE
 | 
					
						
							| 
									
										
										
										
											2018-06-30 11:36:37 +02:00
										 |  |  | 	// The list of pictures in this plot. The pictures are sorted by offset in seconds.
 | 
					
						
							|  |  |  | 	// For the same offset, sort by filename.
 | 
					
						
							|  |  |  | 	// Pictures that are outside of the dive time are not shown.
 | 
					
						
							|  |  |  | 	struct PictureEntry { | 
					
						
							|  |  |  | 		offset_t offset; | 
					
						
							| 
									
										
										
										
											2018-07-15 17:56:18 +02:00
										 |  |  | 		duration_t duration; | 
					
						
							| 
									
										
										
										
											2018-06-30 11:36:37 +02:00
										 |  |  | 		QString filename; | 
					
						
							|  |  |  | 		std::unique_ptr<DivePictureItem> thumbnail; | 
					
						
							| 
									
										
										
										
											2018-07-15 17:56:18 +02:00
										 |  |  | 		// For videos with known duration, we represent the duration of the video by a line
 | 
					
						
							|  |  |  | 		std::unique_ptr<QGraphicsRectItem> durationLine; | 
					
						
							| 
									
										
										
										
											2019-02-02 21:23:52 +01:00
										 |  |  | 		PictureEntry (offset_t offsetIn, const QString &filenameIn, QGraphicsScene *scene, bool synchronous); | 
					
						
							| 
									
										
										
										
											2018-06-30 11:36:37 +02:00
										 |  |  | 		bool operator< (const PictureEntry &e) const; | 
					
						
							|  |  |  | 	}; | 
					
						
							| 
									
										
										
										
											2018-06-30 21:32:14 +02:00
										 |  |  | 	void updateThumbnailXPos(PictureEntry &e); | 
					
						
							| 
									
										
										
										
											2018-06-30 11:36:37 +02:00
										 |  |  | 	std::vector<PictureEntry> pictures; | 
					
						
							| 
									
										
										
										
											2018-06-30 12:55:55 +02:00
										 |  |  | 	void calculatePictureYPositions(); | 
					
						
							| 
									
										
										
										
											2018-07-15 17:56:18 +02:00
										 |  |  | 	void updateDurationLine(PictureEntry &e); | 
					
						
							|  |  |  | 	void updateThumbnailPaintOrder(); | 
					
						
							| 
									
										
										
										
											2020-11-25 18:30:49 +01:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2015-11-05 16:05:44 -08:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	QList<DiveHandler *> handles; | 
					
						
							| 
									
										
										
										
											2020-11-25 18:30:49 +01:00
										 |  |  | #ifndef SUBSURFACE_MOBILE
 | 
					
						
							| 
									
										
										
										
											2014-05-21 23:31:26 -03:00
										 |  |  | 	void repositionDiveHandlers(); | 
					
						
							| 
									
										
										
										
											2014-05-23 22:22:02 -03:00
										 |  |  | 	int fixHandlerIndex(DiveHandler *activeHandler); | 
					
						
							| 
									
										
										
										
											2015-11-05 16:05:44 -08:00
										 |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2020-11-25 18:30:49 +01:00
										 |  |  | 	friend class DiveHandler; | 
					
						
							| 
									
										
										
										
											2014-05-24 12:39:40 -03:00
										 |  |  | 	QHash<Qt::Key, QAction *> actionsForKeys; | 
					
						
							| 
									
										
										
										
											2014-05-26 17:51:46 -03:00
										 |  |  | 	bool shouldCalculateMaxTime; | 
					
						
							| 
									
										
										
										
											2014-06-30 19:08:16 -03:00
										 |  |  | 	bool shouldCalculateMaxDepth; | 
					
						
							| 
									
										
										
										
											2014-05-26 17:51:46 -03:00
										 |  |  | 	int maxtime; | 
					
						
							| 
									
										
										
										
											2014-06-30 19:08:16 -03:00
										 |  |  | 	int maxdepth; | 
					
						
							| 
									
										
										
										
											2014-07-09 13:09:52 -07:00
										 |  |  | 	double fontPrintScale; | 
					
						
							| 
									
										
										
										
											2014-01-14 14:30:13 -02:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-11 19:14:46 +01:00
										 |  |  | #endif // PROFILEWIDGET2_H
 |