┌   ┐
54
└   ┘

summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank Reininghaus <[email protected]>2013-09-09 21:21:43 +0200
committerFrank Reininghaus <[email protected]>2013-09-09 21:27:22 +0200
commit258f0f60feb76876c846294c23121d41997ddc34 (patch)
tree7f5ad16a1e10a4418bf6dc936cadd85849b98ff7
parent7e30467679a403f953e2547894febb51e8a3d78b (diff)
parent2d8872c3accbf4a6f07e3ce4d220c9f87057545a (diff)
Merge remote-tracking branch 'origin/KDE/4.11'
The most recent commit from the KDE/4.11 branch (new unit test) had to be modified slightly due to the changed signal emission when resorting the model changes only the groups, and not the order of the items (groupsChaged instead of itemsMoved).
-rw-r--r--src/dolphinviewcontainer.cpp2
-rw-r--r--src/search/dolphinsearchbox.cpp35
-rw-r--r--src/search/dolphinsearchbox.h25
-rw-r--r--src/tests/kfileitemmodeltest.cpp18
4 files changed, 80 insertions, 0 deletions
diff --git a/src/dolphinviewcontainer.cpp b/src/dolphinviewcontainer.cpp
index 3ea81e4ba..cc26198a0 100644
--- a/src/dolphinviewcontainer.cpp
+++ b/src/dolphinviewcontainer.cpp
@@ -98,6 +98,7 @@ DolphinViewContainer::DolphinViewContainer(const KUrl& url, QWidget* parent) :
m_searchBox = new DolphinSearchBox(this);
m_searchBox->hide();
+ connect(m_searchBox, SIGNAL(activated()), this, SLOT(activate()));
connect(m_searchBox, SIGNAL(closeRequest()), this, SLOT(closeSearchBox()));
connect(m_searchBox, SIGNAL(searchRequest()), this, SLOT(startSearching()));
connect(m_searchBox, SIGNAL(returnPressed(QString)), this, SLOT(requestFocus()));
@@ -195,6 +196,7 @@ KUrl DolphinViewContainer::url() const
void DolphinViewContainer::setActive(bool active)
{
+ m_searchBox->setActive(active);
m_urlNavigator->setActive(active);
m_view->setActive(active);
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;
diff --git a/src/tests/kfileitemmodeltest.cpp b/src/tests/kfileitemmodeltest.cpp
index 1d9646b3e..797920246 100644
--- a/src/tests/kfileitemmodeltest.cpp
+++ b/src/tests/kfileitemmodeltest.cpp
@@ -1286,6 +1286,24 @@ void KFileItemModelTest::testNameRoleGroups()
expectedGroups << QPair<int, QVariant>(2, QLatin1String("D"));
expectedGroups << QPair<int, QVariant>(3, QLatin1String("E"));
QCOMPARE(m_model->groups(), expectedGroups);
+
+ // Change d.txt back to c.txt, but this time using the dir lister's refreshItems() signal.
+ const KFileItem fileItemD = m_model->fileItem(2);
+ KFileItem fileItemC = fileItemD;
+ KUrl urlC = fileItemC.url();
+ urlC.setFileName("c.txt");
+ fileItemC.setUrl(urlC);
+
+ m_model->slotRefreshItems(QList<QPair<KFileItem, KFileItem> >() << qMakePair(fileItemD, fileItemC));
+ QVERIFY(QTest::kWaitForSignal(m_model, SIGNAL(groupsChanged()), DefaultTimeout));
+ QCOMPARE(itemsInModel(), QStringList() << "a.txt" << "b.txt" << "c.txt" << "e.txt");
+
+ expectedGroups.clear();
+ expectedGroups << QPair<int, QVariant>(0, QLatin1String("A"));
+ expectedGroups << QPair<int, QVariant>(1, QLatin1String("B"));
+ expectedGroups << QPair<int, QVariant>(2, QLatin1String("C"));
+ expectedGroups << QPair<int, QVariant>(3, QLatin1String("E"));
+ QCOMPARE(m_model->groups(), expectedGroups);
}
QStringList KFileItemModelTest::itemsInModel() const