*******************************************************************************/
-//! \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):
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) {
}
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());
+ }
}
}
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);
}