diff options
author | Dirk Hohndel <dirk@hohndel.org> | 2016-01-28 18:23:14 -0800 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2016-01-28 18:33:22 -0800 |
commit | af9f07626a010b78289d68c7b4d388bdeeec9fa4 (patch) | |
tree | 26ff24210c89a8499d7ef01e3ba24a49970e0e76 /qt-models/divelistmodel.cpp | |
parent | dbe9bad0aaa8d0cac63166d3b1b4a9a189ef12c8 (diff) | |
download | subsurface-af9f07626a010b78289d68c7b4d388bdeeec9fa4.tar.gz |
Add our own sort proxy class which provides two helper functions
These can then be used from QML to map the index into the model (the sort
model corresponds directly to the indices in QML) to the dive id and back.
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'qt-models/divelistmodel.cpp')
-rw-r--r-- | qt-models/divelistmodel.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp index 6706d9137..114745fe7 100644 --- a/qt-models/divelistmodel.cpp +++ b/qt-models/divelistmodel.cpp @@ -2,6 +2,28 @@ #include "helpers.h" #include <QDateTime> +DiveListSortModel::DiveListSortModel(QObject *parent) : QSortFilterProxyModel(parent) +{ + +} + +int DiveListSortModel::getDiveId(int idx) +{ + DiveListModel *mySourceModel = qobject_cast<DiveListModel *>(sourceModel()); + return mySourceModel->getDiveId(mapToSource(index(idx,0)).row()); +} + +int DiveListSortModel::getIdxForId(int id) +{ + for (int i = 0; i < rowCount(); i++) { + QVariant v = data(index(i, 0), DiveListModel::DiveRole); + DiveObjectHelper *d = v.value<DiveObjectHelper *>(); + if (d->id() == id) + return i; + } + return -1; +} + DiveListModel *DiveListModel::m_instance = NULL; DiveListModel::DiveListModel(QObject *parent) : QAbstractListModel(parent) @@ -52,6 +74,13 @@ int DiveListModel::rowCount(const QModelIndex &) const return m_dives.count(); } +int DiveListModel::getDiveId(int idx) const +{ + if (idx < 0 || idx >= m_dives.count()) + return -1; + return m_dives[idx]->id(); +} + QVariant DiveListModel::data(const QModelIndex &index, int role) const { if(index.row() < 0 || index.row() > m_dives.count()) |