Browse Source

Merge branch '447-make-ctkSearchBox-emits-textEdited-signal-on-clear'

* 447-make-ctkSearchBox-emits-textEdited-signal-on-clear:
  Emit ctkSearchBox::textEdited() signal when clear icon is clicked
Julien Finet 11 years ago
parent
commit
4f6773e23b

+ 3 - 0
Libs/Widgets/Testing/Cpp/CMakeLists.txt

@@ -72,6 +72,7 @@ set(TEST_SOURCES
   ctkRangeWidgetValueProxyTest.cpp
   ctkDateRangeWidgetTest1.cpp
   ctkScreenshotDialogTest1.cpp
+  ctkSearchBoxTest.cpp
   ctkSearchBoxTest1.cpp
   ctkSearchBoxTest2.cpp
   ctkSettingsPanelTest.cpp
@@ -207,6 +208,7 @@ QT4_GENERATE_MOCS(
   ctkRangeSliderTest.cpp
   ctkRangeWidgetTest.cpp
   ctkRangeWidgetValueProxyTest.cpp
+  ctkSearchBoxTest.cpp
   ctkSettingsPanelTest.cpp
   ctkSliderWidgetTest.cpp
   ctkSliderWidgetValueProxyTest.cpp
@@ -299,6 +301,7 @@ SIMPLE_TEST( ctkRangeWidgetTest )
 SIMPLE_TEST( ctkRangeWidgetTest1 )
 SIMPLE_TEST( ctkRangeWidgetValueProxyTest )
 SIMPLE_TEST( ctkScreenshotDialogTest1 )
+SIMPLE_TEST( ctkSearchBoxTest )
 SIMPLE_TEST( ctkSearchBoxTest1 )
 SIMPLE_TEST( ctkSearchBoxTest2 )
 SIMPLE_TEST( ctkSettingsDialogTest1 )

+ 76 - 0
Libs/Widgets/Testing/Cpp/ctkSearchBoxTest.cpp

@@ -0,0 +1,76 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0.txt
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=========================================================================*/
+
+// Qt includes
+#include <QApplication>
+#include <QSignalSpy>
+
+// CTK includes
+#include "ctkSearchBox.h"
+#include "ctkTest.h"
+
+//-----------------------------------------------------------------------------
+class ctkSearchBoxTester : public QObject
+{
+  Q_OBJECT
+
+private slots:
+
+  void testSignals();
+};
+
+// ----------------------------------------------------------------------------
+void ctkSearchBoxTester::testSignals()
+{
+  ctkSearchBox searchBox;
+  searchBox.show();
+  QTest::qWaitForWindowShown(&searchBox);
+
+  QSignalSpy textEditedSpy(&searchBox, SIGNAL(textEdited(QString)));
+  QSignalSpy textChangedSpy(&searchBox, SIGNAL(textChanged(QString)));
+
+  searchBox.setText("abc");
+
+  QCOMPARE(textEditedSpy.count(), 0);
+  QCOMPARE(textChangedSpy.count(), 1);
+  textEditedSpy.clear();
+  textChangedSpy.clear();
+
+  QTest::keyPress(&searchBox, 'd');
+  QCOMPARE(textEditedSpy.count(), 1);
+  QCOMPARE(textChangedSpy.count(), 1);
+  textEditedSpy.clear();
+  textChangedSpy.clear();
+
+  QPoint clearIconCenter( searchBox.width() - 15, searchBox.height() / 2 );
+  QTest::mouseClick(&searchBox, Qt::LeftButton, Qt::NoModifier, clearIconCenter);
+
+  QCOMPARE(searchBox.text(), QString());
+  QCOMPARE(textEditedSpy.count(), 1);
+  QCOMPARE(textChangedSpy.count(), 1);
+  textEditedSpy.clear();
+  textChangedSpy.clear();
+
+  //qApp->exec();
+}
+
+// ----------------------------------------------------------------------------
+CTK_TEST_MAIN(ctkSearchBoxTest)
+#include "moc_ctkSearchBoxTest.cpp"

+ 20 - 0
Libs/Widgets/Testing/Cpp/ctkSearchBoxTest1.cpp

@@ -1,3 +1,23 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0.txt
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=========================================================================*/
+
 // Qt includes
 #include <QApplication>
 #include <QDebug>

+ 20 - 0
Libs/Widgets/Testing/Cpp/ctkSearchBoxTest2.cpp

@@ -1,3 +1,23 @@
+/*=========================================================================
+
+  Library:   CTK
+
+  Copyright (c) Kitware Inc.
+
+  Licensed under the Apache License, Version 2.0 (the "License");
+  you may not use this file except in compliance with the License.
+  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0.txt
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+=========================================================================*/
+
 // Qt includes
 #include <QApplication>
 #include <QDebug>

+ 1 - 0
Libs/Widgets/ctkSearchBox.cpp

@@ -298,6 +298,7 @@ void ctkSearchBox::mousePressEvent(QMouseEvent *e)
   if(d->clearRect().contains(e->pos()))
     {
     this->clear();
+    emit this->textEdited(this->text());
     return;
     }