features of DictManagerWidget restored in qml version.
[mdictionary] / src / mdictionary / gui / DictTypeModel.cpp
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 DictTypeModel.cpp
23     \brief Contains plugins data for qml UI
24
25     \author Marcin Kaźmierczak <marcin.kazmierczak@comarch.pl>
26 */
27
28 #include "DictTypeModel.h"
29
30 DictTypeModel::DictTypeModel(QList<CommonDictInterface *> plugins, QObject *parent) :
31     QAbstractListModel(parent)
32 {
33     QHash<int, QByteArray> roles;
34     roles[TypeRole] = "type";
35     roles[NumberRole] = "number";
36     setRoleNames(roles);
37
38     setDictTypes(plugins);
39 }
40
41 int DictTypeModel::rowCount(const QModelIndex &parent) const
42 {
43     return _plugins.count();
44 }
45
46 void DictTypeModel::setDictTypes(QList<CommonDictInterface *> plugins)
47 {
48     for(int i = 0; i < plugins.count(); i++)
49     {
50         addType(plugins[i]);
51     }
52 }
53
54 QVariant DictTypeModel::data(const QModelIndex & index, int role) const
55 {
56     if (index.row() < 0 || index.row() > _plugins.count())
57         return QVariant();
58
59     const CommonDictInterface* plugin = _plugins[index.row()];
60     if (role == TypeRole)
61         return plugin->type();
62     if (role == NumberRole)
63         return index.row();
64     return QVariant();
65 }
66
67 void DictTypeModel::addType(CommonDictInterface *plugin)
68 {
69     beginInsertRows(QModelIndex(), rowCount(), rowCount());
70     _plugins << plugin;
71     endInsertRows();
72 }