void Backbone::stopSearching() {
+ if(stopped)
+ return;
+
foreach(CommonDictInterface* dict, _dicts.keys())
dict->stop();
stopped = true;
searchBarWidget->search(word);
}
+
+
void MainWindow::breakSearching() {
//make sure to unset exact search mode
setExactSearch(false);
void MainWindow::historyNext() {
if(backbone->history()->nextAvailable()) {
QString next = backbone->history()->next();
- searchExact(next);
+ searchBarWidget->searchDelay(next);
}
}
void MainWindow::historyPrev() {
if(backbone->history()->prevAvailable()) {
QString prev = backbone->history()->previous();
- searchExact(prev);
+ searchBarWidget->searchDelay(prev);
}
}
connect(backbone, SIGNAL(htmlReady()),
this, SLOT(translationsReady()));
+ connect(backbone, SIGNAL(searchCanceled()),
+ this, SIGNAL(setIdle()));
+
*/
void searchExact(QString);
+
//! Gets word list from backbone and prepares received list to display
/*!
Checks if received list is empty, in that case displays suitable
bool _exactSearch;
QString searchString;
+
void connectBackbone();
void connectSearchBar();
void connectWordList();
this, SLOT(clearSearchWordToolButtonClicked()));
+ connect(&delayTimer, SIGNAL(timeout()),
+ this, SLOT(delaySearchTimeout()));
+
+
searchWordLineEdit->setFocus();
historyPrevToolButton->setEnabled(false);
}
}
+void SearchBarWidget::searchDelay(QString word) {
+ if(!_isSearching && !word.isEmpty()) {
+ searchWordLineEdit->setText(word);
+
+
+ if(delayTimer.isActive()) {
+ delayTimer.stop();
+ }
+
+ delayString = word;
+ delayTimer.start(500);
+ }
+}
+
+void SearchBarWidget::delaySearchTimeout() {
+ delayTimer.stop();
+ if(!_isSearching) {
+ emit searchForTranslations(delayString);
+ }
+}
+
void SearchBarWidget::setEnabled(bool enabled) {
searchWordLineEdit->setEnabled(enabled);
*/
void search(QString word);
+ //! Start to search for given word after 500 ms
+ /*!
+ Sets word as text in search word line edit, and wait 500 ms to start
+ search. If in meanwhile this slot is called again it will stop previous
+ timers.
+ */
+ void searchDelay(QString word);
+
//! Updates state of history buttons
void updateHistoryButtons(bool prev, bool next, bool list);
private Q_SLOTS:
void clearSearchWordToolButtonClicked();
void searchPushButtonClicked();
+ void delaySearchTimeout();
private:
bool _isSearching;
+ QTimer delayTimer;
+ QString delayString;
+
void initializeUI();
};