mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	QML UI: keep QML manager and the UI in sync about selected dive
The manager can now directly update the index of the selected dive, and the UI tells the manager the timestamp of the currently selected dive. This allows the manager to pick the best possible dive as selected dive if things change (for example if the dive list gets reloaded because it changed in cloud storage). Fixes #1009 Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
		
							parent
							
								
									5909e438c9
								
							
						
					
					
						commit
						6e6cce770b
					
				
					 3 changed files with 50 additions and 0 deletions
				
			
		|  | @ -385,6 +385,8 @@ void QMLManager::loadDivesWithValidCredentials() | |||
| 		return; | ||||
| 	} | ||||
| 	appendTextToLog("Cloud sync brought newer data, reloading the dive list"); | ||||
| 	timestamp_t currentDiveTimestamp = selectedDiveTimestamp(); | ||||
| 
 | ||||
| 	clear_dive_file_data(); | ||||
| 	if (git != dummy_git_repository) { | ||||
| 		appendTextToLog(QString("have repository and branch %1").arg(branch)); | ||||
|  | @ -414,6 +416,7 @@ void QMLManager::loadDivesWithValidCredentials() | |||
| 	DiveListModel::instance()->clear(); | ||||
| 	process_dives(false, false); | ||||
| 	DiveListModel::instance()->addAllDives(); | ||||
| 	setUpdateSelectedDive(dlSortModel->getIdxForId(get_dive_id_closest_to(currentDiveTimestamp))); | ||||
| 	appendTextToLog(QStringLiteral("%1 dives loaded").arg(dive_table.nr)); | ||||
| 	if (dive_table.nr == 0) | ||||
| 		setStartPageText(tr("Cloud storage open successfully. No dives in dive list.")); | ||||
|  | @ -1128,6 +1131,28 @@ void QMLManager::setSyncToCloud(bool status) | |||
| 	emit syncToCloudChanged(); | ||||
| } | ||||
| 
 | ||||
| int QMLManager::updateSelectedDive() const | ||||
| { | ||||
| 	return m_updateSelectedDive; | ||||
| } | ||||
| 
 | ||||
| void QMLManager::setUpdateSelectedDive(int idx) | ||||
| { | ||||
| 	m_updateSelectedDive = idx; | ||||
| 	emit updateSelectedDiveChanged(); | ||||
| } | ||||
| 
 | ||||
| int QMLManager::selectedDiveTimestamp() const | ||||
| { | ||||
| 	return m_selectedDiveTimestamp; | ||||
| } | ||||
| 
 | ||||
| void QMLManager::setSelectedDiveTimestamp(int when) | ||||
| { | ||||
| 	m_selectedDiveTimestamp = when; | ||||
| 	emit selectedDiveTimestampChanged(); | ||||
| } | ||||
| 
 | ||||
| qreal QMLManager::lastDevicePixelRatio() | ||||
| { | ||||
| 	return m_lastDevicePixelRatio; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue