From f0e3a9cd6bcce508235535e289c8bd8f38cefdd2 Mon Sep 17 00:00:00 2001 From: Mark Liversedge Date: Tue, 23 Oct 2012 21:27:06 +0100 Subject: [PATCH] Searchbox toggle search/filter Clicking the icon to toggle between text search and data filter mode for searchbox. As part of filtering implementation. --- src/SearchBox.cpp | 35 +++++++++++++++++++++++++++++++++- src/SearchBox.h | 8 ++++++++ src/application.qrc | 1 + src/images/toolbar/filter.png | Bin 0 -> 1047 bytes 4 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 src/images/toolbar/filter.png 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 0000000000000000000000000000000000000000..9aff45fd6572909a13707aab02e01649aa20195b GIT binary patch literal 1047 zcmV+y1nB#TP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2iyu5 z6bTsj*D1gN00WmvL_t(Y$F-EtOJi3Q$G`X8yqCNrCRoOSWMT0isIwVxRdJR@gtpko zEF7#0+pQoiloaVghEObs3uogZG*oesQUfiB1%-$$EyOB>TBx>yCb7||$;-X(*XhDh zGMcuT!G7Vvdxvw*=Y7xp!SElNnVE?&#$H!d^}eDg9sqD0M;eB46buIc7#kZaZ*Fd) zr>CcBJ!||}TwFvf7Q@uklpcvj-V2Ar{T}Xl13=VqoS@@4;GDzf^Wk2{y|d%vzy7Qn z#?O^XB|SPi`pv%rR#sLpI5>!8GCAkGqYg_gw0|Nt3lgT88hlg)FSX*2BQPZ@CQc4(x0U<7%8g&DrE+B+} z=G735MA6;djeI^2P167XZEbA`27@>~J)P_8>-+Gkr_u;$Z*PA{*VY&a)O4;ygi56X zB7);MAR=(i;q`i{qobq0G4}<4<2YZw*4_@=wm~4U7Y$y^eGUKs*LC5#E)>oY3WeD3 zdwZWZ=JLh`-rnB+J`@Ul+||_uUDsh42CCI6>h(ILln_EdVG20sux%TvrXd^-qqDOU zwq?=s^76_1BO~uN0z6kQu~-ZM&eG}hrpJ{?KRg}} z2_dLhEWSN4F>&i>JvRf9NCW_WT3A?k76=5!Ov}3E)3$Bsx_-H%0CsV4@pyK2RyLc4 z(kwVWK8~TGp$`rY4vI#tM&!~hKp+r+s;am+KmRTskAL+~S4~sE^z<}RsT9`N*WWA@ z3d}T3Fy+z)V+;g9*LAAZYI0|LXCRSC;FUE$KmXCzFIyy~B-1jfP%O~S&JN{rIa*p; zdW5@BHk{{DUi0E7@I7K^_%p4K}7sG15qKV&ac*K#5e zK(71Jqiq=g*F~#ye