Title: [87720] trunk/Tools
Revision
87720
Author
[email protected]
Date
2011-05-31 03:42:01 -0700 (Tue, 31 May 2011)

Log Message

2011-05-31  Kristóf Kosztyó  <[email protected]>

        Reviewed by Csaba Osztrogonác.

        [Qt] Implement find feature for QtTestBrowser
        https://bugs.webkit.org/show_bug.cgi?id=61425

        * QtTestBrowser/launcherwindow.cpp:
        (LauncherWindow::LauncherWindow):
        (LauncherWindow::createChrome):
        (LauncherWindow::showFindBar):
        (LauncherWindow::find):
        * QtTestBrowser/launcherwindow.h:

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (87719 => 87720)


--- trunk/Tools/ChangeLog	2011-05-31 10:20:05 UTC (rev 87719)
+++ trunk/Tools/ChangeLog	2011-05-31 10:42:01 UTC (rev 87720)
@@ -1,3 +1,17 @@
+2011-05-31  Kristóf Kosztyó  <[email protected]>
+
+        Reviewed by Csaba Osztrogonác.
+
+        [Qt] Implement find feature for QtTestBrowser
+        https://bugs.webkit.org/show_bug.cgi?id=61425
+
+        * QtTestBrowser/launcherwindow.cpp:
+        (LauncherWindow::LauncherWindow):
+        (LauncherWindow::createChrome):
+        (LauncherWindow::showFindBar):
+        (LauncherWindow::find):
+        * QtTestBrowser/launcherwindow.h:
+
 2011-05-30  Carlos Garcia Campos  <[email protected]>
 
         Reviewed by Martin Robinson.

Modified: trunk/Tools/QtTestBrowser/launcherwindow.cpp (87719 => 87720)


--- trunk/Tools/QtTestBrowser/launcherwindow.cpp	2011-05-31 10:20:05 UTC (rev 87719)
+++ trunk/Tools/QtTestBrowser/launcherwindow.cpp	2011-05-31 10:42:01 UTC (rev 87720)
@@ -1,5 +1,7 @@
 /*
  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
+ * Copyright (C) 2011 University of Szeged
+ * Copyright (C) 2011 Kristof Kosztyo <[email protected]>
  * Copyright (C) 2009 Girish Ramakrishnan <[email protected]>
  * Copyright (C) 2006 George Staikos <[email protected]>
  * Copyright (C) 2006 Dirk Mueller <[email protected]>
@@ -44,6 +46,7 @@
     , m_inspector(0)
     , m_formatMenuAction(0)
     , m_zoomAnimation(0)
+    , m_findFlag(0)
 {
     if (data)
         m_windowOptions = *data;
@@ -195,6 +198,8 @@
     editMenu->addAction(page()->action(QWebPage::Copy));
     editMenu->addAction(page()->action(QWebPage::Paste));
     editMenu->addSeparator();
+    editMenu->addAction("&Find", this, SLOT(showFindBar()), QKeySequence(Qt::CTRL | Qt::Key_F));
+    editMenu->addSeparator();
     QAction* setEditable = editMenu->addAction("Set Editable", this, SLOT(setEditable(bool)));
     setEditable->setCheckable(true);
 
@@ -406,6 +411,48 @@
     toggleJavascriptCanOpenWindows->setCheckable(true);
     toggleJavascriptCanOpenWindows->setChecked(false);
 
+    m_findBar = new QToolBar("Find", this);
+    addToolBar(Qt::BottomToolBarArea, m_findBar);
+
+    QToolButton* findClose = new QToolButton(m_findBar);
+    findClose->setText("X");
+    m_lineEdit = new QLineEdit(m_findBar);
+    m_lineEdit->setMaximumWidth(200);
+    QToolButton* findPrevious = new QToolButton(m_findBar);
+    findPrevious->setArrowType(Qt::LeftArrow);
+    QToolButton* findNext = new QToolButton(m_findBar);
+    findNext->setArrowType(Qt::RightArrow);
+    QCheckBox* findCaseSensitive = new QCheckBox("Case Sensitive", m_findBar);
+    QCheckBox* findWrapAround = new QCheckBox("Wrap Around", m_findBar);
+    QCheckBox* findHighLightAll = new QCheckBox("HighLight All", m_findBar);
+
+    QSignalMapper* findSignalMapper = new QSignalMapper(m_findBar);
+    findSignalMapper->setMapping(m_lineEdit, s_findNormalFlag);
+    findSignalMapper->setMapping(findPrevious, QWebPage::FindBackward);
+    findSignalMapper->setMapping(findNext, s_findNormalFlag);
+    findSignalMapper->setMapping(findCaseSensitive, QWebPage::FindCaseSensitively);
+    findSignalMapper->setMapping(findWrapAround, QWebPage::FindWrapsAroundDocument);
+    findSignalMapper->setMapping(findHighLightAll, QWebPage::HighlightAllOccurrences);
+
+    connect(findClose, SIGNAL(clicked()), this, SLOT(showFindBar()));
+    connect(m_lineEdit, SIGNAL(textChanged(const QString &)), findSignalMapper, SLOT(map()));
+    connect(findPrevious, SIGNAL(pressed()), findSignalMapper, SLOT(map()));
+    connect(findNext, SIGNAL(pressed()), findSignalMapper, SLOT(map()));
+    connect(findCaseSensitive, SIGNAL(stateChanged(int)), findSignalMapper, SLOT(map()));
+    connect(findWrapAround, SIGNAL(stateChanged(int)), findSignalMapper, SLOT(map()));
+    connect(findHighLightAll, SIGNAL(stateChanged(int)), findSignalMapper, SLOT(map()));
+
+    connect(findSignalMapper, SIGNAL(mapped(int)), this, SLOT(find(int)));
+
+    m_findBar->addWidget(findClose);
+    m_findBar->addWidget(m_lineEdit);
+    m_findBar->addWidget(findPrevious);
+    m_findBar->addWidget(findNext);
+    m_findBar->addWidget(findCaseSensitive);
+    m_findBar->addWidget(findWrapAround);
+    m_findBar->addWidget(findHighLightAll);
+    m_findBar->setMovable(false);
+    m_findBar->setVisible(false);
 #endif
 }
 
@@ -975,3 +1022,38 @@
     return mw;
 }
 
+void LauncherWindow::showFindBar()
+{
+    if (!m_findBar->isVisible()) {
+        m_findBar->setVisible(true);
+        m_lineEdit->setText(page()->selectedText());
+        m_lineEdit->setFocus(Qt::PopupFocusReason);
+    } else {
+        m_findBar->setVisible(false);
+        page()->findText("", QWebPage::HighlightAllOccurrences);
+    }
+}
+
+void LauncherWindow::find(int mode = s_findNormalFlag)
+{
+    QPalette palette;
+    bool found;
+    palette.setColor(m_lineEdit->backgroundRole(), Qt::white);
+    page()->findText("", QFlag(QWebPage::HighlightAllOccurrences));
+
+    m_findFlag = m_findFlag ^ mode;
+    if (mode == s_findNormalFlag || mode == QWebPage::FindBackward) {
+        found = page()->findText(m_lineEdit->text(), QFlag(m_findFlag & ~QWebPage::HighlightAllOccurrences));
+        m_findFlag = m_findFlag ^ mode;
+
+        if (found || m_lineEdit->text().isEmpty())
+            m_lineEdit->setPalette(palette);
+        else {
+            palette.setColor(m_lineEdit->backgroundRole(), QColor(255, 0, 0, 127));
+            m_lineEdit->setPalette(palette);
+        }
+    }
+
+    if (m_findFlag & QWebPage::HighlightAllOccurrences)
+        page()->findText(m_lineEdit->text(), QFlag(m_findFlag));
+}

Modified: trunk/Tools/QtTestBrowser/launcherwindow.h (87719 => 87720)


--- trunk/Tools/QtTestBrowser/launcherwindow.h	2011-05-31 10:20:05 UTC (rev 87719)
+++ trunk/Tools/QtTestBrowser/launcherwindow.h	2011-05-31 10:42:01 UTC (rev 87720)
@@ -191,6 +191,8 @@
     void toggleOfflineWebApplicationCache(bool toggle);
     void setOfflineStorageDefaultQuota();
 
+    void showFindBar();
+    void find(int mode);
 #if defined(QT_CONFIGURED_WITH_OPENGL)
     void toggleQGLWidgetViewport(bool enable);
 #endif
@@ -239,6 +241,11 @@
     bool m_touchMocking;
 
     QString m_inputUrl;
+
+    QToolBar* m_findBar;
+    QLineEdit* m_lineEdit;
+    int m_findFlag;
+    static const int s_findNormalFlag = 0;
 };
 
 #endif
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to