diff options
author | Robert C. Helling <helling@atdotde.de> | 2014-05-08 23:36:45 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-05-08 14:58:47 -0700 |
commit | 9a4f8b50bd9b88b00959a08524e1617be1486c95 (patch) | |
tree | 83bba2eacee2f1cd6e72b13e12f0e9e6a3a2a08b /qt-ui | |
parent | 90638180d21a7f400e55cb26cbeff59823b884a9 (diff) | |
download | subsurface-9a4f8b50bd9b88b00959a08524e1617be1486c95.tar.gz |
When starting the planner, copy cylinders from currently selected dive.
This way, the user can save dives containing sets of "standard cylinders". Selecting one of those prepopulates the gas list for the planner.
Signed-off-by: Robert C. Helling <helling@atdotde.de>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/diveplanner.cpp | 5 | ||||
-rw-r--r-- | qt-ui/diveplanner.h | 1 | ||||
-rw-r--r-- | qt-ui/mainwindow.cpp | 9 | ||||
-rw-r--r-- | qt-ui/models.cpp | 17 | ||||
-rw-r--r-- | qt-ui/models.h | 1 |
5 files changed, 33 insertions, 0 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp index cef6610ac..b45b4e07b 100644 --- a/qt-ui/diveplanner.cpp +++ b/qt-ui/diveplanner.cpp @@ -436,6 +436,11 @@ void DivePlannerPointsModel::copyCylinders(dive *d) copy_cylinders(stagingDive, d); } +void DivePlannerPointsModel::copyCylindersFrom(dive *d) +{ + copy_cylinders(d, stagingDive); +} + QStringList &DivePlannerPointsModel::getGasList() { struct dive *activeDive = isPlanner() ? stagingDive : current_dive; diff --git a/qt-ui/diveplanner.h b/qt-ui/diveplanner.h index 85b585537..506953275 100644 --- a/qt-ui/diveplanner.h +++ b/qt-ui/diveplanner.h @@ -48,6 +48,7 @@ public: void rememberTanks(); bool tankInUse(int o2, int he); void copyCylinders(struct dive *d); + void copyCylindersFrom(struct dive *d); /** * @return the row number. */ diff --git a/qt-ui/mainwindow.cpp b/qt-ui/mainwindow.cpp index fb5e3af8e..769f486de 100644 --- a/qt-ui/mainwindow.cpp +++ b/qt-ui/mainwindow.cpp @@ -325,6 +325,8 @@ void MainWindow::enableDcShortcuts() void MainWindow::on_actionDivePlanner_triggered() { + int i; + struct dive *dive; if (DivePlannerPointsModel::instance()->currentMode() != DivePlannerPointsModel::NOTHING || ui.InfoWidget->isEditing()) { QMessageBox::warning(this, tr("Warning"), tr("Please save or cancel the current dive edit before trying to plan a dive.")); @@ -334,6 +336,13 @@ void MainWindow::on_actionDivePlanner_triggered() DivePlannerPointsModel::instance()->setPlanMode(DivePlannerPointsModel::PLAN); DivePlannerPointsModel::instance()->clear(); CylindersModel::instance()->clear(); + for_each_dive(i,dive) { + if(dive->selected){ + DivePlannerPointsModel::instance()->copyCylindersFrom(dive); + CylindersModel::instance()->copyFromDive(dive); + break; + } + } ui.stackedWidget->setCurrentIndex(PLANNERPROFILE); ui.infoPane->setCurrentIndex(PLANNERWIDGET); } diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index 0564add12..43f08e106 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -332,6 +332,23 @@ void CylindersModel::setDive(dive *d) } } +void CylindersModel::copyFromDive(dive *d) +{ + if (!d) + return; + rows = 0; + for (int i = 0; i < MAX_CYLINDERS; i++) { + if (!cylinder_none(&d->cylinder[i]) && + (prefs.display_unused_tanks || d->cylinder[i].used)) { + rows = i + 1; + } + } + if (rows > 0) { + beginInsertRows(QModelIndex(), 0, rows - 1); + endInsertRows(); + } +} + Qt::ItemFlags CylindersModel::flags(const QModelIndex &index) const { if (index.column() == REMOVE) diff --git a/qt-ui/models.h b/qt-ui/models.h index 14969f8f4..d638e7de3 100644 --- a/qt-ui/models.h +++ b/qt-ui/models.h @@ -120,6 +120,7 @@ public: void clear(); void update(); void setDive(struct dive *d); + void copyFromDive(struct dive *d); cylinder_t *cylinderAt(const QModelIndex &index); bool changed; |