79804a7fdcabf2241bd4df0893e1feddf1bce100
[mdictionary] / src / plugins / xdxf / DictsProxyModel.h
1 /*******************************************************************************
2
3     This file is part of mDictionary.
4
5     mDictionary is free software: you can redistribute it and/or modify
6     it under the terms of the GNU General Public License as published by
7     the Free Software Foundation, either version 3 of the License, or
8     (at your option) any later version.
9
10     mDictionary is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13     GNU General Public License for more details.
14
15     You should have received a copy of the GNU General Public License
16     along with mDictionary.  If not, see <http://www.gnu.org/licenses/>.
17
18     Copyright 2010 Comarch S.A.
19
20 *******************************************************************************/
21
22 //Created by Mateusz Półrola
23
24 #ifndef DICTSPROXYMODEL_H
25 #define DICTSPROXYMODEL_H
26
27 #include <QSortFilterProxyModel>
28 #include <QDebug>
29
30 class DictsProxyModel : public QSortFilterProxyModel
31 {
32     Q_OBJECT
33 public:
34     DictsProxyModel(QObject *parent = 0): QSortFilterProxyModel(parent){
35
36     }
37
38     QString from() { return _from;}
39     QString to() {return _to;}
40
41     void setFrom(QString from) { _from = from; invalidateFilter(); }
42     void setTo(QString to) {_to = to; invalidateFilter();}
43
44 protected:
45     bool filterAcceptsRow(int source_row, const QModelIndex&) const {
46         QString sourceFrom = sourceModel()->data(
47                 sourceModel()->index(source_row, 0)).toString();
48         QString sourceTo = sourceModel()->data(
49                 sourceModel()->index(source_row, 1)).toString();
50
51         return ((_from.isEmpty() || sourceFrom == _from) &&
52                 (_to.isEmpty() || sourceTo == _to));
53     }
54
55     bool lessThan(const QModelIndex &left, const QModelIndex &right) const {
56         if(sortColumn() == 3) {
57             QString l = left.model()->data(left).toString();
58             l.remove(" MB");
59
60             QString r = right.model()->data(right).toString();
61             r.remove(" MB");
62
63             float lNumber = l.toFloat();
64             float rNumber = r.toFloat();
65
66             return (lNumber < rNumber);
67         }
68         else
69             QSortFilterProxyModel::lessThan(left, right);
70     }
71
72 private:
73     QString _from;
74     QString _to;
75
76 };
77
78 #endif // DICTSPROXYMODEL_H