Create the sorting method.

This method should remove a row on the dive list model
visualization if none of the tags that it have are marked
as 'visible'.

Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Tomaz Canabrava 2014-09-17 16:18:37 -03:00 committed by Dirk Hohndel
parent a6e9a1eab5
commit 4e3689370d
2 changed files with 34 additions and 2 deletions

View file

@ -2150,3 +2150,28 @@ bool TagFilterModel::setData(const QModelIndex &index, const QVariant &value, in
}
return false;
}
TagFilterSortModel::TagFilterSortModel(QObject *parent): QSortFilterProxyModel(parent)
{
}
bool TagFilterSortModel::filterAcceptsRow(int source_row, const QModelIndex &source_parent) const
{
QModelIndex index0 = sourceModel()->index(source_row, 0, source_parent);
QVariant diveVariant = sourceModel()->data(index0, DiveTripModel::DIVE_ROLE);
struct dive* d = (struct dive* ) diveVariant.value<void*>();
if(!d)
return false; // it's a trip.
// Checked means 'Show', Unchecked means 'Hide'.
struct tag_entry *head = d->tag_list;
while(head) {
QString tagName(head->tag->name);
int index = TagFilterModel::instance()->stringList().indexOf(tagName);
if (TagFilterModel::instance()->checkState[index] == false )
return true;
}
return false;
}

View file

@ -11,6 +11,7 @@
#include <QCoreApplication>
#include <QStringList>
#include <QStringListModel>
#include <QSortFilterProxyModel>
#include "../dive.h"
#include "../divelist.h"
@ -217,7 +218,6 @@ struct TripItem;
class TreeModel : public QAbstractItemModel {
Q_OBJECT
public:
TreeModel(QObject *parent = 0);
virtual ~TreeModel();
@ -425,10 +425,17 @@ public:
virtual QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
virtual bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
virtual Qt::ItemFlags flags(const QModelIndex &index) const;
bool *checkState;
public slots:
void repopulate();
private:
explicit TagFilterModel(QObject *parent = 0);
bool *checkState;
};
class TagFilterSortModel : public QSortFilterProxyModel {
Q_OBJECT
public:
TagFilterSortModel(QObject *parent = 0);
virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
};
#endif // MODELS_H