diff --git a/src/SearchBox.cpp b/src/SearchBox.cpp
index aee1d49aa..849b9717f 100644
--- a/src/SearchBox.cpp
+++ b/src/SearchBox.cpp
@@ -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();
diff --git a/src/SearchBox.h b/src/SearchBox.h
index cb53b732b..d2fb8ada6 100644
--- a/src/SearchBox.h
+++ b/src/SearchBox.h
@@ -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
diff --git a/src/application.qrc b/src/application.qrc
index 0ed5af654..566b1208d 100644
--- a/src/application.qrc
+++ b/src/application.qrc
@@ -23,6 +23,7 @@
images/toolbar/main/train.png
images/toolbar/clear.png
images/toolbar/search.png
+ images/toolbar/filter.png
images/maps/cycling_feed.png
images/maps/loop.png
images/maps/cycling.png
diff --git a/src/images/toolbar/filter.png b/src/images/toolbar/filter.png
new file mode 100644
index 000000000..9aff45fd6
Binary files /dev/null and b/src/images/toolbar/filter.png differ