Clean and order documentation in source files. Source ready to beta 2 release
[mdictionary] / src / mdictionary / gui / WordListWidget.cpp
index e44a839..d568fb7 100644 (file)
 
 *******************************************************************************/
 
-//! \file WordListWidget.cpp
-//! \author Mateusz Półrola <mateusz.polrola@comarch.pl>
+/*! \file WordListwidget.cpp
+    \brief Displays list of words found in dictionaries
+
+    \author Mateusz Półrola <mateusz.polrola@comarch.pl>
+*/
 
 #include "WordListWidget.h"
 #include "WordListProxyStyle.h"
 #include "../../include/translation.h"
+#include <QKeyEvent>
 
 
 WordListWidget::WordListWidget(QWidget *parent):
@@ -96,17 +100,30 @@ void WordListWidget::showSearchResults(
     clear();
     searchResult = result;
 
-    model->setColumnCount(2);
-    model->setRowCount(result.count());
+    if(searchResult.count()>0) {
+        setEnabled(true);
+        model->setColumnCount(2);
+        model->setRowCount(result.count());
 
-    int row=0;
-    QHash<QString, QList<Translation*> >::iterator i;
-    for(i = searchResult.begin(); i != searchResult.end(); i++) {
-           addWord(i.key(), row++);
+        int row=0;
+        QHash<QString, QList<Translation*> >::iterator i;
+        for(i = searchResult.begin(); i != searchResult.end(); i++) {
+               addWord(i.key(), row++);
+        }
+
+        model->sort(0);
+        resizeColumns();
+    }
+    else {
+        QStandardItem* item = new QStandardItem(tr("Can't find any matching words"));
+        item->setFlags(item->flags() ^ Qt::ItemIsEditable);
+        item->setTextAlignment(Qt::AlignCenter);
+        setEnabled(false);
+
+        model->setItem(0,item);
     }
 
-    model->sort(0);
-    resizeColumns();    
+    setFocus();
 }
 
 void WordListWidget::wordClicked(QModelIndex index) {
@@ -136,6 +153,24 @@ void WordListWidget::wordChecked(QModelIndex index) {
     }
     else {
         Q_EMIT removeBookmark(searchResult[item.data().toString()]);
+
+        Translation* t;
+        bool onlyBookmarks = true;
+        foreach(t, searchResult[item.data().toString()]) {
+            if(t->isBookmark() == 1 || t->isBookmark()==0) {
+
+                onlyBookmarks = false;
+                t->setBookmark(0);
+            }
+            else {
+                searchResult[item.data().toString()].removeAt(searchResult[item.data().toString()].indexOf(t));
+            }
+        }
+
+        if(onlyBookmarks) {
+            searchResult.remove(item.data().toString());
+            model->removeRow(item.row());
+        }
     }
 }
 
@@ -177,6 +212,16 @@ void WordListWidget::resizeColumns() {
     setColumnWidth(1, checkBoxWidth);
 }
 
+void WordListWidget::keyPressEvent(QKeyEvent *event) {
+    QTreeView::keyPressEvent(event);
+
+    if(event->key() == Qt::Key_Return || event->key() == Qt::Key_Enter) {
+        if(selectedIndexes().count() == 0) return;
+
+        wordClicked(selectedIndexes().at(0));
+    }
+}
+
 void WordListWidget::lockList() {
     setEnabled(false);
 }