Cleanup: Remove SsrfFilterSortProxyModel

SsrfFilterSortProxyModel was a thin wrapper around QFilterSortProxyModel,
which was intended as a convenience class to avoid deriving from the
latter. The filter and sort functions were replaced by simple function
pointers.

Unfortunately, by using function-pointers, the whole thing was rather
weak as these functions do not have state. The last user was removed
in ac8dcd7f65b78958587ba025280ed4c529b0b519. Therefore, remove the
whole class.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-10-08 19:29:47 +02:00 committed by Dirk Hohndel
parent f39596df06
commit 6137e0bc60
4 changed files with 1 additions and 81 deletions

View file

@ -26,7 +26,6 @@ set(SUBSURFACE_DESKTOP_MODELS_LIB_SRCS
divetripmodel.cpp
diveplannermodel.cpp
divecomputerextradatamodel.cpp
ssrfsortfilterproxymodel.cpp
)
# models exclusively used in mobile builds

View file

@ -4,9 +4,9 @@
#include <QAbstractTableModel>
#include <QStringListModel>
#include <QSortFilterProxyModel>
#include <stdint.h>
#include "core/units.h"
#include "ssrfsortfilterproxymodel.h"
#define RECENTLY_ADDED_DIVESITE 1

View file

@ -1,45 +0,0 @@
// SPDX-License-Identifier: GPL-2.0
#include "ssrfsortfilterproxymodel.h"
SsrfSortFilterProxyModel::SsrfSortFilterProxyModel(QObject *parent)
: QSortFilterProxyModel(parent), less_than(0), accepts_col(0), accepts_row(0)
{
}
bool SsrfSortFilterProxyModel::lessThan(const QModelIndex& source_left, const QModelIndex& source_right) const
{
Q_ASSERT(less_than);
const QAbstractItemModel *self = this;
return less_than(const_cast<QAbstractItemModel*>(self), source_left, source_right);
}
bool SsrfSortFilterProxyModel::filterAcceptsRow(int source_row, const QModelIndex& source_parent) const
{
if (!accepts_row)
return true;
const QAbstractItemModel *self = this;
return accepts_row(const_cast<QAbstractItemModel*>(self), source_row, source_parent);
}
bool SsrfSortFilterProxyModel::filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const
{
if (!accepts_col)
return true;
const QAbstractItemModel *self = this;
return accepts_col(const_cast<QAbstractItemModel*>(self), source_column, source_parent);
}
void SsrfSortFilterProxyModel::setLessThan(less_than_cb func)
{
less_than = func;
}
void SsrfSortFilterProxyModel::setFilterRow(filter_accepts_row_cb func)
{
accepts_row = func;
}
void SsrfSortFilterProxyModel::setFilterCol(filter_accepts_col_cb func)
{
accepts_col = func;
}

View file

@ -1,34 +0,0 @@
// SPDX-License-Identifier: GPL-2.0
#ifndef SSRFSORTFILTERPROXYMODEL_H
#define SSRFSORTFILTERPROXYMODEL_H
#include <QSortFilterProxyModel>
typedef bool (*filter_accepts_col_cb) (QAbstractItemModel *model,int sourceRow, const QModelIndex& parent);
typedef bool (*filter_accepts_row_cb) (QAbstractItemModel *model,int sourceRow, const QModelIndex& parent);
typedef bool (*less_than_cb) (QAbstractItemModel *model, const QModelIndex& left, const QModelIndex& right);
/* Use this class when you wanna a quick filter.
* instead of creating a new class, just create a new instance of this class
* and plug your callback.
*/
class SsrfSortFilterProxyModel : public QSortFilterProxyModel {
Q_OBJECT
public:
SsrfSortFilterProxyModel(QObject *parent = 0);
bool lessThan(const QModelIndex& source_left, const QModelIndex& source_right) const override;
bool filterAcceptsRow(int source_row, const QModelIndex& source_parent) const override;
bool filterAcceptsColumn(int source_column, const QModelIndex& source_parent) const override;
void setLessThan(less_than_cb func);
void setFilterRow(filter_accepts_row_cb func);
void setFilterCol(filter_accepts_col_cb func);
private:
less_than_cb less_than;
filter_accepts_col_cb accepts_col;
filter_accepts_row_cb accepts_row;
};
#endif