mirror of
https://github.com/subsurface/subsurface.git
synced 2024-12-11 03:21:29 +00:00
6ec82a3c80
This part of the code had that horrible pattern, where reseting the model would invalidate all pointers to the DiveTrip model. Internalize these complexities in the MultiFilterSortModel. All accesses are now performed via that proxy model. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
32 lines
981 B
C++
32 lines
981 B
C++
// SPDX-License-Identifier: GPL-2.0
|
|
#ifndef FILTERMODELS_H
|
|
#define FILTERMODELS_H
|
|
|
|
#include "divetripmodel.h"
|
|
|
|
#include <QSortFilterProxyModel>
|
|
#include <memory>
|
|
|
|
// This proxy model sits on top of either a DiveTripList or DiveTripTree model
|
|
// and does filtering and/or sorting.
|
|
class MultiFilterSortModel : public QSortFilterProxyModel {
|
|
Q_OBJECT
|
|
public:
|
|
static MultiFilterSortModel *instance();
|
|
bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const override;
|
|
bool lessThan(const QModelIndex &, const QModelIndex &) const override;
|
|
|
|
void resetModel(DiveTripModelBase::Layout layout);
|
|
void clear();
|
|
signals:
|
|
void selectionChanged(const QVector<QModelIndex> &indexes);
|
|
void currentDiveChanged(QModelIndex index);
|
|
private slots:
|
|
void selectionChangedSlot(const QVector<QModelIndex> &indexes);
|
|
void currentDiveChangedSlot(QModelIndex index);
|
|
private:
|
|
MultiFilterSortModel(QObject *parent = 0);
|
|
std::unique_ptr<DiveTripModelBase> model;
|
|
};
|
|
|
|
#endif
|