Searchbox toggle search/filter

Clicking the icon to toggle between text search and
data filter mode for searchbox.

As part of filtering implementation.
This commit is contained in:
Mark Liversedge
2012-10-23 21:27:06 +01:00
parent 2854dfe046
commit f0e3a9cd6b
4 changed files with 43 additions and 1 deletions

View File

@@ -45,7 +45,7 @@ SearchBox::SearchBox(QWidget *parent)
searchButton->setIconSize(search.size());
searchButton->setCursor(Qt::ArrowCursor);
searchButton->setStyleSheet("QToolButton { border: none; padding: 0px; }");
connect(searchButton, SIGNAL(clicked()), this, SLOT(searchSubmit()));
connect(searchButton, SIGNAL(clicked()), this, SLOT(toggleMode()));
int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
setStyleSheet(QString( //"QLineEdit { padding-right: %1px; } "
@@ -75,6 +75,7 @@ SearchBox::SearchBox(QWidget *parent)
qMax(msz.height(), clearButton->sizeHint().height() /* + frameWidth * 2 + -2*/));
setPlaceholderText("Search...");
mode = Search;
setDragEnabled(true);
connect(this, SIGNAL(returnPressed()), this, SLOT(searchSubmit()));
}
@@ -89,6 +90,38 @@ void SearchBox::resizeEvent(QResizeEvent *)
(rect().bottom() + 1 - sz.height())/2);
}
void SearchBox::toggleMode()
{
if (mode == Search) setMode(Filter);
else setMode(Search);
}
void SearchBox::setMode(SearchBoxMode mode)
{
switch (mode) {
case Filter:
{
QPixmap filter(":images/toolbar/filter.png");
searchButton->setIcon(QIcon(filter));
searchButton->setIconSize(filter.size());
setPlaceholderText("Filter...");
}
break;
case Search:
default:
{
QPixmap search(":images/toolbar/search.png");
searchButton->setIcon(QIcon(search));
searchButton->setIconSize(search.size());
setPlaceholderText("Search...");
}
break;
}
this->mode = mode;
}
void SearchBox::updateCloseButton(const QString& text)
{
if (clearButton->isVisible() && text.isEmpty()) clearQuery();

View File

@@ -30,14 +30,21 @@ class SearchBox : public QLineEdit
Q_OBJECT
public:
enum searchboxmode { Search, Filter };
typedef enum searchboxmode SearchBoxMode;
SearchBox(QWidget *parent = 0);
// either search box or filter box
void setMode(SearchBoxMode mode);
protected:
void resizeEvent(QResizeEvent *);
private slots:
void updateCloseButton(const QString &text);
void searchSubmit();
void toggleMode();
// drop column headings from column chooser
void dragEnterEvent(QDragEnterEvent *event);
@@ -49,6 +56,7 @@ signals:
private:
QToolButton *clearButton, *searchButton;
SearchBoxMode mode;
};
#endif

View File

@@ -23,6 +23,7 @@
<file>images/toolbar/main/train.png</file>
<file>images/toolbar/clear.png</file>
<file>images/toolbar/search.png</file>
<file>images/toolbar/filter.png</file>
<file>images/maps/cycling_feed.png</file>
<file>images/maps/loop.png</file>
<file>images/maps/cycling.png</file>

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB