Fix bug with app crash on exit. Add keyboard support in wordList, DictTypeSelectDialo...
[mdictionary] / src / mdictionary / gui / WordListWidget.cpp
index da98e15..acd9660 100644 (file)
@@ -35,7 +35,7 @@
 WordListWidget::WordListWidget(QWidget *parent):
     QTreeView(parent) {
 
-    isBookmarkModeActive = false;
+    _isBookmarkModeActive = false;
 
     //creating new model to store words and stars
 #ifdef Q_WS_MAEMO_5
@@ -75,10 +75,13 @@ WordListWidget::WordListWidget(QWidget *parent):
     verticalLayout->addWidget(qmlView);
 
     connect(rootObject, SIGNAL(wordSelected(QString)), this, SLOT(wordClicked(QString)));
+    connect(rootObject, SIGNAL(wordSelectedByIndex(int)), this, SLOT(wordClickedByIndex(int)));
     connect(listModel, SIGNAL(addToBookmarks(QString)), this, SLOT(addToBookmarks(QString)));
     connect(listModel, SIGNAL(removeFromBookmarks(QString)), this, SLOT(removeFromBookmarks(QString)));
 
     connect(this, SIGNAL(setWordListState(QVariant)), rootObject, SLOT(setEnabled(QVariant)));
+    connect(this, SIGNAL(setWordListEmpty(QVariant)), rootObject, SLOT(setWordListEmpty(QVariant)));
+    connect(this, SIGNAL(setFocusOnQML()), rootObject, SLOT(setFocus()));
 
 #endif
 
@@ -95,8 +98,10 @@ WordListWidget::WordListWidget(QWidget *parent):
 
 
 WordListWidget::~WordListWidget() {
+#ifdef Q_WS_MAEMO_5
     if(proxyStyle)
         delete proxyStyle;
+#endif
 }
 
 void WordListWidget::addWord(QString word, int row) {
@@ -181,17 +186,20 @@ void WordListWidget::showSearchResults(
     }
 
     if (result.count() == 0){
-        result.insert("!@#$%", QList<Translation*>());
-        wordsInBookmarks.insert("!@#$%", false);
+        //result.insert("!@#$%", QList<Translation*>());
+//        wordsInBookmarks.insert("!@#$%", false);
         Q_EMIT setWordListState(false);
+        Q_EMIT setWordListEmpty(true);
+    } else {
+        Q_EMIT setWordListEmpty(false);
     }
 
     if (listModel == 0){
         listModel = new WordListModel(this);
     }
 
-    listModel->setBookmarkModeActive(isBookmarkModeActive);
-    isBookmarkModeActive = false;
+    listModel->setBookmarkModeActive(_isBookmarkModeActive);
+    _isBookmarkModeActive = false;
     listModel->setTranslations(result, wordsInBookmarks);
 
 #endif
@@ -247,23 +255,7 @@ void WordListWidget::wordChecked(QModelIndex index) {
         }
     }
 }
-#else
-    void WordListWidget::wordClicked(QString word){
-        emit showTranslation(searchResult[word]);
-    }
-
-    void WordListWidget::addToBookmarks(QString word){
-        emit addBookmark(searchResult[word]);
-    }
-
-    void WordListWidget::removeFromBookmarks(QString word){
-        emit removeBookmark(searchResult[word]);
-    }
 
-#endif
-
-
-#ifdef Q_WS_MAEMO_5
 void WordListWidget::mouseReleaseEvent(QMouseEvent *event) {
 
     //firstly we normally handle this event
@@ -305,6 +297,29 @@ void WordListWidget::keyPressEvent(QKeyEvent *event) {
         wordClicked(selectedIndexes().at(0));
     }
 }
+#else
+    void WordListWidget::wordClicked(QString word){
+        emit showTranslation(searchResult[word]);
+    }
+
+    void WordListWidget::addToBookmarks(QString word){
+        emit addBookmark(searchResult[word]);
+    }
+
+    void WordListWidget::removeFromBookmarks(QString word){
+        emit removeBookmark(searchResult[word]);
+    }
+
+    void WordListWidget::wordClickedByIndex(int index){
+        emit showTranslation(searchResult[listModel->wordOnPosition(index)]);
+    }
+
+    void WordListWidget::setFocusOnElement(){
+        setFocus();
+        qmlView->setFocus();
+        Q_EMIT setFocusOnQML();
+    }
+
 #endif
 
 void WordListWidget::resizeColumns() {
@@ -348,5 +363,5 @@ void WordListWidget::clear() {
 }
 
 void WordListWidget::bookmarkModeActive(){
-    isBookmarkModeActive = true;
+    _isBookmarkModeActive = true;
 }