X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatviewsearchbar.cpp;h=2e43559ccdc45e9b4d5dd75809cccc1d10cca25d;hp=add0f3e29ab6d53c4a764722bf7779acaec943c6;hb=f04db2cb802b1296ca739c823495930c71d3b4ab;hpb=f824db0e31b54969e0b7fa0b5405b1e9173d482c diff --git a/src/qtui/chatviewsearchbar.cpp b/src/qtui/chatviewsearchbar.cpp index add0f3e2..2e43559c 100644 --- a/src/qtui/chatviewsearchbar.cpp +++ b/src/qtui/chatviewsearchbar.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-09 by the Quassel Project * + * Copyright (C) 2005-2013 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ #include "chatviewsearchbar.h" @@ -26,35 +26,54 @@ #include "qtui.h" ChatViewSearchBar::ChatViewSearchBar(QWidget *parent) - : QWidget(parent) + : QWidget(parent) { - ui.setupUi(this); - ui.hideButton->setIcon(BarIcon("dialog-close")); - ui.searchUpButton->setIcon(SmallIcon("go-up")); - ui.searchDownButton->setIcon(SmallIcon("go-down")); + ui.setupUi(this); + 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); + layout()->setContentsMargins(0, 0, 0, 0); - hide(); + hide(); - ActionCollection *coll = QtUi::actionCollection("General"); + ActionCollection *coll = QtUi::actionCollection("General"); - QAction *toggleSearchBar = coll->action("ToggleSearchBar"); - connect(toggleSearchBar, SIGNAL(toggled(bool)), SLOT(setVisible(bool))); + QAction *toggleSearchBar = coll->action("ToggleSearchBar"); + connect(toggleSearchBar, SIGNAL(toggled(bool)), SLOT(setVisible(bool))); - Action *hideSearchBar = coll->add("HideSearchBar", toggleSearchBar, SLOT(setChecked(bool))); - hideSearchBar->setShortcutConfigurable(false); - hideSearchBar->setShortcut(Qt::Key_Escape); + Action *hideSearchBar = coll->add("HideSearchBar", toggleSearchBar, SLOT(setChecked(bool))); + hideSearchBar->setShortcutConfigurable(false); + hideSearchBar->setShortcut(Qt::Key_Escape); - connect(ui.hideButton, SIGNAL(clicked()), toggleSearchBar, SLOT(toggle())); + 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) { - // clearing the search field also removes the highlight items from the scene - // this should be done before the SearchBar is hidden, as the hiding triggers - // a resize event which can lead to strange side effects. - ui.searchEditLine->clear(); - QWidget::setVisible(visible); - if(visible) ui.searchEditLine->setFocus(); + +void ChatViewSearchBar::setVisible(bool visible) +{ + // clearing the search field also removes the highlight items from the scene + // this should be done before the SearchBar is hidden, as the hiding triggers + // a resize event which can lead to strange side effects. + ui.searchEditLine->clear(); + QWidget::setVisible(visible); + if (visible) + ui.searchEditLine->setFocus(); + else + emit hidden(); } + +void ChatViewSearchBar::delaySearch() +{ + _searchDelayTimer.start(300); +} + + +void ChatViewSearchBar::search() +{ + emit searchChanged(ui.searchEditLine->text()); +}