X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fqtui%2Fchatviewsearchbar.cpp;h=5dcc11243c16a0209039b0c567732515ed07666c;hp=250e277a23769919c1e566a3b91018b034cf7050;hb=2ed35d8a6322e49ab604472a7af59592cf36ae12;hpb=e493c43cc455c1f7842f2ce90a1d0e0f72fb43c0 diff --git a/src/qtui/chatviewsearchbar.cpp b/src/qtui/chatviewsearchbar.cpp index 250e277a..5dcc1124 100644 --- a/src/qtui/chatviewsearchbar.cpp +++ b/src/qtui/chatviewsearchbar.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-08 by the Quassel Project * + * Copyright (C) 2005-09 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -32,28 +32,42 @@ 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); hide(); - ActionCollection *coll = QtUi::actionCollection(); + ActionCollection *coll = QtUi::actionCollection("General"); - Action *toggleSearchBar = coll->add("toggleSearchBar"); + QAction *toggleSearchBar = coll->action("ToggleSearchBar"); connect(toggleSearchBar, SIGNAL(toggled(bool)), SLOT(setVisible(bool))); - toggleSearchBar->setText(tr("Show Search Bar")); - toggleSearchBar->setShortcut(Qt::CTRL + Qt::Key_F); - toggleSearchBar->setCheckable(true); - Action *hideSearchBar = coll->add("hideSearchBar", toggleSearchBar, SLOT(setChecked(bool))); // always false + 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.searchEditLine, SIGNAL(textChanged(const QString &)), this, SLOT(delaySearch())); + connect(&_searchDelayTimer, SIGNAL(timeout()), this, SLOT(search())); } void ChatViewSearchBar::setVisible(bool visible) { - QWidget::setVisible(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(); - if(visible) ui.searchEditLine->setFocus(); + 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()); +}