1 #ifndef DICTSPROXYLISTMODEL_H
2 #define DICTSPROXYLISTMODEL_H
4 #include <QSortFilterProxyModel>
7 class DictsProxyListModel : public QSortFilterProxyModel
12 NumberRole=Qt::UserRole + 1,
19 DictsProxyListModel(QObject *parent = 0): QSortFilterProxyModel(parent){ }
20 QString from() { return _from;}
21 QString to() {return _to;}
22 void setFrom(QString from) { _from = from; invalidateFilter(); }
23 void setTo(QString to) {_to = to; invalidateFilter();}
26 bool filterAcceptsRow(int source_row, const QModelIndex&) const {
27 QString sourceFrom = sourceModel()->data(sourceModel()->index(source_row, 0),FromRole).toString();
28 QString sourceTo = sourceModel()->data(sourceModel()->index(source_row, 0),ToRole).toString();
29 return ((_from.isEmpty() || sourceFrom == _from) &&
30 (_to.isEmpty() || sourceTo == _to));
33 bool lessThan(const QModelIndex &left, const QModelIndex &right) const {
34 QString l = left.model()->data(left,sortRole()).toString();
35 QString r = right.model()->data(right,sortRole()).toString();
36 if(sortRole() == SizeRole){
39 float lNumber = l.toFloat();
40 float rNumber = r.toFloat();
41 return (lNumber < rNumber);
43 else if(sortRole()>Qt::UserRole)
46 QSortFilterProxyModel::lessThan(left, right);
55 #endif // DICTPROXYLISTMODEL_H