1 /* |
|
2 * Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) |
|
3 * Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in> |
|
4 * Copyright (C) 2006 George Staikos <staikos@kde.org> |
|
5 * Copyright (C) 2006 Dirk Mueller <mueller@kde.org> |
|
6 * Copyright (C) 2006 Zack Rusin <zack@kde.org> |
|
7 * Copyright (C) 2006 Simon Hausmann <hausmann@kde.org> |
|
8 * |
|
9 * All rights reserved. |
|
10 * |
|
11 * Redistribution and use in source and binary forms, with or without |
|
12 * modification, are permitted provided that the following conditions |
|
13 * are met: |
|
14 * 1. Redistributions of source code must retain the above copyright |
|
15 * notice, this list of conditions and the following disclaimer. |
|
16 * 2. Redistributions in binary form must reproduce the above copyright |
|
17 * notice, this list of conditions and the following disclaimer in the |
|
18 * documentation and/or other materials provided with the distribution. |
|
19 * |
|
20 * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY |
|
21 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
22 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
|
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
|
27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
|
28 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
|
29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
|
30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
31 */ |
|
32 |
|
33 #ifndef webview_h |
|
34 #define webview_h |
|
35 |
|
36 #include "fpstimer.h" |
|
37 #include "webpage.h" |
|
38 #include <qwebview.h> |
|
39 #include <qgraphicswebview.h> |
|
40 #include <QGraphicsView> |
|
41 #include <QGraphicsWidget> |
|
42 #include <QTime> |
|
43 |
|
44 class WebViewTraditional : public QWebView { |
|
45 Q_OBJECT |
|
46 |
|
47 public: |
|
48 WebViewTraditional(QWidget* parent) : QWebView(parent) {} |
|
49 |
|
50 protected: |
|
51 virtual void contextMenuEvent(QContextMenuEvent*); |
|
52 virtual void mousePressEvent(QMouseEvent*); |
|
53 }; |
|
54 |
|
55 |
|
56 class GraphicsWebView : public QGraphicsWebView { |
|
57 Q_OBJECT |
|
58 |
|
59 public: |
|
60 GraphicsWebView(QGraphicsItem* parent = 0) : QGraphicsWebView(parent) {}; |
|
61 |
|
62 protected: |
|
63 virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent*); |
|
64 virtual void mousePressEvent(QGraphicsSceneMouseEvent*); |
|
65 }; |
|
66 |
|
67 |
|
68 class WebViewGraphicsBased : public QGraphicsView { |
|
69 Q_OBJECT |
|
70 Q_PROPERTY(qreal yRotation READ yRotation WRITE setYRotation) |
|
71 |
|
72 public: |
|
73 WebViewGraphicsBased(QWidget* parent); |
|
74 void setPage(QWebPage* page); |
|
75 |
|
76 void setItemCacheMode(QGraphicsItem::CacheMode mode) { m_item->setCacheMode(mode); } |
|
77 QGraphicsItem::CacheMode itemCacheMode() { return m_item->cacheMode(); } |
|
78 |
|
79 void setFrameRateMeasurementEnabled(bool enabled); |
|
80 bool frameRateMeasurementEnabled() const { return m_measureFps; } |
|
81 |
|
82 virtual void resizeEvent(QResizeEvent*); |
|
83 virtual void paintEvent(QPaintEvent* event); |
|
84 |
|
85 void setResizesToContents(bool b); |
|
86 bool resizesToContents() const { return m_resizesToContents; } |
|
87 |
|
88 void setYRotation(qreal angle) |
|
89 { |
|
90 #if QT_VERSION >= QT_VERSION_CHECK(4, 6, 0) |
|
91 QRectF r = m_item->boundingRect(); |
|
92 m_item->setTransform(QTransform() |
|
93 .translate(r.width() / 2, r.height() / 2) |
|
94 .rotate(angle, Qt::YAxis) |
|
95 .translate(-r.width() / 2, -r.height() / 2)); |
|
96 #endif |
|
97 m_yRotation = angle; |
|
98 } |
|
99 qreal yRotation() const |
|
100 { |
|
101 return m_yRotation; |
|
102 } |
|
103 |
|
104 GraphicsWebView* graphicsWebView() const { return m_item; } |
|
105 |
|
106 public slots: |
|
107 void updateFrameRate(); |
|
108 void animatedFlip(); |
|
109 void animatedYFlip(); |
|
110 void contentsSizeChanged(const QSize&); |
|
111 |
|
112 signals: |
|
113 void yFlipRequest(); |
|
114 void currentFPSUpdated(int fps); |
|
115 |
|
116 private: |
|
117 GraphicsWebView* m_item; |
|
118 int m_numPaintsTotal; |
|
119 int m_numPaintsSinceLastMeasure; |
|
120 QTime m_startTime; |
|
121 QTime m_lastConsultTime; |
|
122 QTimer* m_updateTimer; |
|
123 bool m_measureFps; |
|
124 qreal m_yRotation; |
|
125 bool m_resizesToContents; |
|
126 FpsTimer m_fpsTimer; |
|
127 }; |
|
128 |
|
129 #endif |
|