62c7f4294cd312bfed464213c9e4e5bd3878173c
[mdictionary] / src / mdictionary / gui / DictTypeSelectDialog.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 DictTypeSelectDialog.cpp
23     \brief Implements plugin selection dialog
24
25     \author Mateusz Półrola <mateusz.polrola@comarch.pl>
26 */
27
28 #include "DictTypeSelectDialog.h"
29
30 DictTypeSelectDialog::DictTypeSelectDialog(QList<CommonDictInterface *> plugins, QWidget *parent) :
31     QDialog(parent) {
32
33     setWindowTitle(tr("Select dictionary type"));
34
35     this->plugins = plugins;
36
37     verticalLayout = new QVBoxLayout(this);
38     setLayout(verticalLayout);
39
40     pluginsListWidget = new QListWidget(this);
41
42     verticalLayout->addWidget(pluginsListWidget);
43
44     for(int i=0; i<plugins.count(); i++) {
45         QListWidgetItem* item = new QListWidgetItem(plugins[i]->type());
46         item->setData(PLUGIN_ROW_ROLE, i);
47         pluginsListWidget->addItem(item);
48     }
49
50     _selectedPlugin = 0;
51
52     connect(pluginsListWidget, SIGNAL(itemActivated(QListWidgetItem*)),
53             this, SLOT(pluginSelected(QListWidgetItem*)));
54 }
55
56 void DictTypeSelectDialog::pluginSelected(QListWidgetItem *item) {
57     _selectedPlugin = plugins[item->data(PLUGIN_ROW_ROLE).toInt()];
58     accept();
59 }
60
61 CommonDictInterface* DictTypeSelectDialog::selectedPlugin() {
62     return _selectedPlugin;
63 }
64
65 CommonDictInterface* DictTypeSelectDialog::addNewDict(
66         QList<CommonDictInterface *> plugins,
67         QWidget *parent) {
68     DictTypeSelectDialog dictSelect(plugins, parent);
69
70     if(dictSelect.exec() == QDialog::Accepted) {
71         return dictSelect.selectedPlugin();
72     }
73     else {
74         return 0;
75     }
76 }