qml ComboBox component and GoogleDialog complete
[mdictionary] / src / include / ComboBoxModel.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 ComboBoxModel.cpp
23     \brief Contains data for ComboBox QML component
24
25     \author Marcin Kaźmierczak <marcin.kazmierczak@comarch.pl>
26 */
27
28 #include "ComboBoxModel.h"
29
30 ComboBoxModel::ComboBoxModel(QList<QString> contents, QObject *parent) :
31     QAbstractListModel(parent)
32 {
33     QHash<int, QByteArray> roles;
34     roles[ContentRole] = "content";
35     roles[NumberRole] = "number";
36     setRoleNames(roles);
37
38     setContents(contents);
39 }
40
41 int ComboBoxModel::rowCount(const QModelIndex &parent) const
42 {
43     return _contents.count();
44 }
45
46 QVariant ComboBoxModel::data(const QModelIndex &index, int role) const
47 {
48     if (index.row() < 0 || index.row() > _contents.count())
49         return QVariant();
50
51     QString item = _contents[index.row()];
52     if (role == ContentRole)
53         return item;
54     if (role == NumberRole)
55         return index.row();
56     return QVariant();
57 }
58
59 QString ComboBoxModel::selectedItem()
60 {
61     return _selectedItem;
62 }
63
64 int ComboBoxModel::selectedIndex()
65 {
66     return _selectedIndex;
67 }
68
69 void ComboBoxModel::setSelectedItem(QString item)
70 {
71     _selectedItem = item;
72 }
73
74 void ComboBoxModel::setSelectedIndex(int index)
75 {
76     _selectedIndex = index;
77 }
78
79 void ComboBoxModel::setContents(QList<QString> contents)
80 {
81     foreach (QString item, contents)
82     {
83         addItem(item);
84     }
85 }
86
87 void ComboBoxModel::addItem(QString item)
88 {
89     beginInsertRows(QModelIndex(), rowCount(), rowCount());
90     _contents << item;
91     endInsertRows();
92 }