Added settings widget in xdxf plugin, added dictionaries management(adding, removing...
[mdictionary] / trunk / src / base / gui / DictManagerWidget.cpp
index c168042..313835f 100644 (file)
@@ -38,20 +38,49 @@ DictManagerWidget::DictManagerWidget(Backbone* backbone, QWidget *parent) :
     dictListWidget = new QListWidget;
     verticalLayout->addWidget(dictListWidget);
 
+    dictListWidget->setSelectionMode(QAbstractItemView::SingleSelection);
+
     addNewDictButton = new QPushButton(tr("Add"));
+    removeDictButton = new QPushButton(tr("Remove"));
+    settingsButton = new QPushButton(tr("Settings"));
+
+    removeDictButton->setEnabled(false);
+    settingsButton->setEnabled(false);
+
+    buttonGroup = new QHBoxLayout;
+
+    buttonGroup->addWidget(addNewDictButton);
+    buttonGroup->addWidget(removeDictButton);
+    buttonGroup->addWidget(settingsButton);
+
+    verticalLayout->addLayout(buttonGroup, Qt::AlignBottom);
 
-    verticalLayout->addWidget(addNewDictButton, Qt::AlignBottom);
 
     connect(addNewDictButton, SIGNAL(clicked()),
             this, SLOT(addNewDictButtonClicked()));
 
+    connect(removeDictButton, SIGNAL(clicked()),
+            this, SLOT(removeButtonClicked()));
+
+    connect(settingsButton, SIGNAL(clicked()),
+            this, SLOT(settingsButtonClicked()));
+
+    connect(dictListWidget, SIGNAL(itemClicked(QListWidgetItem*)),
+            this, SLOT(itemSelected(QListWidgetItem*)));
+
+    refreshDictsList();
+
 }
 
 
 void DictManagerWidget::refreshDictsList() {
-    QHash<CommonDictInterface*, bool> dicts = backbone->getDictionaries();
 
     dictListWidget->clear();
+    dictsHash.clear();
+
+
+    QHash<CommonDictInterface*, bool> dicts = backbone->getDictionaries();
+
 
     QHashIterator<CommonDictInterface*, bool> i(dicts);
 
@@ -71,16 +100,35 @@ void DictManagerWidget::refreshDictsList() {
         }
 
         dictListWidget->addItem(item);
+        dictsHash.insert(item, i.key());
     }
 }
 
 void DictManagerWidget::showEvent(QShowEvent *e) {
 
     refreshDictsList();
-
+    removeDictButton->setEnabled(false);
+    settingsButton->setEnabled(false);
     QWidget::showEvent(e);
 }
 
+void DictManagerWidget::hideEvent(QHideEvent *e)
+{
+    QList<CommonDictInterface*> checkedDicts;
+
+    for(int i=0; i<dictListWidget->count(); i++) {
+        QListWidgetItem* item = dictListWidget->item(i);
+        if(item->checkState() == Qt::Checked) {
+            checkedDicts.push_back(dictsHash[item]);
+        }
+    }
+    backbone->selectedDictionaries(checkedDicts);
+
+    qDebug()<<"asda";
+
+    QWidget::hideEvent(e);
+}
+
 
 void DictManagerWidget::addNewDictButtonClicked() {
     CommonDictInterface* selectedPlugin =
@@ -97,3 +145,23 @@ void DictManagerWidget::addNewDictButtonClicked() {
         }
     }
 }
+
+void DictManagerWidget::itemSelected(QListWidgetItem *item) {
+    removeDictButton->setEnabled(true);
+    settingsButton->setEnabled(true);
+}
+
+void DictManagerWidget::removeButtonClicked() {
+    QList<QListWidgetItem*> selected = dictListWidget->selectedItems();
+    if(selected.count() > 0) {
+        backbone->removeDictionary(dictsHash[selected[0]]);
+        refreshDictsList();
+    }
+}
+
+void DictManagerWidget::settingsButtonClicked() {
+    QList<QListWidgetItem*> selected = dictListWidget->selectedItems();
+    if(selected.count() > 0) {
+        dictsHash[selected[0]]->dictDialog()->changeSettings(this);
+    }
+}