Clean and order documentation in source files. Source ready to beta 2 release
[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     \file DictsProxyModel.h
23     \brief roxy model used for filtering and sorting informations about xdxf dictionaries.
24
25     \author Mateusz Półrola <mateusz.polrola@gmail.com>
26 */
27
28 #ifndef DICTSPROXYMODEL_H
29 #define DICTSPROXYMODEL_H
30
31 #include <QSortFilterProxyModel>
32 #include <QDebug>
33
34
35 /*!
36     Proxy model used for filtering and sorting informations about xdxf dictionaries.
37     It allow to filter dictionaries based on their langages
38 */
39 class DictsProxyModel : public QSortFilterProxyModel
40 {
41     Q_OBJECT
42 public:
43     DictsProxyModel(QObject *parent = 0): QSortFilterProxyModel(parent){
44
45     }
46
47     /*!
48         Returns currently setted language used to filter dictionaries
49         based on dictionarie's language from
50     */
51     QString from() { return _from;}
52
53     /*!
54         Returns currently setted language used to filter dictionaries
55         based on dictionarie's language to
56     */
57     QString to() {return _to;}
58
59
60     /*!
61         Sets currently setted language used to filter dictionaries based
62         on dictionarie's language from
63     */
64     void setFrom(QString from) { _from = from; invalidateFilter(); }
65
66     /*!
67         Sets currently setted language used to filter dictionaries
68         based on dictionarie's language to
69     */
70     void setTo(QString to) {_to = to; invalidateFilter();}
71
72 protected:
73     //! Filtering passed row
74     bool filterAcceptsRow(int source_row, const QModelIndex&) const {
75         QString sourceFrom = sourceModel()->data(
76                 sourceModel()->index(source_row, 0)).toString();
77         QString sourceTo = sourceModel()->data(
78                 sourceModel()->index(source_row, 1)).toString();
79
80         return ((_from.isEmpty() || sourceFrom == _from) &&
81                 (_to.isEmpty() || sourceTo == _to));
82     }
83
84     /*!
85         Sorting, if sort column is set to column containing size of dictionary,
86         string containing size of it is converted to fload and compared to
87         other dict size
88     */
89     bool lessThan(const QModelIndex &left, const QModelIndex &right) const {
90         if(sortColumn() == 3) {
91             QString l = left.model()->data(left).toString();
92             l.remove(" MB");
93
94             QString r = right.model()->data(right).toString();
95             r.remove(" MB");
96
97             float lNumber = l.toFloat();
98             float rNumber = r.toFloat();
99
100             return (lNumber < rNumber);
101         }
102         else
103             QSortFilterProxyModel::lessThan(left, right);
104     }
105
106 private:
107     QString _from;
108     QString _to;
109
110 };
111
112 #endif // DICTSPROXYMODEL_H