mirror of
				https://github.com/subsurface/subsurface.git
				synced 2025-02-19 22:16:15 +00:00 
			
		
		
		
	Enable editing a dive that was manually entered.
This patch enables editing a dive that was manually entered, it doesn't cover dive plans yet because on the plan I need to figure out what are the 'user-entered' points, and what are the algorithm point. and I feel lazy. =p One last thing that's missing is to revert the dive to the previous condition if the user cancels the edition, currently canceling and applying ok is the same thing. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
This commit is contained in:
		
							parent
							
								
									d9afcdc8cb
								
							
						
					
					
						commit
						f7cd3e780c
					
				
					 6 changed files with 51 additions and 6 deletions
				
			
		|  | @ -425,6 +425,28 @@ void DivePlannerPointsModel::createSimpleDive() | |||
| 	plannerModel->addStop(M_OR_FT(5,15), 45 * 60, tr("Air"), 0); | ||||
| } | ||||
| 
 | ||||
| void DivePlannerPointsModel::loadFromDive(dive* d) | ||||
| { | ||||
| 	int totalSamples = d->dc.samples -2; // removes begin and end.
 | ||||
| 	 | ||||
| 	/* We need to make a copy, because
 | ||||
| 	 * as soon as the model is modified, it will | ||||
| 	 * remove all samples from the current dive. | ||||
| 	 *  | ||||
| 	 * TODO: keep a backup of the values, | ||||
| 	 * so we can restore.  | ||||
| 	 * */ | ||||
| 	QList<QPair<int,int> > values; | ||||
| 	for(int i = 1; i < d->dc.samples-1; i++){ | ||||
| 		struct sample &s = d->dc.sample[i]; | ||||
| 		values.append( qMakePair(s.depth.mm, s.time.seconds)); | ||||
| 	} | ||||
| 
 | ||||
| 	for(int i = 0; i < totalSamples; i++){ | ||||
| 		plannerModel->addStop(values[i].first, values[i].second, tr("Air"), 0); | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| void DivePlannerGraphics::prepareSelectGas() | ||||
| { | ||||
| 	currentGasChoice = static_cast<Button*>(sender()); | ||||
|  |  | |||
|  | @ -54,6 +54,7 @@ public slots: | |||
| 	void cancelPlan(); | ||||
| 	void createTemporaryPlan(); | ||||
| 	void deleteTemporaryPlan(); | ||||
| 	void loadFromDive(dive* d); | ||||
| 
 | ||||
| signals: | ||||
| 	void planCreated(); | ||||
|  |  | |||
|  | @ -113,7 +113,7 @@ void MainTab::addDiveStarted() | |||
| 	editMode = ADD; | ||||
| } | ||||
| 
 | ||||
| void MainTab::enableEdition() | ||||
| void MainTab::enableEdition(EditMode newEditMode) | ||||
| { | ||||
| 	if (selected_dive < 0 || editMode != NONE) | ||||
| 		return; | ||||
|  | @ -170,7 +170,8 @@ void MainTab::enableEdition() | |||
| 				notesBackup[mydive].weightsystem[i] = mydive->weightsystem[i]; | ||||
| 			} | ||||
| 		} | ||||
| 		editMode = DIVE; | ||||
| 
 | ||||
| 		editMode = newEditMode != NONE ? newEditMode : DIVE; | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
|  | @ -449,7 +450,7 @@ void MainTab::acceptChanges() | |||
| 		} | ||||
| 
 | ||||
| 	} | ||||
| 	if (editMode == ADD) { | ||||
| 	if (editMode == ADD || editMode == MANUALLY_ADDED_DIVE) { | ||||
| 		// clean up the dive data (get duration, depth information from samples)
 | ||||
| 		fixup_dive(current_dive); | ||||
| 		if (dive_table.nr == 1) | ||||
|  | @ -563,7 +564,7 @@ void MainTab::rejectChanges() | |||
| 	ui.equipmentButtonBox->hide(); | ||||
| 	notesBackup.clear(); | ||||
| 	resetPallete(); | ||||
| 	if (editMode == ADD) { | ||||
| 	if (editMode == ADD || editMode == MANUALLY_ADDED_DIVE) { | ||||
| 		// more clean up
 | ||||
| 		updateDiveInfo(selected_dive); | ||||
| 		mainWindow()->showProfile(); | ||||
|  |  | |||
|  | @ -46,6 +46,7 @@ class MainTab : public QTabWidget | |||
| { | ||||
| 	Q_OBJECT | ||||
| public: | ||||
| 	enum EditMode { NONE, DIVE, TRIP, ADD, MANUALLY_ADDED_DIVE } editMode; | ||||
| 	MainTab(QWidget *parent); | ||||
| 	void clearStats(); | ||||
| 	void clearInfo(); | ||||
|  | @ -74,6 +75,7 @@ public slots: | |||
| 	void editCylinderWidget(const QModelIndex& index); | ||||
| 	void editWeightWidget(const QModelIndex& index); | ||||
| 	void addDiveStarted(); | ||||
| 	void enableEdition(EditMode newEditMode = NONE); | ||||
| 
 | ||||
| private: | ||||
| 	Ui::MainTab ui; | ||||
|  | @ -88,9 +90,7 @@ private: | |||
| 	 * then applying the changes on the other dives.*/ | ||||
| 	struct dive multiEditEquipmentPlaceholder; | ||||
| 
 | ||||
| 	enum { NONE, DIVE, TRIP, ADD } editMode; | ||||
| 	Completers completers; | ||||
| 	void enableEdition(); | ||||
| 	void resetPallete(); | ||||
| 	QString printGPSCoords(int lat, int lon); | ||||
| }; | ||||
|  |  | |||
|  | @ -819,3 +819,23 @@ void MainWindow::on_actionImportCSV_triggered() | |||
| 	process_dives(TRUE, FALSE); | ||||
| 	refreshDisplay(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| void MainWindow::editCurrentDive() | ||||
| { | ||||
| 	struct dive *d = current_dive; | ||||
| 	QString defaultDC(d->dc.model); | ||||
| 	 | ||||
| 	if (defaultDC == tr("manually added dive")){ | ||||
| 		disableDcShortcuts(); | ||||
| 		DivePlannerPointsModel::instance()->setPlanMode(false); | ||||
| 		ui.stackedWidget->setCurrentIndex(PLANNERPROFILE); // Planner.
 | ||||
| 		ui.infoPane->setCurrentIndex(MAINTAB); | ||||
| 		DivePlannerPointsModel::instance()->loadFromDive(d); | ||||
| 		ui.InfoWidget->enableEdition(MainTab::MANUALLY_ADDED_DIVE); | ||||
| 	} | ||||
| 	else if (defaultDC == tr("Simulated Dive")){ | ||||
| 		 | ||||
| 	} | ||||
| 	 | ||||
| } | ||||
|  |  | |||
|  | @ -109,6 +109,7 @@ public slots: | |||
| 	void readSettings(); | ||||
| 	void refreshDisplay(); | ||||
| 	void showProfile(); | ||||
| 	void editCurrentDive(); | ||||
| 
 | ||||
| private: | ||||
| 	Ui::MainWindow ui; | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue