subsurface/qt-models/divelistmodel.h
Berthold Stoeger 4b389e267d Mobile: return dive-number directly from DiveListModel
We don't want to generate a DiveObjectHelper numerous times for
every item in the dive list. Therefore, return this datum directly
from the model. In this case, don't remove from DiveObjectHelper,
as this datum might be used by grantlee templates.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2019-09-14 13:20:59 +02:00

69 lines
1.7 KiB
C++

// SPDX-License-Identifier: GPL-2.0
#ifndef DIVELISTMODEL_H
#define DIVELISTMODEL_H
#include <QAbstractListModel>
#include <QSortFilterProxyModel>
#include "core/subsurface-qt/DiveObjectHelper.h"
class DiveListSortModel : public QSortFilterProxyModel
{
Q_OBJECT
public:
DiveListSortModel(QObject *parent = 0);
void setSourceModel(QAbstractItemModel *sourceModel);
Q_INVOKABLE void addAllDives();
Q_INVOKABLE void clear();
Q_INVOKABLE QVariant tripIdToObject(const QString &s);
Q_INVOKABLE QString tripTitle(const QVariant &trip);
Q_INVOKABLE QString tripShortDate(const QVariant &trip);
public slots:
int getIdxForId(int id);
void setFilter(QString f);
void resetFilter();
int shown();
protected:
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
private:
QString filterString;
void updateFilterState();
};
class DiveListModel : public QAbstractListModel
{
Q_OBJECT
public:
enum DiveListRoles {
DiveRole = Qt::UserRole + 1,
DiveDateRole,
TripIdRole,
TripNrDivesRole,
DateTimeRole,
IdRole,
NumberRole,
};
static DiveListModel *instance();
DiveListModel(QObject *parent = 0);
void addDive(const QList<dive *> &listOfDives);
void addAllDives();
void insertDive(int i, DiveObjectHelper *newDive);
void removeDive(int i);
void removeDiveById(int id);
void updateDive(int i, dive *d);
void clear();
int rowCount(const QModelIndex &parent = QModelIndex()) const;
int getDiveIdx(int id) const;
QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
QHash<int, QByteArray> roleNames() const;
QString startAddDive();
void resetInternalData();
Q_INVOKABLE DiveObjectHelper* at(int i);
private:
QList<DiveObjectHelper*> m_dives;
static DiveListModel *m_instance;
};
#endif // DIVELISTMODEL_H