ginebra/chromeview.h
changeset 0 1450b09d0cfd
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra/chromeview.h	Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,161 @@
+/*
+* 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 CHROMEVIEW_H
+#define CHROMEVIEW_H
+#include <QtGui>
+#include "wrtbrowsercontainer.h"
+#include "bedrockprovisioning.h"
+
+class ChromeJSObject;
+class ChromeSnippet;
+class ChromeWidget;
+class GraphicsItemRotater;
+class QNetworkAccessManager;
+class QResizeEvent;
+class QWebView;
+class ControllableView;
+class ViewController;
+
+class LocaleDelegate;
+class DownloadController;
+class DeviceDelegate;
+namespace WRT {
+    class WebNavigation;
+};
+
+using namespace WRT;
+
+/**
+ * \brief Provides the main view of the browser.
+ * 
+ * The ChromeView class provides the main view of the browser including the chrome
+ * and the content view.
+ */
+class ChromeView : public QGraphicsView
+{
+    Q_OBJECT
+  public:
+    ChromeView(const QString chromeUrl, QWidget *parent);
+    ChromeView(QWidget *parent);
+    ~ChromeView();
+
+    void show(const QString& id, int x , int y );
+    void show(const QString& id);
+    void hide(const QString& id);
+    void setAnchor(const QString& id, const QString& anchor);
+    void toggleVisibility(const QString& id);
+    void setLocation(const QString& id, int x, int y);
+    void toggleAttention(const QString& id);
+    void setVisibilityAnimator(const QString& elementId, const QString & animatorName);
+    void setAttentionAnimator(const QString& elementId, const QString & animatorName);
+    void flipToCurrentView(const QString& fromId);
+    void flipFromCurrentView(const QString& toId);
+    void updateViewPort();
+    void setViewPort(QRect viewPort);
+    ControllableView *currentContentView();
+    ControllableView *contentView(const QString & type);
+    ChromeWidget * getChromeWidget();
+    QGraphicsScene *getScene() {return m_graphicsScene;}
+    void setBackgroundColor(const QColor &color);
+    void resizeScrollArea(QResizeEvent *e);
+	QRect contentViewGeometry() const;
+
+    typedef enum {DisplayModePortrait = 0, DisplayModeLandscape } DisplayMode;
+    DisplayMode displayMode() const { return m_displayMode; }
+  	QString getDisplayMode() {return displayMode() == ChromeView::DisplayModePortrait ? "portrait" : "landscape";}
+
+    void updateChildGeometries(const QRect &rect);
+    void setViewofCurrentPage();
+    static QString getChromePath();
+
+    virtual bool viewportEvent(QEvent* event);
+    
+  public slots:
+    void loadChrome(const QString &url);
+    QString chromeUrl() const { return m_chromeUrl; }
+    void setChromeUrl(const QString &url) { m_chromeUrl = url; }
+    void reloadChrome();
+    void loadStarted();
+    void loadFinished(bool ok);
+    void setContentView();
+    void contentViewChanging();
+    void pageCreated(WRT::WrtBrowserContainer * pg);
+    void pageChanged(WRT::WrtBrowserContainer * , WRT::WrtBrowserContainer *);
+
+    void saveToHistory(bool);
+    void loadContentView();
+    void loadUrltoCurrentPage(const QUrl & url);
+    static QString getChromeBaseDir();
+         
+
+  signals:
+    void requestChrome(const QString &url);
+    void chromeLoadFinished();
+    void viewPortResize(int x, int y, int w, int h);
+
+  protected slots:
+    void injectJSObjects();
+    void chromeLoaded();
+    void connectContentView();
+    void connectAll();
+    void updateContentGeometry(const QRect &rect);
+
+  protected:    
+    void init(const QString chromeUrl);
+    void initViewController();
+    void resizeEvent(QResizeEvent *e);
+    void injectJSObject(QObject *object);
+    void updateDisplayMode();
+    void setDisplayMode(DisplayMode mode);
+    void updateSceneSize(const QSize &size);
+    void displayModeChangeStart();
+
+    /// Show a splashscreen while chrome is loading.
+		void showSplashScreen();
+    void updateWebPage(WRT::WrtBrowserContainer* pg);
+
+    void changeContentViewZoomInfo(WRT::WrtBrowserContainer* newPage);
+ 
+  protected:
+    QGraphicsScene *m_graphicsScene; //Owned
+    ChromeWidget *m_chromeWidget; //Owned
+    ViewController *m_viewController; // Owned
+    ChromeJSObject* m_js; //Owned
+    QGraphicsWidget *m_mainWidget; //Ownership passed to scene
+    DisplayMode m_displayMode;
+    QString m_chromeUrl;
+	QLabel *m_splashScreen;  // Owned
+    WebNavigation *m_navigation;
+    LocaleDelegate *m_localeDelegate; // Owned
+	DownloadController *m_downloadController; // Owned
+    DeviceDelegate *m_deviceDelegate; // Owned
+};
+
+class GiWidget : public QMainWindow
+{
+	Q_OBJECT
+	public:
+	 void resizeEvent(QResizeEvent *e){cw->resize(e->size());}
+	 void setChromeView(ChromeView *p){cw = p;}	
+	private: 
+	 ChromeView *cw;
+};
+
+#endif // CHROMEVIEW_H
+