diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2016-04-05 21:17:37 -0700 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-04-05 21:17:37 -0700 |
commit | 1634c62b9a156b59faab4ed89d64c359ba0580f2 (patch) | |
tree | eda73fe7126132f586ef839a110e62b824d65dcc /qt-models/divelistmodel.cpp | |
parent | f16a3a1709be50cb2ed4f4ca0e1e9bb5217cc25f (diff) | |
download | subsurface-1634c62b9a156b59faab4ed89d64c359ba0580f2.tar.gz |
DiveListModel: don't add the dives one at a time
Most of the time we are adding all the dives, so do this in a single model
operation. This makes the case when adding a single dive (in the undo delete
function) slightly more complicated, but that seems totally worth it for the
speedup in the common case.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/divelistmodel.cpp')
-rw-r--r-- | qt-models/divelistmodel.cpp | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp index 79d770853..f0c726fae 100644 --- a/qt-models/divelistmodel.cpp +++ b/qt-models/divelistmodel.cpp @@ -31,13 +31,28 @@ DiveListModel::DiveListModel(QObject *parent) : QAbstractListModel(parent) m_instance = this; } -void DiveListModel::addDive(dive *d) +void DiveListModel::addDive(QList<dive *>listOfDives) { - beginInsertRows(QModelIndex(), rowCount(), rowCount()); - m_dives.append(new DiveObjectHelper(d)); + if (listOfDives.isEmpty()) + return; + beginInsertRows(QModelIndex(), rowCount(), rowCount() + listOfDives.count() - 1); + foreach (dive *d, listOfDives) { + m_dives.append(new DiveObjectHelper(d)); + } endInsertRows(); } +void DiveListModel::addAllDives() +{ + QList<dive *>listOfDives; + int i; + struct dive *d; + for_each_dive (i, d) + listOfDives.append(d); + addDive(listOfDives); + +} + void DiveListModel::insertDive(int i, DiveObjectHelper *newDive) { beginInsertRows(QModelIndex(), i, i); |