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
Reference in a new issue