diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2013-09-25 14:23:51 -0300 |
---|---|---|
committer | Tomaz Canabrava <tcanabrava@kde.org> | 2013-09-25 14:23:51 -0300 |
commit | 2c14f3aa3b44ef9475e5b38acb8bbaa029e662be (patch) | |
tree | d9d196d73bb3d714c26ffe330a2ec6cac9c452d7 /qt-ui | |
parent | c805e2c9417476b8b73944f8e8ef8425b0741815 (diff) | |
download | subsurface-2c14f3aa3b44ef9475e5b38acb8bbaa029e662be.tar.gz |
Added a 'changed' member on Cylinder/Weigth models to know when to Apply a change.
Added a 'changed' member on Cylinders and weigth models to mark when
one was changed or not. Only the changed data should be inserted on
the selected dives, so if the user changes the cylinders on a multi
edit, there's no need ( and it will actually break things if we did that )
set the weigths too.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Diffstat (limited to 'qt-ui')
-rw-r--r-- | qt-ui/models.cpp | 16 | ||||
-rw-r--r-- | qt-ui/models.h | 2 |
2 files changed, 18 insertions, 0 deletions
diff --git a/qt-ui/models.cpp b/qt-ui/models.cpp index fc91e0558..70fb06624 100644 --- a/qt-ui/models.cpp +++ b/qt-ui/models.cpp @@ -193,6 +193,7 @@ bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, in if (!cyl->type.description || strcmp(cyl->type.description, text)) { cyl->type.description = strdup(text); mark_divelist_changed(TRUE); + changed = true; } } break; @@ -218,6 +219,7 @@ bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, in if (!matches.isEmpty()) tanks->setData(tanks->index(matches.first().row(), TankInfoModel::ML), cyl->type.size.mliter); } + changed = true; } } break; @@ -235,6 +237,7 @@ bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, in if (!matches.isEmpty()) tanks->setData(tanks->index(matches.first().row(), TankInfoModel::BAR), cyl->type.workingpressure.mbar / 1000.0); mark_divelist_changed(TRUE); + changed = true; } } break; @@ -246,6 +249,7 @@ bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, in else cyl->start.mbar = value.toDouble() * 1000; mark_divelist_changed(TRUE); + changed = true; } } break; @@ -256,6 +260,8 @@ bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, in cyl->end.mbar = psi_to_mbar(value.toDouble()); else cyl->end.mbar = value.toDouble() * 1000; + mark_divelist_changed(TRUE); + changed = true; } } break; @@ -263,12 +269,14 @@ bool CylindersModel::setData(const QModelIndex& index, const QVariant& value, in if (CHANGED(toDouble, "%", "%")) { cyl->gasmix.o2.permille = value.toString().remove('%').toDouble() * 10 + 0.5; mark_divelist_changed(TRUE); + changed = true; } break; case HE: if (CHANGED(toDouble, "%", "%")) { cyl->gasmix.he.permille = value.toString().remove('%').toDouble() * 10 + 0.5; mark_divelist_changed(TRUE); + changed = true; } break; } @@ -291,6 +299,7 @@ void CylindersModel::add() beginInsertRows(QModelIndex(), row, row); rows++; + changed = true; endInsertRows(); } @@ -324,6 +333,7 @@ void CylindersModel::setDive(dive* d) beginInsertRows(QModelIndex(), 0, amount-1); rows = amount; current = d; + changed = false; endInsertRows(); } @@ -343,6 +353,7 @@ void CylindersModel::remove(const QModelIndex& index) rows--; remove_cylinder(current, index.row()); mark_divelist_changed(TRUE); + changed = true; endRemoveRows(); } @@ -364,6 +375,7 @@ void WeightModel::remove(const QModelIndex& index) rows--; remove_weightsystem(current, index.row()); mark_divelist_changed(TRUE); + changed = true; endRemoveRows(); } @@ -440,6 +452,7 @@ bool WeightModel::setData(const QModelIndex& index, const QVariant& value, int r if (!ws->description || strcmp(ws->description, text)) { ws->description = strdup(text); mark_divelist_changed(TRUE); + changed = true; } } break; @@ -450,6 +463,7 @@ bool WeightModel::setData(const QModelIndex& index, const QVariant& value, int r else ws->weight.grams = value.toDouble() * 1000.0 + 0.5; // now update the ws_info + changed = true; WSInfoModel *wsim = WSInfoModel::instance(); QModelIndexList matches = wsim->match(wsim->index(0,0), Qt::DisplayRole, ws->description); if (!matches.isEmpty()) @@ -505,6 +519,7 @@ void WeightModel::add() int row = rows; beginInsertRows(QModelIndex(), row, row); rows++; + changed = true; endInsertRows(); } @@ -530,6 +545,7 @@ void WeightModel::setDive(dive* d) beginInsertRows(QModelIndex(), 0, amount-1); rows = amount; current = d; + changed = false; endInsertRows(); } diff --git a/qt-ui/models.h b/qt-ui/models.h index c60856478..2a9945aeb 100644 --- a/qt-ui/models.h +++ b/qt-ui/models.h @@ -86,6 +86,7 @@ public: void update(); void setDive(struct dive *d); cylinder_t *cylinderAt(const QModelIndex& index); + bool changed; public slots: void remove(const QModelIndex& index); @@ -116,6 +117,7 @@ public: void update(); void setDive(struct dive *d); weightsystem_t *weightSystemAt(const QModelIndex& index); + bool changed; public slots: void remove(const QModelIndex& index); |