add "this" when create Qt obiect.
[mdictionary] / trunk / src / base / gui / DictTypeSelectDialog.cpp
index 9af00f2..4d0e317 100644 (file)
 DictTypeSelectDialog::DictTypeSelectDialog(QList<CommonDictInterface *> plugins, QWidget *parent) :
     QDialog(parent) {
 
+    setWindowTitle(tr("Select dictionary type"));
+
     this->plugins = plugins;
 
-    CommonDictInterface* i;
-    foreach(i, plugins) {
-        QListWidgetItem* item = new QListWidgetItem(i->type());
+    verticalLayout = new QVBoxLayout(this);
+    setLayout(verticalLayout);
+
+    pluginsListWidget = new QListWidget(this);
+
+    verticalLayout->addWidget(pluginsListWidget);
+
+    for(int i=0; i<plugins.count(); i++) {
+        QListWidgetItem* item = new QListWidgetItem(plugins[i]->type());
+        item->setData(PLUGIN_ROW_ROLE, i);
         pluginsListWidget->addItem(item);
     }
 
+    _selectedPlugin = NULL;
 
+    connect(pluginsListWidget, SIGNAL(itemClicked(QListWidgetItem*)),
+            this, SLOT(pluginSelected(QListWidgetItem*)));
+}
+
+void DictTypeSelectDialog::pluginSelected(QListWidgetItem *item) {
+    _selectedPlugin = plugins[item->data(PLUGIN_ROW_ROLE).toInt()];
+    accept();
+}
+
+CommonDictInterface* DictTypeSelectDialog::selectedPlugin() {
+    return _selectedPlugin;
+}
+
+CommonDictInterface* DictTypeSelectDialog::addNewDict(
+        QList<CommonDictInterface *> plugins,
+        QWidget *parent) {
+    DictTypeSelectDialog dictSelect(plugins, parent);
+
+    if(dictSelect.exec() == QDialog::Accepted) {
+        return dictSelect.selectedPlugin();
+    }
+    else {
+        return NULL;
+    }
 }