Merge branch 'master' into google
[mdictionary] / trunk / src / base / gui / SearchBarWidget.cpp
index 476ec26..6921e26 100644 (file)
 #include "HistoryListDialog.h"
 
 
-SearchBarWidget::SearchBarWidget(Backbone* backbone, QWidget *parent) :
+SearchBarWidget::SearchBarWidget(QWidget *parent) :
     QWidget(parent) {
 
-    this->backbone = backbone;
-
-    history = backbone->history();
-
     initializeUI();
 
-    setMaximumHeight(150);
 
     _isSearching = false;
 
@@ -48,37 +43,27 @@ SearchBarWidget::SearchBarWidget(Backbone* backbone, QWidget *parent) :
             this, SLOT(searchPushButtonClicked()));
 
     connect(historyNextToolButton, SIGNAL(clicked()),
-            this, SLOT(historyNextToolButtonClicked()));
+            this, SIGNAL(historyNext()));
 
     connect(historyPrevToolButton, SIGNAL(clicked()),
-            this, SLOT(historyPrevToolButtonClicked()));
+            this, SIGNAL(historyPrev()));
 
     connect(historyShowToolButton, SIGNAL(clicked()),
-            this, SLOT(historyShowToolButtonClicked()));
+            this, SIGNAL(historyShow()));
 
     connect(clearSearchWordToolButton, SIGNAL(clicked()),
             this, SLOT(clearSearchWordToolButtonClicked()));
 
 
-    //connects request to backbone
-    connect(this, SIGNAL(searchForTranslations(QString)),
-            backbone, SLOT(search(QString)));
-
-    connect(this, SIGNAL(stopSearching()),
-            backbone, SLOT(stopSearching()));
-
-    connect(backbone, SIGNAL(ready()),
-            this, SLOT(setIdle()));
-
-    connect(backbone, SIGNAL(htmlReady()),
-            this, SLOT(setIdle()));
+    connect(&delayTimer, SIGNAL(timeout()),
+            this, SLOT(delaySearchTimeout()));
 
 
-    connect(history, SIGNAL(historyChanged(bool,bool,bool)),
-            this, SLOT(updateHistoryButtons(bool,bool,bool)));
-
     searchWordLineEdit->setFocus();
 
+    historyPrevToolButton->setEnabled(false);
+    historyNextToolButton->setEnabled(false);
+    historyShowToolButton->setEnabled(false);
     setEnabled(true);
 }
 
@@ -99,52 +84,108 @@ QIcon SearchBarWidget::generateIcon(QIcon oryginal, qreal rotation) {
     QIcon newIcon;
     newIcon.addPixmap(p);
 
-    QPainter painter(&p);
-    painter.fillRect(p.rect(), QColor(0,0,0,192));
 
-    newIcon.addPixmap(p, QIcon::Disabled, QIcon::Off);
+    #ifdef Q_WS_MAEMO_5
+        QPainter painter(&p);
+        painter.fillRect(p.rect(), QColor(0,0,0,192));
+
+        newIcon.addPixmap(p, QIcon::Disabled, QIcon::Off);
+    #endif
 
     return newIcon;
 }
 
 
 void SearchBarWidget::initializeUI() {
+
+    #ifdef Q_WS_MAEMO_5
+        setMaximumHeight(150);
+    #else
+        setMaximumHeight(70);
+    #endif
+
+
     horizontalLayout = new QHBoxLayout();
     verticalLayout = new QVBoxLayout();
 
 
     searchPushButton = new QPushButton(tr("Search"));
-    searchPushButton->setMinimumWidth(150);
+    searchPushButton->setMinimumWidth(125);
 
 
     searchWordLineEdit = new QLineEdit();
-    searchWordLineEdit->setMinimumWidth(300);
+    searchWordLineEdit->setMinimumWidth(250);
+
+    #ifndef Q_WS_MAEMO_5
+        searchWordLineEdit->setMinimumHeight(
+                searchWordLineEdit->sizeHint().height()*3/2);
+    #endif
+
+
     //create layout for lineEdit to have clear button on it
-    QHBoxLayout* lineEditLayout = new QHBoxLayout;
+    QHBoxLayout* lineEditLayout = new QHBoxLayout();
     searchWordLineEdit->setLayout(lineEditLayout);
 
 
     clearSearchWordToolButton = new QToolButton();
-    clearSearchWordToolButton->setIcon(QIcon::fromTheme("general_stop"));
-    //tool buttons will have size 2 times smaller
-    clearSearchWordToolButton->setMaximumSize(
-            clearSearchWordToolButton->sizeHint().width()/2,
-            clearSearchWordToolButton->sizeHint().height()/2);
+    #ifdef Q_WS_MAEMO_5
+        clearSearchWordToolButton->setIcon(QIcon::fromTheme("general_stop"));
+        //tool buttons will have size 2 times smaller
+        clearSearchWordToolButton->setMaximumSize(
+                clearSearchWordToolButton->sizeHint().height()/2,
+                clearSearchWordToolButton->sizeHint().height()/2);
+        lineEditLayout->setContentsMargins(0,0,10,0);
+    #else
+        clearSearchWordToolButton->setIcon(QIcon::fromTheme("edit-clear"));
+        clearSearchWordToolButton->setMinimumSize(
+                searchWordLineEdit->sizeHint().height()*1.2,
+                searchWordLineEdit->sizeHint().height()*1.2);
+        lineEditLayout->setContentsMargins(0,0,5,0);
+    #endif
 
 
     historyNextToolButton = new QToolButton();
-    historyNextToolButton->setIcon(
-            generateIcon(QIcon::fromTheme("general_forward")));
+    #ifdef Q_WS_MAEMO_5
+        historyNextToolButton->setIcon(
+                generateIcon(QIcon::fromTheme("general_forward")));
+    #else
+        historyNextToolButton->setIcon(
+                generateIcon(QIcon::fromTheme("go-next")));
+    #endif
+
+
 
     historyPrevToolButton = new QToolButton();
-    historyPrevToolButton->setIcon(
-            generateIcon(QIcon::fromTheme("general_back")));
+    #ifdef Q_WS_MAEMO_5
+        historyPrevToolButton->setIcon(
+                generateIcon(QIcon::fromTheme("general_back")));
+    #else
+        historyPrevToolButton->setIcon(
+                generateIcon(QIcon::fromTheme("go-previous")));
+    #endif
 
-    historyShowToolButton = new QToolButton();
-    historyShowToolButton->setIcon(
-            generateIcon(QIcon::fromTheme("general_back"), 90));
 
 
+    historyShowToolButton = new QToolButton();
+    #ifdef Q_WS_MAEMO_5
+        historyShowToolButton->setIcon(
+                generateIcon(QIcon::fromTheme("general_back"), 90));
+    #else
+        historyShowToolButton->setIcon(
+                generateIcon(QIcon::fromTheme("go-up")));
+    #endif
+
+    /*fullScreenToolButton = new QToolButton();
+    #ifdef Q_WS_MAEMO_5
+        fullScreenToolButton->setIcon(
+                generateIcon(QIcon::fromTheme("general_fullsize")));
+    #else
+        fullScreenToolButton->setIcon(
+                generateIcon(QIcon::fromTheme("view-fullscreen")));
+        fullScreenToolButton->setMinimumSize(
+                fullScreenToolButton->sizeHint().height()*2,
+                fullScreenToolButton->sizeHint().height()*2);
+    #endif*/
 
     searchingProgressBar = new QProgressBar();
     //progress bar have minimum and maximum values set to 0, which will effect
@@ -152,7 +193,9 @@ void SearchBarWidget::initializeUI() {
     searchingProgressBar->setMinimum(0);
     searchingProgressBar->setMaximum(0);
     searchingProgressBar->hide();
-    searchingProgressBar->setMaximumHeight(50);
+    #ifdef Q_WS_MAEMO_5
+        searchingProgressBar->setMaximumHeight(50);
+    #endif
 
 
     setLayout(verticalLayout);
@@ -165,10 +208,11 @@ void SearchBarWidget::initializeUI() {
     horizontalLayout->addWidget(historyPrevToolButton);
     horizontalLayout->addWidget(historyShowToolButton);
     horizontalLayout->addWidget(historyNextToolButton);
+   // horizontalLayout->addWidget(fullScreenToolButton);
 
     //adding clear toolButton to textEdit with right alignment
-    lineEditLayout->addWidget(clearSearchWordToolButton, 0,
-                              Qt::AlignRight | Qt::AlignVCenter);
+    lineEditLayout->addWidget(clearSearchWordToolButton, 0, Qt::AlignRight);
+
 
     verticalLayout->addLayout(horizontalLayout);
 }
@@ -176,8 +220,7 @@ void SearchBarWidget::initializeUI() {
 
 void SearchBarWidget::searchPushButtonClicked() {
     if(_isSearching) {
-        setIdle();
-        emit stopSearching();
+        Q_EMIT stopSearching();
     }
     else {
         search(searchWordLineEdit->text());
@@ -188,19 +231,38 @@ void SearchBarWidget::searchPushButtonClicked() {
 void SearchBarWidget::search(QString word) {
     if(!_isSearching && !word.isEmpty()) {
         searchWordLineEdit->setText(word);
-        setBusy();
-        history->add(word);
-        emit searchForTranslations(word);
+        Q_EMIT searchForTranslations(word);
+    }
+}
+
+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) {
+        Q_EMIT searchForTranslations(delayString);
     }
 }
 
 void SearchBarWidget::setEnabled(bool enabled) {
     searchWordLineEdit->setEnabled(enabled);
 
-    if(enabled) {
-        historyNextToolButton->setEnabled(history->nextAvailable());
-        historyPrevToolButton->setEnabled(history->prevAvailable());
-        historyShowToolButton->setEnabled(history->listAvailable());
+    if(!enabled) {
+        historyPrevToolButton->setEnabled(false);
+        historyNextToolButton->setEnabled(false);
+        historyShowToolButton->setEnabled(false);
     }
 }
 
@@ -210,7 +272,6 @@ void SearchBarWidget::setBusy() {
     searchPushButton->setText(tr("Stop"));
     setEnabled(false);
     _isSearching = true;
-    emit busy();
 }
 
 void SearchBarWidget::setIdle() {
@@ -219,39 +280,18 @@ void SearchBarWidget::setIdle() {
     searchPushButton->setText(tr("Search"));
     setEnabled(true);
     _isSearching = false;
-    emit idle();
+    Q_EMIT refreshHistoryButtons();
 }
 
-void SearchBarWidget::historyNextToolButtonClicked() {
-    QString next = history->next();
-    if(!next.isEmpty()) {
-        searchWordLineEdit->setText(next);
-    }
-}
-
-void SearchBarWidget::historyPrevToolButtonClicked() {
-    QString prev = history->previous();
-    if(!prev.isEmpty()) {
-        searchWordLineEdit->setText(prev);
-    }
-}
-
-void SearchBarWidget::historyShowToolButtonClicked() {
-    HistoryListDialog listDialog(history, this);
-    listDialog.exec();
-}
 
 void SearchBarWidget::clearSearchWordToolButtonClicked() {
     searchWordLineEdit->clear();
 }
 
 
-bool SearchBarWidget::isSearching() const {
-    return _isSearching;
-}
 
 void SearchBarWidget::updateHistoryButtons(bool prev, bool next, bool list) {
-    if(!isSearching()) {
+    if(!_isSearching) {
         historyPrevToolButton->setEnabled(prev);
         historyNextToolButton->setEnabled(next);
         historyShowToolButton->setEnabled(list);