Quassel IRC  Pre-Release
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros
chatviewsearchbar.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  * Copyright (C) 2005-2015 by the Quassel Project *
3  * devel@quassel-irc.org *
4  * *
5  * This program is free software; you can redistribute it and/or modify *
6  * it under the terms of the GNU General Public License as published by *
7  * the Free Software Foundation; either version 2 of the License, or *
8  * (at your option) version 3. *
9  * *
10  * This program is distributed in the hope that it will be useful, *
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
13  * GNU General Public License for more details. *
14  * *
15  * You should have received a copy of the GNU General Public License *
16  * along with this program; if not, write to the *
17  * Free Software Foundation, Inc., *
18  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
19  ***************************************************************************/
20 
21 #include "chatviewsearchbar.h"
22 
23 #include <QIcon>
24 
25 #include "action.h"
26 #include "actioncollection.h"
27 #include "qtui.h"
28 
30  : QWidget(parent)
31 {
32  ui.setupUi(this);
33  ui.hideButton->setIcon(QIcon::fromTheme("dialog-close"));
34  ui.searchUpButton->setIcon(QIcon::fromTheme("go-up"));
35  ui.searchDownButton->setIcon(QIcon::fromTheme("go-down"));
36  _searchDelayTimer.setSingleShot(true);
37 
38  layout()->setContentsMargins(0, 0, 0, 0);
39 
40  hide();
41 
42  ActionCollection *coll = QtUi::actionCollection("General");
43 
44  QAction *toggleSearchBar = coll->action("ToggleSearchBar");
45  connect(toggleSearchBar, SIGNAL(toggled(bool)), SLOT(setVisible(bool)));
46 
47  Action *hideSearchBar = coll->add<Action>("HideSearchBar", toggleSearchBar, SLOT(setChecked(bool)));
48  hideSearchBar->setShortcutConfigurable(false);
49  hideSearchBar->setShortcut(Qt::Key_Escape);
50 
51  connect(ui.hideButton, SIGNAL(clicked()), toggleSearchBar, SLOT(toggle()));
52  connect(ui.searchEditLine, SIGNAL(textChanged(const QString &)), this, SLOT(delaySearch()));
53  connect(&_searchDelayTimer, SIGNAL(timeout()), this, SLOT(search()));
54 }
55 
56 
58 {
59  // clearing the search field also removes the highlight items from the scene
60  // this should be done before the SearchBar is hidden, as the hiding triggers
61  // a resize event which can lead to strange side effects.
62  ui.searchEditLine->clear();
63  QWidget::setVisible(visible);
64  if (visible)
65  ui.searchEditLine->setFocus();
66  else
67  emit hidden();
68 }
69 
70 
72 {
73  _searchDelayTimer.start(300);
74 }
75 
76 
78 {
79  emit searchChanged(ui.searchEditLine->text());
80 }