mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	mobile: flip through dive computers on mobile
UI fixed by Dirk. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									d66376a8f3
								
							
						
					
					
						commit
						7c8dc016b5
					
				
					 5 changed files with 82 additions and 7 deletions
				
			
		|  | @ -1,3 +1,4 @@ | |||
| mobile: implement paging through dive computers | ||||
| desktop: remove divesite list from tab-widgets | ||||
| infobox: show an icon for warnings | ||||
| import: allow import of divesites without UUID | ||||
|  |  | |||
|  | @ -210,7 +210,6 @@ Item { | |||
| 				color: subsurfaceTheme.textColor | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
| 	} | ||||
| 	GridLayout { | ||||
| 		id: bottomLayout | ||||
|  | @ -362,7 +361,44 @@ Item { | |||
| 			horizontalAlignment: Text.AlignHCenter | ||||
| 			text: qsTr("No profile to show") | ||||
| 		} | ||||
| 
 | ||||
| 		// under the profile | ||||
| 		// ----------------- | ||||
| 		Row { | ||||
| 			TemplateButton { | ||||
| 				id: prevDC | ||||
| 				visible: qmlProfile.numDC > 1 | ||||
| 				text: qsTr("prev.DC") | ||||
| 				font.pointSize: subsurfaceTheme.smallPointSize | ||||
| 				onClicked: { | ||||
| 					qmlProfile.prevDC() | ||||
| 				} | ||||
| 			} | ||||
| 			TemplateLabel { | ||||
| 				text: " " | ||||
| 				width: Kirigami.Units.largeSpacing | ||||
| 				visible: qmlProfile.numDC > 1 | ||||
| 			} | ||||
| 			TemplateButton { | ||||
| 				id: nextDC | ||||
| 				visible: qmlProfile.numDC > 1 | ||||
| 				text: qsTr("next DC") | ||||
| 				font.pointSize: subsurfaceTheme.smallPointSize | ||||
| 				onClicked: { | ||||
| 					qmlProfile.nextDC() | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		// two empty entries | ||||
| 		TemplateLabel { | ||||
| 			text: " " | ||||
| 			width: Kirigami.Units.largeSpacing | ||||
| 			visible: qmlProfile.numDC > 1 | ||||
| 		} | ||||
| 		TemplateLabel { | ||||
| 			text: " " | ||||
| 			width: Kirigami.Units.largeSpacing | ||||
| 			visible: qmlProfile.numDC > 1 | ||||
| 		} | ||||
| 		// first row | ||||
| 		//----------- | ||||
| 		TemplateLabelSmall { | ||||
|  |  | |||
|  | @ -576,11 +576,9 @@ void ProfileScene::plotDive(const struct dive *dIn, int dcIn, DivePlannerPointsM | |||
| 		dcText = tr("Manually added dive"); | ||||
| 	else if (dcText.isEmpty()) | ||||
| 		dcText = tr("Unknown dive computer"); | ||||
| #ifndef SUBSURFACE_MOBILE | ||||
| 	int nr; | ||||
| 	if ((nr = number_of_computers(d)) > 1) | ||||
| 	int nr = number_of_computers(d); | ||||
| 	if (nr > 1) | ||||
| 		dcText += tr(" (#%1 of %2)").arg(dc + 1).arg(nr); | ||||
| #endif | ||||
| 	diveComputerText->set(dcText, getColor(TIME_TEXT, isGrayscale)); | ||||
| 
 | ||||
| 	// Reset animation.
 | ||||
|  |  | |||
|  | @ -11,6 +11,8 @@ | |||
| 
 | ||||
| QMLProfile::QMLProfile(QQuickItem *parent) : | ||||
| 	QQuickPaintedItem(parent), | ||||
| 	m_diveId(0), | ||||
| 	m_dc(0), | ||||
| 	m_devicePixelRatio(1.0), | ||||
| 	m_margin(0), | ||||
| 	m_xOffset(0.0), | ||||
|  | @ -60,7 +62,7 @@ void QMLProfile::paint(QPainter *painter) | |||
| 	struct dive *d = get_dive_by_uniq_id(m_diveId); | ||||
| 	if (!d) | ||||
| 		return; | ||||
| 	m_profileWidget->draw(painter, painterRect, d, dc_number, nullptr, false); | ||||
| 	m_profileWidget->draw(painter, painterRect, d, m_dc, nullptr, false); | ||||
| } | ||||
| 
 | ||||
| void QMLProfile::setMargin(int margin) | ||||
|  | @ -76,6 +78,7 @@ int QMLProfile::diveId() const | |||
| void QMLProfile::setDiveId(int diveId) | ||||
| { | ||||
| 	m_diveId = diveId; | ||||
| 	emit numDCChanged(); | ||||
| } | ||||
| 
 | ||||
| qreal QMLProfile::devicePixelRatio() const | ||||
|  | @ -126,3 +129,33 @@ void QMLProfile::divesChanged(const QVector<dive *> &dives, DiveField) | |||
| 		} | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void QMLProfile::nextDC() | ||||
| { | ||||
| 	rotateDC(1); | ||||
| } | ||||
| 
 | ||||
| void QMLProfile::prevDC() | ||||
| { | ||||
| 	rotateDC(-1); | ||||
| } | ||||
| 
 | ||||
| void QMLProfile::rotateDC(int dir) | ||||
| { | ||||
| 	struct dive *d = get_dive_by_uniq_id(m_diveId); | ||||
| 	if (!d) | ||||
| 		return; | ||||
| 	int numDC = number_of_computers(d); | ||||
| 	if (numDC == 1) | ||||
| 		return; | ||||
| 	m_dc = (m_dc + dir) % numDC; | ||||
| 	if (m_dc < 0) | ||||
| 		m_dc += numDC; | ||||
| 	triggerUpdate(); | ||||
| } | ||||
| 
 | ||||
| int QMLProfile::numDC() const | ||||
| { | ||||
| 	struct dive *d = get_dive_by_uniq_id(m_diveId); | ||||
| 	return d ? number_of_computers(d) : 0; | ||||
| } | ||||
|  |  | |||
|  | @ -12,6 +12,7 @@ class QMLProfile : public QQuickPaintedItem | |||
| { | ||||
| 	Q_OBJECT | ||||
| 	Q_PROPERTY(int diveId MEMBER m_diveId WRITE setDiveId) | ||||
| 	Q_PROPERTY(int numDC READ numDC NOTIFY numDCChanged) | ||||
| 	Q_PROPERTY(qreal devicePixelRatio READ devicePixelRatio WRITE setDevicePixelRatio NOTIFY devicePixelRatioChanged) | ||||
| 	Q_PROPERTY(qreal xOffset MEMBER m_xOffset WRITE setXOffset NOTIFY xOffsetChanged) | ||||
| 	Q_PROPERTY(qreal yOffset MEMBER m_yOffset WRITE setYOffset NOTIFY yOffsetChanged) | ||||
|  | @ -28,6 +29,8 @@ public: | |||
| 	void setDevicePixelRatio(qreal dpr); | ||||
| 	void setXOffset(qreal value); | ||||
| 	void setYOffset(qreal value); | ||||
| 	Q_INVOKABLE void nextDC(); | ||||
| 	Q_INVOKABLE void prevDC(); | ||||
| 
 | ||||
| public slots: | ||||
| 	void setMargin(int margin); | ||||
|  | @ -36,11 +39,14 @@ public slots: | |||
| 
 | ||||
| private: | ||||
| 	int m_diveId; | ||||
| 	int m_dc; | ||||
| 	qreal m_devicePixelRatio; | ||||
| 	int m_margin; | ||||
| 	qreal m_xOffset, m_yOffset; | ||||
| 	std::unique_ptr<ProfileScene> m_profileWidget; | ||||
| 	void createProfileView(); | ||||
| 	void rotateDC(int dir); | ||||
| 	int numDC() const; | ||||
| 
 | ||||
| private slots: | ||||
| 	void divesChanged(const QVector<dive *> &dives, DiveField); | ||||
|  | @ -50,6 +56,7 @@ signals: | |||
| 	void devicePixelRatioChanged(); | ||||
| 	void xOffsetChanged(); | ||||
| 	void yOffsetChanged(); | ||||
| 	void numDCChanged(); | ||||
| }; | ||||
| 
 | ||||
| #endif // QMLPROFILE_H
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue