diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-11-08 22:09:46 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2013-11-09 15:35:29 +0900 |
commit | 8a970c64c2d8f3cdfebf80b58972f66dee1bed44 (patch) | |
tree | dc76b117e226d06fdf58f487b28d8be0c53f3663 /qt-ui/diveplanner.cpp | |
parent | f850a0817ccd37bc04945431aed58380e3edcad7 (diff) | |
download | subsurface-8a970c64c2d8f3cdfebf80b58972f66dee1bed44.tar.gz |
Removed inconsistency when user tried to add dive while planning.
The user could add a dive, and in the middle click on the 'plan'
button. Since we didn't cared about that on the widget, a lot of
inconsistencies could occour. this fixes that by setting a flag
on the Planner, that has now three modes: nothing, plan and add.
(maybe in the future an edit mode will be valid too.)
If in 'NOTHING' mode, user can enter the addition, edition and
planning. If in any other mode, user can't do a thing. The mode
gets back to NOTHING when user accepts or cancels a plan / add
/ edition.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-ui/diveplanner.cpp')
-rw-r--r-- | qt-ui/diveplanner.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/qt-ui/diveplanner.cpp b/qt-ui/diveplanner.cpp index c54cb9b19..a14124abc 100644 --- a/qt-ui/diveplanner.cpp +++ b/qt-ui/diveplanner.cpp @@ -431,13 +431,6 @@ void DivePlannerPointsModel::loadFromDive(dive* d) * as soon as the model is modified, it will * remove all samples from the current dive. * */ - - /* On the safe side, clear everything before - editing the new dive. */ - beginRemoveRows(QModelIndex(), 0, rowCount()-1); - divepoints.clear(); - endRemoveRows(); - backupSamples.clear(); for(int i = 1; i < d->dc.samples-1; i++){ backupSamples.push_back( d->dc.sample[i]); @@ -940,9 +933,9 @@ void DivePlannerWidget::lastStopChanged(bool checked) plannerModel->setLastStop6m(checked); } -void DivePlannerPointsModel::setPlanMode(bool isPlan) +void DivePlannerPointsModel::setPlanMode(Mode m) { - mode = isPlan ? PLAN : ADD; + mode = m; } bool DivePlannerPointsModel::isPlanner() @@ -1028,7 +1021,7 @@ int DivePlannerPointsModel::rowCount(const QModelIndex& parent) const return divepoints.count(); } -DivePlannerPointsModel::DivePlannerPointsModel(QObject* parent): QAbstractTableModel(parent) +DivePlannerPointsModel::DivePlannerPointsModel(QObject* parent): QAbstractTableModel(parent), mode(NOTHING) { } @@ -1168,13 +1161,24 @@ void DivePlannerPointsModel::cancelPlan() return; } } + clear(); + emit planCanceled(); + setPlanMode(NOTHING); +} + +DivePlannerPointsModel::Mode DivePlannerPointsModel::currentMode() const +{ + return mode; +} +void DivePlannerPointsModel::clear() +{ beginRemoveRows(QModelIndex(), 0, rowCount()-1); divepoints.clear(); endRemoveRows(); - emit planCanceled(); } + void DivePlannerPointsModel::createTemporaryPlan() { // This needs to be done in the following steps: @@ -1209,9 +1213,7 @@ void DivePlannerPointsModel::createTemporaryPlan() void DivePlannerPointsModel::undoEdition() { - beginRemoveRows(QModelIndex(), 0, rowCount()-1); - divepoints.clear(); - endRemoveRows(); + clear(); Q_FOREACH(const sample &s, backupSamples){ plannerModel->addStop(s.depth.mm, s.time.seconds, tr("Air"), 0); } @@ -1249,8 +1251,7 @@ void DivePlannerPointsModel::createPlan() // Remove and clean the diveplan, so we don't delete // the dive by mistake. diveplan.dp = NULL; - beginRemoveRows(QModelIndex(), 0, rowCount() -1 ); - divepoints.clear(); - endRemoveRows(); + clear(); planCreated(); + setPlanMode(NOTHING); } |