Title: [102348] trunk/Tools
Revision
102348
Author
[email protected]
Date
2011-12-08 10:38:53 -0800 (Thu, 08 Dec 2011)

Log Message

[Qt] Visualize mock points in the Qt MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=74074

Patch by Alexander Færøy <[email protected]> on 2011-12-08
Reviewed by Tor Arne Vestbø.

* MiniBrowser/qt/BrowserWindow.cpp:
(BrowserWindow::updateVisualMockTouchPoints):
* MiniBrowser/qt/BrowserWindow.h:
* MiniBrowser/qt/MiniBrowser.qrc:
* MiniBrowser/qt/MiniBrowserApplication.cpp:
(MiniBrowserApplication::notify):
(MiniBrowserApplication::sendTouchEvent):
* MiniBrowser/qt/MiniBrowserApplication.h:
* MiniBrowser/qt/icons/touchpoint.png: Added.
* MiniBrowser/qt/qml/MockTouchPoint.qml: Added.

Modified Paths

Added Paths

Diff

Modified: trunk/Tools/ChangeLog (102347 => 102348)


--- trunk/Tools/ChangeLog	2011-12-08 18:23:08 UTC (rev 102347)
+++ trunk/Tools/ChangeLog	2011-12-08 18:38:53 UTC (rev 102348)
@@ -1,3 +1,21 @@
+2011-12-08  Alexander Færøy  <[email protected]>
+
+        [Qt] Visualize mock points in the Qt MiniBrowser
+        https://bugs.webkit.org/show_bug.cgi?id=74074
+
+        Reviewed by Tor Arne Vestbø.
+
+        * MiniBrowser/qt/BrowserWindow.cpp:
+        (BrowserWindow::updateVisualMockTouchPoints):
+        * MiniBrowser/qt/BrowserWindow.h:
+        * MiniBrowser/qt/MiniBrowser.qrc:
+        * MiniBrowser/qt/MiniBrowserApplication.cpp:
+        (MiniBrowserApplication::notify):
+        (MiniBrowserApplication::sendTouchEvent):
+        * MiniBrowser/qt/MiniBrowserApplication.h:
+        * MiniBrowser/qt/icons/touchpoint.png: Added.
+        * MiniBrowser/qt/qml/MockTouchPoint.qml: Added.
+
 2011-12-08  Simon Hausmann  <[email protected]>
 
         [Qt] WebKitTestRunner crashes with debug builds

Modified: trunk/Tools/MiniBrowser/qt/BrowserWindow.cpp (102347 => 102348)


--- trunk/Tools/MiniBrowser/qt/BrowserWindow.cpp	2011-12-08 18:23:08 UTC (rev 102347)
+++ trunk/Tools/MiniBrowser/qt/BrowserWindow.cpp	2011-12-08 18:38:53 UTC (rev 102348)
@@ -34,6 +34,7 @@
 
 #include <QDeclarativeEngine>
 #include <QDir>
+#include <QPointF>
 
 BrowserWindow::BrowserWindow(WindowOptions* options)
 {
@@ -82,6 +83,30 @@
     return window;
 }
 
+void BrowserWindow::updateVisualMockTouchPoints(const QList<QWindowSystemInterface::TouchPoint>& touchPoints)
+{
+    foreach (const QWindowSystemInterface::TouchPoint& touchPoint, touchPoints) {
+        QString mockTouchPointIdentifier = QString("mockTouchPoint%1").arg(touchPoint.id);
+        QQuickItem* mockTouchPointItem = rootObject()->findChild<QQuickItem*>(mockTouchPointIdentifier, Qt::FindDirectChildrenOnly);
+
+        if (!mockTouchPointItem) {
+            QDeclarativeComponent touchMockPointComponent(engine(), QUrl("qrc:/qml/MockTouchPoint.qml"));
+            mockTouchPointItem = qobject_cast<QQuickItem*>(touchMockPointComponent.create());
+            mockTouchPointItem->setObjectName(mockTouchPointIdentifier);
+            mockTouchPointItem->setParent(rootObject());
+            mockTouchPointItem->setParentItem(rootObject());
+        }
+
+        QPointF position = touchPoint.area.topLeft();
+        position.rx() -= geometry().x();
+        position.ry() -= geometry().y();
+
+        mockTouchPointItem->setX(position.x());
+        mockTouchPointItem->setY(position.y());
+        mockTouchPointItem->setProperty("pressed", QVariant(touchPoint.state != Qt::TouchPointReleased));
+    }
+}
+
 void BrowserWindow::screenshot()
 {
 }

Modified: trunk/Tools/MiniBrowser/qt/BrowserWindow.h (102347 => 102348)


--- trunk/Tools/MiniBrowser/qt/BrowserWindow.h	2011-12-08 18:23:08 UTC (rev 102347)
+++ trunk/Tools/MiniBrowser/qt/BrowserWindow.h	2011-12-08 18:38:53 UTC (rev 102348)
@@ -44,6 +44,8 @@
     void load(const QString& url);
     QQuickWebView* webView() const;
 
+    void updateVisualMockTouchPoints(const QList<QWindowSystemInterface::TouchPoint>& touchPoints);
+
 public slots:
     BrowserWindow* newWindow(const QString& url = ""
 

Modified: trunk/Tools/MiniBrowser/qt/MiniBrowser.qrc (102347 => 102348)


--- trunk/Tools/MiniBrowser/qt/MiniBrowser.qrc	2011-12-08 18:23:08 UTC (rev 102347)
+++ trunk/Tools/MiniBrowser/qt/MiniBrowser.qrc	2011-12-08 18:38:53 UTC (rev 102348)
@@ -4,7 +4,9 @@
         <file>icons/previous.png</file>
         <file>icons/refresh.png</file>
         <file>icons/stop.png</file>
+        <file>icons/touchpoint.png</file>
         <file>qml/BrowserWindow.qml</file>
+        <file>qml/MockTouchPoint.qml</file>
         <file>useragentlist.txt</file>
     </qresource>
 </RCC>

Modified: trunk/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp (102347 => 102348)


--- trunk/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp	2011-12-08 18:23:08 UTC (rev 102347)
+++ trunk/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp	2011-12-08 18:38:53 UTC (rev 102348)
@@ -28,6 +28,7 @@
 
 #include "MiniBrowserApplication.h"
 
+#include "BrowserWindow.h"
 #include "utils.h"
 #include <QRegExp>
 #include <QEvent>
@@ -92,16 +93,17 @@
         return QApplication::notify(target, event);
     }
 
-    QWindow* targetWindow = qobject_cast<QWindow*>(target);
+    BrowserWindow* browserWindow = qobject_cast<BrowserWindow*>(target);
+    Q_ASSERT(browserWindow);
     if (event->type() == QEvent::KeyRelease && static_cast<QKeyEvent*>(event)->key() == Qt::Key_Control) {
         foreach (int id, m_heldTouchPoints)
             if (m_touchPoints.contains(id))
                 m_touchPoints[id].state = Qt::TouchPointReleased;
         m_heldTouchPoints.clear();
-        sendTouchEvent(targetWindow);
+        sendTouchEvent(browserWindow);
     }
 
-    if (targetWindow && isMouseEvent(event)) {
+    if (browserWindow && isMouseEvent(event)) {
         const QMouseEvent* const mouseEvent = static_cast<QMouseEvent*>(event);
 
         QWindowSystemInterface::TouchPoint touchPoint;
@@ -147,17 +149,19 @@
                 it.value().state = Qt::TouchPointStationary;
         }
 
-        sendTouchEvent(targetWindow);
+        sendTouchEvent(browserWindow);
     }
 
     return QApplication::notify(target, event);
 }
 
-void MiniBrowserApplication::sendTouchEvent(QWindow* targetWindow)
+void MiniBrowserApplication::sendTouchEvent(BrowserWindow* browserWindow)
 {
     m_pendingFakeTouchEventCount++;
-    QWindowSystemInterface::handleTouchEvent(targetWindow, QEvent::None, QTouchEvent::TouchScreen, m_touchPoints.values());
+    QWindowSystemInterface::handleTouchEvent(browserWindow, QEvent::None, QTouchEvent::TouchScreen, m_touchPoints.values());
 
+    browserWindow->updateVisualMockTouchPoints(m_touchPoints.values());
+
     // Get rid of touch-points that are no longer valid
     foreach (const QWindowSystemInterface::TouchPoint& touchPoint, m_touchPoints) {
     if (touchPoint.state ==  Qt::TouchPointReleased)

Modified: trunk/Tools/MiniBrowser/qt/MiniBrowserApplication.h (102347 => 102348)


--- trunk/Tools/MiniBrowser/qt/MiniBrowserApplication.h	2011-12-08 18:23:08 UTC (rev 102347)
+++ trunk/Tools/MiniBrowser/qt/MiniBrowserApplication.h	2011-12-08 18:38:53 UTC (rev 102348)
@@ -38,6 +38,8 @@
 #include <QUrl>
 #include "qwindowsysteminterface_qpa.h"
 
+class BrowserWindow;
+
 class WindowOptions : public QObject {
     Q_OBJECT
     Q_PROPERTY(bool printLoadedUrls READ printLoadedUrls)
@@ -88,7 +90,7 @@
     virtual bool notify(QObject*, QEvent*);
 
 private:
-    void sendTouchEvent(QWindow* targetWindow);
+    void sendTouchEvent(BrowserWindow*);
     void handleUserOptions();
 
 private:

Added: trunk/Tools/MiniBrowser/qt/icons/touchpoint.png (0 => 102348)


--- trunk/Tools/MiniBrowser/qt/icons/touchpoint.png	                        (rev 0)
+++ trunk/Tools/MiniBrowser/qt/icons/touchpoint.png	2011-12-08 18:38:53 UTC (rev 102348)
@@ -0,0 +1,13 @@
+\x89PNG
+
+
+IHDR,*\xC8ݹsRGB\xAE\xCE\xE9bKGD\xFF\xFF\xFF\xA0\xBD\xA7\x93	pHYs\x9A\x9CtIME\xDB5;\xF6*A\xB3IDATX\xC3ՙ]L[e\xC7\xFF\xE7mO9\xFD\x96\x96\x96A\xA1
++a3h\xB2E\x85\xE9`\xE3\xCD\xF0\xC4%ܐx\xA1\xD1\x96\xE0\x94\x99\xE0$\xC6G\xDC\xDDnL0q\xF1f\x8B\x89\xC9R\xB8p\x80Sgpb\xCBw\xC5J\xBF{\xBE\xBC\x89|d\xBC=m!\xFB_\x9E\xF3\x9C\xE7\xFC\xCE{\xFE\xEF\xE7\xC3 u{\xA6\xADq^jp
+\xC0\xD3\x8E\xB00\xC4\xF8L+P\x93\xBB\x9F\xBETT\xFANF\xC9C\x9D\x83\xDE6oxE\xE1{\xEF\xF8\xAE\xA7\xD9\xFDM^\x81;\xBD>\xE0@n\xB4\xA0\xB7\xA7\xD9\xFDeN\x81?\x99=I=\x8E#?\xFAKǒ\xCEO\xCET\xDC\xCA\xF8Ҡ\xF7\xAA\xB4Ѫ\xA1ޞf\x{1C7280}=ӫ\xA6\xDB\xDE\xD0\xF7Zp\xB0\xEAot>\xF5ƫU\xD6\xF5\xBDn\x92\xBD.Ṅ\xAD\xB7\xBD\xA1\x81C\x80\x80\x96\x91\xB9\xB5\x81\xE1鐕\xF8\x87\xA9\xE0M\xF58<\xD5\xDF\xF1\xAEޤ\xFEbt\xA6O\x90\xE5\xA5o%\x82(\x81%\x88\xA2\x94
+tC\xB7g\xBA\xEF\xB1\xBE\xF50\xF0ޘ?\xF2u&Y%YƣH\xDE\xF5$f<R\xD2\xF6n\xC12*\xB4,\x9C&\xE5
+T*\x92u\xB5M\xF7\xFE\x85gJ\xAE\xED^'ˮM,N\xD0\xD2&{Ia,\xC3?\x82Lo&@\xBD]\x97\x99˄9\xD1VS\u\xCCnX\xD8f\x89\xA1\x99\xD5.ZXI\x92\xF1\xDBr?\xFA\xA3԰\x96\x80\x81\xA5&\xFC\x91L\xEC\xA2\x9A	w\xED\xF2\xF0Õx;\xCDӲ,㧥(~^K*6\xE7\x83H\x9E\xC5uj\xE8\xB9\xF5d\xBB7\xAF\xDA\xEE\xFF;D=5\xFE\x8C\xE3\xCFH:\xEBa\xC0\x97\xF1\xCBr\x8C:\xFEץX\xFB\xF0\xEFKѷh
+DS\xB8L\xE6l\xECzIcv=E;\xD8`$J\xF2e4V[\x89\xE7|\xC0_\x89B\x94\xF6\xEF)A*\x9B[K4\x90ɥ\xC8\xC7T\xAD\xB0\x9C\x96r\x80\x85(]+Ϭ\xA5ΐ\x95\x92&\x98\xF6\xD7)\xD1l\x98.\xF7J\x9C?F\xC2	\xB1\x8A&\xD8\xCF\xB0/)PŅ\xE2|-\x89\x89R)\x95%x9o\xC0\x82*\xC7x\xA1\x94\x82h\xA4\x99(\xC3 \x9F\x92\xE5\xFD\x81yQ6<IbV\xA5\x8A\xECG@\xCA/EL\x81\x9A\x89K\xFC4	\x8B4\xAA\xBC\xC1jU2\xD5*NǪ\xFC\xA4\x90SO\xD1$-\xD7k\xF2\xEC\xD4\xD2\xE5.ҲSĦg\xEF\xD3\xBB\xF9v\xA8\xE2\xECz\xF6>\xA9\xB6>\xA3\xFA:\x9D\xE5\xB9\xEF\xA36
+p\x84\xB21\f\xCEC\xC0\xA6\xD7,Pm\xB4\x8A
+\x90In\xC7\xE3S6\xD3f\xA7\xDEϿd\xC1a\xE6F	<k\xD3ߠI^\xA8eq֪\xCF\xECsG,Ul\x8D\xDDpck\xB5v\xB6\xD2\xD2A\xFB\xB3\xDD-j-\ְ'\x8C\xD4\xE9\xA8\xE3\xEBJ\x8D׷\xED8jJ6.Ш֦\xC7\xCB6\x9D"{H\xB2\x8C\xD3V\xA7K`(g\xCFJ\x8B\xF6\xBA\xC3\xCCM\xED\xAF\xBB\x86|q^\x92\xA97\xA1\xABI\xE3\xCB\xCC'\xE9&ˠ\xAEX\x9B\xBE \x93oL\xBC{\xB2\xA4\xCAU\xA8[\xF5\xFF\xEF<\xEF0_\xF4̯Qo\xF395Z\\x85\xC6xLG\x93XL\xF0"\x98ͭ\xBE\xC8H(V88
+\x9C&Ŕ~\xDD\xF67K\x8C\xFF\x83\xDDsF\xFC\xEA\xDE|_ \x9A~'J\x9B+/\x9A\xDE\xFF85\xEAo?jt]\xD8w
+\xBF<\xECI\x8B\xCAOr!\x8C^iv7R\x9D\xAD\xBDy\xC2\xDEJ\x80\xF1C\xE4o=nk\xA5:[\x80j\xBB!\xF8z\xB5\xED\xFA\xB6\xFF\xB5J˹\xBA2SPѪ\xEE\xF2\xB0\xEFjZ\x94\xE4@[\xCD0\xBD\xDDMG\x95h\xEF\xE8\x88\xE7\xD1t^K\x8E\xED\xECxљ}\xC9`\xC78\xDD\xC1KrN\x8B2\x84Aev\xEAҠ\xB7Mz\xCA^{X\xC5\x88\xA63*,Z\xB4\xECݎ\x9C\x8A\x8B\xFF\xE0Fŕsh\xAFIEND\xAEB`\x82
\ No newline at end of file

Copied: trunk/Tools/MiniBrowser/qt/qml/MockTouchPoint.qml (from rev 102347, trunk/Tools/MiniBrowser/qt/BrowserWindow.h) (0 => 102348)


--- trunk/Tools/MiniBrowser/qt/qml/MockTouchPoint.qml	                        (rev 0)
+++ trunk/Tools/MiniBrowser/qt/qml/MockTouchPoint.qml	2011-12-08 18:38:53 UTC (rev 102348)
@@ -0,0 +1,43 @@
+/*
+ * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+import QtQuick 2.0
+
+Item {
+    property bool pressed: false
+
+    Image {
+        source: "../icons/touchpoint.png"
+        x: -(width / 2)
+        y: -(height / 2)
+        opacity: parent.pressed ? 0.8 : 0.0
+
+        Behavior on opacity {
+            NumberAnimation { duration: 200 }
+        }
+    }
+}
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to