ginebra2/ContentViews/GWebContentViewWidget.h
changeset 0 1450b09d0cfd
child 3 0954f5dd2cd0
child 5 0f2326c2a325
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/ContentViews/GWebContentViewWidget.h	Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,170 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: 
+*
+*/
+
+
+
+#ifndef GWebContentViewWidget_H_
+#define GWebContentViewWidget_H_
+
+#include <QObject>
+#include <QWebElement>
+#include <QImage>
+#include <QGraphicsWebView>
+#include <QWebFrame>
+#include <QTime>
+
+#include "WebViewEventContext.h"
+#include "ZoomMetaData.h"
+
+class QGraphicsSceneContextMenuEvent;
+
+namespace GVA {
+#ifndef NO_QSTM_GESTURE
+class WebTouchNavigation;
+#endif
+
+class GWebContentView;
+
+class GWebContentViewWidget : public QGraphicsWebView
+{
+    Q_OBJECT
+public:
+
+    GWebContentViewWidget(QObject* parent, GWebContentView* view, QWebPage* pg);
+    virtual ~GWebContentViewWidget();
+
+    GWebContentView* view() const { return m_webContentView; }
+
+    /*!
+     * \brief Returns zoom factor value
+     */
+    qreal zoomFactor() { return m_wrtPage ? m_wrtPage->mainFrame()->zoomFactor() : 0; }
+
+    /*!
+     * \brief Returns dirty zoom factor value
+     */
+    qreal dirtyZoomFactor() { return m_dirtyZoomFactor; }
+
+    /*!
+     * \brief Set zoom factor value
+     * \param zoom
+     */
+    void setZoomFactor(qreal zoom);
+
+    /*!
+     * \brief Set dirty zoom factor value
+     * \param zoom
+     */
+    void setDirtyZoomFactor(qreal zoom);
+
+    void setTextSizeMultiplier(qreal factor);
+
+    QImage getPageSnapshot();
+
+    void bitmapZoomCleanup();
+    void createPageSnapShot();
+
+    void resizeEvent(QGraphicsSceneResizeEvent* e);
+    virtual bool event(QEvent * e);
+
+    QWebPage* page() const;
+    void setPage(QWebPage* pg);
+    QWebPage* wrtPage() { return m_wrtPage; }
+    void showNormalPage();
+
+    void createPagePixmap();
+    void setBitmapZoom(qreal zoom);
+    void deletePagePixmap();
+    void setPageCenterZoomFactor(qreal zoom);
+
+    void initializeViewportParams();
+    void parseViewPortParam(const QString &propertyName, const QString &propertyValue);
+    bool isUserScalable();
+    qreal minimumScale();
+    qreal maximumScale();
+    qreal initialScale();
+    void updateViewport();
+    void setBlockElement(QWebElement pt);
+    QPointF mapToGlobal(const QPointF& p);
+    QPointF mapFromGlobal(const QPointF& p);
+
+    void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget = 0) ;
+    void setPageZoomFactor(qreal zoom);
+
+    ZoomMetaData pageZoomMetaData();
+    void setPageZoomMetaData(ZoomMetaData params);
+    ZoomMetaData defaultZoomData();
+    void setCheckeredPixmap();
+public slots:
+    void setViewportSize();
+
+    void onInitLayout();
+
+signals:
+    void contextEvent(::WebViewEventContext *context);
+    void BlockFocusChanged(QPoint element);
+
+    void pageZoomMetaDataChange(QWebFrame* frame, ZoomMetaData data);protected:
+    void paintEvent(QPaintEvent *event);
+
+    virtual void contextMenuEvent(QGraphicsSceneContextMenuEvent *event);
+
+public:
+    void onLoadStarted();
+    void onLoadFinished();
+
+private:
+    void updateViewportSize(QGraphicsSceneResizeEvent *e);
+
+    GVA::GWebContentView* m_webContentView;
+    qreal       m_dirtyZoomFactor;
+    QPixmap    *m_frozenPixmap;
+    int         m_freezeCount;
+    QWebPage   *m_wrtPage;
+    bool        m_bitmapZoom;
+    QPixmap    *m_pagePixmap;
+    qreal       m_aspectRation;
+    qreal       m_viewportWidth;
+    qreal       m_viewportHeight;
+    bool        m_userScalable;
+    qreal       m_minimumScale;
+    qreal       m_maximumScale;
+    qreal       m_initialScale;
+    bool        m_inferWidthHeight;
+    bool        m_isResize;
+    qreal       m_currentinitialScale;
+    QWebElement m_BlockElement;
+    QWebElement m_BlockInFocus;
+    int         m_previousViewPortwidth;
+    qreal       m_Ratiox;
+    qreal       m_Ratioy;
+    
+    
+    QImage*     m_bitmapImage;
+    qreal       m_bitmapZoomFactor;
+    QPixmap*    m_checkeredBoxPixmap;
+    
+    bool        m_inLoading;
+    QTime       m_loadingTime;
+#ifndef NO_QSTM_GESTURE
+    WebTouchNavigation* m_touchNavigation;
+#endif
+};
+
+}
+
+#endif /* GWebContentViewWidget_H_ */