┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
path: root/src/search
diff options
context:
space:
mode:
authorEmmanuel Pescosta <[email protected]>2013-09-05 16:22:59 +0200
committerEmmanuel Pescosta <[email protected]>2013-09-05 16:22:59 +0200
commite1d88c4d69ba0fb38951954dceab937741528eab (patch)
treec6d2759e0628a431880fe1ca2ad1519c4e5296c6 /src/search
parent5df1b07bbc5cf669da1fb1a4a128755e7567c6a1 (diff)
Fix Bug 296970 - split view wrong behavior with search tab
Implemented setActive(bool active), isActive() and activated() signal for DolphinSearchBox - similar to the KUrlNavigator implementation. BUG: 296970 FIXED-IN: 4.11.2 REVIEW: 112534
Diffstat (limited to 'src/search')
-rw-r--r--src/search/dolphinsearchbox.cpp35
-rw-r--r--src/search/dolphinsearchbox.h25
2 files changed, 60 insertions, 0 deletions
diff --git a/src/search/dolphinsearchbox.cpp b/src/search/dolphinsearchbox.cpp
index ef9c2bfcf..cf1f0c8e5 100644
--- a/src/search/dolphinsearchbox.cpp
+++ b/src/search/dolphinsearchbox.cpp
@@ -58,6 +58,7 @@ DolphinSearchBox::DolphinSearchBox(QWidget* parent) :
QWidget(parent),
m_startedSearching(false),
m_readOnly(false),
+ m_active(true),
m_topLayout(0),
m_searchLabel(0),
m_searchInput(0),
@@ -171,6 +172,22 @@ bool DolphinSearchBox::isReadOnly() const
return m_readOnly;
}
+void DolphinSearchBox::setActive(bool active)
+{
+ if (active != m_active) {
+ m_active = active;
+
+ if (active) {
+ emit activated();
+ }
+ }
+}
+
+bool DolphinSearchBox::isActive() const
+{
+ return m_active;
+}
+
bool DolphinSearchBox::event(QEvent* event)
{
if (event->type() == QEvent::Polish) {
@@ -199,6 +216,21 @@ void DolphinSearchBox::keyReleaseEvent(QKeyEvent* event)
}
}
+bool DolphinSearchBox::eventFilter(QObject* obj, QEvent* event)
+{
+ switch (event->type()) {
+ case QEvent::FocusIn:
+ setActive(true);
+ setFocus();
+ break;
+
+ default:
+ break;
+ }
+
+ return QObject::eventFilter(obj, event);
+}
+
void DolphinSearchBox::emitSearchRequest()
{
m_startSearchTimer->stop();
@@ -253,6 +285,7 @@ void DolphinSearchBox::slotFacetChanged()
void DolphinSearchBox::initButton(QToolButton* button)
{
+ button->installEventFilter(this);
button->setAutoExclusive(true);
button->setAutoRaise(true);
button->setCheckable(true);
@@ -298,6 +331,7 @@ void DolphinSearchBox::init()
// Create search box
m_searchInput = new KLineEdit(this);
+ m_searchInput->installEventFilter(this);
m_searchInput->setClearButtonShown(true);
m_searchInput->setFont(KGlobalSettings::generalFont());
setFocusProxy(m_searchInput);
@@ -348,6 +382,7 @@ void DolphinSearchBox::init()
connect(m_facetsToggleButton, SIGNAL(clicked()), this, SLOT(slotFacetsButtonToggled()));
m_facetsWidget = new DolphinFacetsWidget(this);
+ m_facetsWidget->installEventFilter(this);
m_facetsWidget->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Maximum);
connect(m_facetsWidget, SIGNAL(facetChanged()), this, SLOT(slotFacetChanged()));
diff --git a/src/search/dolphinsearchbox.h b/src/search/dolphinsearchbox.h
index f3cc535d6..e4c14b7cb 100644
--- a/src/search/dolphinsearchbox.h
+++ b/src/search/dolphinsearchbox.h
@@ -87,10 +87,27 @@ public:
void setReadOnly(bool readOnly, const KUrl& query = KUrl());
bool isReadOnly() const;
+ /**
+ * Set the search box to the active mode, if \a active
+ * is true. The active mode is default. The inactive mode only differs
+ * visually from the active mode, no change of the behavior is given.
+ *
+ * Using the search box in the inactive mode is useful when having split views,
+ * where the inactive view is indicated by an search box visually.
+ */
+ void setActive(bool active);
+
+ /**
+ * @return True, if the search box is in the active mode.
+ * @see DolphinSearchBox::setActive()
+ */
+ bool isActive() const;
+
protected:
virtual bool event(QEvent* event);
virtual void showEvent(QShowEvent* event);
virtual void keyReleaseEvent(QKeyEvent* event);
+ virtual bool eventFilter(QObject* obj, QEvent* event);
signals:
/**
@@ -111,6 +128,13 @@ signals:
*/
void closeRequest();
+ /**
+ * Is emitted, if the searchbox has been activated by
+ * an user interaction
+ * @see DolphinSearchBox::setActive()
+ */
+ void activated();
+
private slots:
void emitSearchRequest();
void emitCloseRequest();
@@ -137,6 +161,7 @@ private:
private:
bool m_startedSearching;
bool m_readOnly;
+ bool m_active;
QVBoxLayout* m_topLayout;