summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--qt-models/divelistmodel.cpp19
-rw-r--r--qt-models/divelistmodel.h1
2 files changed, 14 insertions, 6 deletions
diff --git a/qt-models/divelistmodel.cpp b/qt-models/divelistmodel.cpp
index e24ba08e8..8143dd550 100644
--- a/qt-models/divelistmodel.cpp
+++ b/qt-models/divelistmodel.cpp
@@ -51,8 +51,8 @@ void DiveListSortModel::resetFilter()
bool DiveListSortModel::filterAcceptsRow(int source_row, const QModelIndex &) const
{
DiveListModel *mySourceModel = qobject_cast<DiveListModel *>(sourceModel());
- DiveObjectHelper d = mySourceModel->at(source_row);
- return d && !d.getDive()->hidden_by_filter;
+ const dive *d = mySourceModel->getDive(source_row);
+ return d && !d->hidden_by_filter;
}
int DiveListSortModel::shown()
@@ -262,11 +262,18 @@ DiveListModel *DiveListModel::instance()
return m_instance;
}
-DiveObjectHelper DiveListModel::at(int i)
+struct dive *DiveListModel::getDive(int i)
{
if (i < 0 || i >= dive_table.nr) {
- qWarning("DiveListModel::at(): accessing invalid dive with id %d", i);
- return DiveObjectHelper(); // Returns an invalid DiveObjectHelper that will crash on access.
+ qWarning("DiveListModel::getDive(): accessing invalid dive with id %d", i);
+ return nullptr;
}
- return DiveObjectHelper(dive_table.dives[i]);
+ return dive_table.dives[i];
+}
+
+DiveObjectHelper DiveListModel::at(int i)
+{
+ // For an invalid id, returns an invalid DiveObjectHelper that will crash on access.
+ dive *d = getDive(i);
+ return d ? DiveObjectHelper(d) : DiveObjectHelper();
}
diff --git a/qt-models/divelistmodel.h b/qt-models/divelistmodel.h
index cb7c902b3..193d728ea 100644
--- a/qt-models/divelistmodel.h
+++ b/qt-models/divelistmodel.h
@@ -55,6 +55,7 @@ public:
void removeDiveById(int id);
void updateDive(int i, dive *d);
void reload();
+ struct dive *getDive(int i);
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int getDiveIdx(int id) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;