Add small delay to chatview search
authorSebastian Goth <seezer@roath.org>
Thu, 24 Sep 2009 20:30:57 +0000 (22:30 +0200)
committerManuel Nickschas <sputnick@quassel-irc.org>
Mon, 28 Sep 2009 13:53:13 +0000 (15:53 +0200)
Adding 300ms delay until chatview searchbar updates the view.
CPU time wasted--

src/qtui/bufferwidget.cpp
src/qtui/chatviewsearchbar.cpp
src/qtui/chatviewsearchbar.h

index c514ab8..135c0d1 100644 (file)
@@ -50,7 +50,7 @@ BufferWidget::BufferWidget(QWidget *parent)
   _chatViewSearchController->setSearchMsgs(ui.searchBar->searchMsgsBox()->isChecked());
   _chatViewSearchController->setSearchOnlyRegularMsgs(ui.searchBar->searchOnlyRegularMsgsBox()->isChecked());
 
-  connect(ui.searchBar->searchEditLine(), SIGNAL(textChanged(const QString &)),
+  connect(ui.searchBar, SIGNAL(searchChanged(const QString &)),
          _chatViewSearchController, SLOT(setSearchString(const QString &)));
   connect(ui.searchBar->caseSensitiveBox(), SIGNAL(toggled(bool)),
          _chatViewSearchController, SLOT(setCaseSensitive(bool)));
index add0f3e..19fce8a 100644 (file)
@@ -32,6 +32,7 @@ ChatViewSearchBar::ChatViewSearchBar(QWidget *parent)
   ui.hideButton->setIcon(BarIcon("dialog-close"));
   ui.searchUpButton->setIcon(SmallIcon("go-up"));
   ui.searchDownButton->setIcon(SmallIcon("go-down"));
+  _searchDelayTimer.setSingleShot(true);
 
   layout()->setContentsMargins(0, 0, 0, 0);
 
@@ -47,6 +48,8 @@ ChatViewSearchBar::ChatViewSearchBar(QWidget *parent)
   hideSearchBar->setShortcut(Qt::Key_Escape);
 
   connect(ui.hideButton, SIGNAL(clicked()), toggleSearchBar, SLOT(toggle()));
+  connect(ui.searchEditLine, SIGNAL(textChanged(const QString &)), this, SLOT(delaySearch()));
+  connect(&_searchDelayTimer, SIGNAL(timeout()), this, SLOT(search()));
 }
 
 void ChatViewSearchBar::setVisible(bool visible) {
@@ -58,3 +61,10 @@ void ChatViewSearchBar::setVisible(bool visible) {
   if(visible) ui.searchEditLine->setFocus();
 }
 
+void ChatViewSearchBar::delaySearch() {
+  _searchDelayTimer.start(300);
+}
+
+void ChatViewSearchBar::search() {
+  emit searchChanged(ui.searchEditLine->text());
+}
index 708cbc3..497c5dd 100644 (file)
@@ -24,6 +24,7 @@
 #include "ui_chatviewsearchbar.h"
 
 #include <QWidget>
+#include <QTimer>
 
 class QAction;
 
@@ -44,8 +45,16 @@ public:
 public slots:
   void setVisible(bool);
 
+signals:
+  void searchChanged(const QString &);
+
+private slots:
+  void delaySearch();
+  void search();
+
 private:
   Ui::ChatViewSearchBar ui;
+  QTimer _searchDelayTimer;
 };
 
 #endif //CHATVIEWSEARCHBAR_H