diff -r 000000000000 -r 1450b09d0cfd ginebra2/ContentViews/GWebContentView.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ginebra2/ContentViews/GWebContentView.h Tue May 04 12:39:35 2010 +0300 @@ -0,0 +1,208 @@ +/* +* 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 GWebContentView_H +#define GWebContentView_H + +#include +#include +#include +#include +#include "qgraphicswebview.h" +#include "controllableviewimpl.h" +#include "messageboxproxy.h" +#include "ZoomMetaData.h" +#include "GWebPage.h" +#include "ContentViewDelegate.h" +#include "GWebTouchNavigation.h" + +class WebViewEventContext; +class QContextMenuEvent; +class QWebPage; +class QWebFrame; +class QTimeLine; +class GWebContentViewWidget; +namespace WRT { + class WrtBrowserContainer; +} + +namespace GVA { + + class GWebPage; + class ChromeWidget; + class ContentViewDelegate; + + class GWebContentView : public ControllableViewBase + { + Q_OBJECT + public: + GWebContentView(ChromeWidget *chrome, QObject * parent = 0, const QString &objectName = QString::null); + virtual ~GWebContentView(); + + static QString Type() { return "webView"; } + virtual QString type() const { return Type(); } + +// do we need both of these? + QGraphicsWidget* widget() const; + GWebContentViewWidget *webWidget() const; + + // Returns the DOM 'window' object of the page. + QVariant getContentWindowObject(); + + virtual void connectAll(); + virtual void activate(); + virtual void deactivate(); + + virtual void triggerAction(const QString & action); + + virtual QString title() const; + + QUrl url(); + QWebPage *currentPage(); + + qreal getZoomFactor() const; + + static ControllableView* createNew(QWidget *parent); + + /*! + Return the list of public QActions most relevant to the view's current context + (most approptiate for contextual menus, etc. + */ + virtual QList getContext(); + virtual QAction * getAction(const QString & action); + + QWebPage* wrtPage(); + void scrollViewBy(int dx, int dy); + void scrollViewTo(int x, int y); + + void changeZoomAction(qreal zoom); + void deactivateZoomActions(); + + // Super page methods. + GWebPage * createSuperPage(const QString &name); + void destroySuperPage(const QString &name); + QObjectList getSuperPages(); + void setCurrentSuperPage(const QString &name); + GWebPage * currentSuperPage() {return m_currentSuperPage.value();} + void showSuperPage(const QString &name); + GWebPage * superPage(const QString &name); + bool isSuperPage(const QString &name); + bool currentPageIsSuperPage() const; + void bitmapZoomStop(); + virtual void show() { + qDebug() << "GWebContentView::show: " << widget(); + widget()->show(); + } + + virtual void hide() { + qDebug() << "GWebContentView::hide: " << widget(); + widget()->hide(); + } + + bool gesturesEnabled() const { return m_touchNavigation->enabled(); } + void setGesturesEnabled(bool value) { m_touchNavigation->setEnabled(value); } + + signals: + void ContextChanged(); + void iconChanged(); + void loadFinished(bool ok); + void loadProgress(int progress); + void loadStarted(); + void statusBarMessage(const QString & text); + void titleChanged(const QString & title); + void urlChanged(const QString & url); + void secureConnection(bool secure); + void backEnabled(bool enabled); + void forwardEnabled(bool enabled); + void startingPanGesture(int); + void contentViewMouseEvent(QEvent::Type type); + + public slots: + void loadUrlToCurrentPage(const QString & url); + void zoomIn(qreal factor = 0.1); + void zoomOut(qreal factor = 0.1); + void setZoomFactor(qreal factor); + void showMessageBox(WRT::MessageBoxProxy* data); + void zoomP(); + void zoomN(); + void stop(); + void back(); + void forward(); + void reload(); + void zoomBy(qreal delta) { zoomIn(delta); } + void zoom(bool in); + void toggleZoom(); + void stopZoom(); + void scrollBy(int deltaX, int deltaY) { scrollViewBy(deltaX, deltaY); } + int scrollX(); + int scrollY(); + int contentWidth(); + int contentHeight(); + + // Show the current normal web page, ie. not a super page. + void showNormalPage(); + + void dump(); + + private slots: + void updateZoom(qreal delta); + void onLoadStarted(); + void onLoadFinished(bool ok); + void onUrlChanged(const QUrl& url); + + // Called by the page controller when it creates a page. + void pageCreated(WRT::WrtBrowserContainer * pg); + // Called by the page controller when changes a page. + void pageChanged(WRT::WrtBrowserContainer * , WRT::WrtBrowserContainer *); + + protected: + GWebContentViewWidget *webWidgetConst() const { return m_widget; } + ChromeWidget *chrome() { return m_chrome; } + void updateWebPage(WRT::WrtBrowserContainer * pg); + void changeContentViewZoomInfo(WRT::WrtBrowserContainer* newPage); + + protected: + GWebContentViewWidget *m_widget; + QNetworkAccessManager *m_networkMgr; //Owned + + private: + void setZoomActions(); + + ChromeWidget *m_chrome; // not owned + QAction * m_actionZoomIn; + QAction * m_actionZoomOut; + QTimeLine * m_timeLine; + bool m_zoomIn; + + GWebTouchNavigation* m_touchNavigation; + bool m_backEnabled; + bool m_forwardEnabled; + + ChromeWidget *m_chromeWidget; // not owned + typedef QMap PageMap; + PageMap m_superPages; + PageMap::iterator m_currentSuperPage; + bool m_currentPageIsSuperPage; + QTimer *m_timer; + qreal m_value; + bool m_gesturesEnabled; + }; + +} + +#endif // GWebContentView_H