--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/ginebra2/emulator/browser.cpp Tue May 04 12:39:35 2010 +0300
@@ -0,0 +1,219 @@
+/*
+* 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:
+*
+*/
+
+
+#include "browser.h"
+#ifndef NO_QSTM_GESTURE
+#include "WebGestureHelper.h"
+#endif
+#include "../ChromeWidget.h"
+#include "HistoryFlowView.h"
+#include "WindowFlowView.h"
+#include "WrtPageManager.h"
+#include "bedrockprovisioning.h"
+
+#include <QDebug>
+#ifdef _GVA_INSPECT_CHROME_
+#include <QWebInspector>
+#endif
+#include <QWebSettings>
+
+#ifndef Q_OS_SYMBIAN
+// Uncomment the next line to enable the javascript console dialog.
+//#define CHROME_CONSOLE 1
+#ifdef CHROME_CONSOLE
+#include "ChromeConsole.h"
+#endif
+#endif
+
+GinebraBrowser::GinebraBrowser(QObject * parent)
+ : QObject(parent),
+ m_splashScreen(NULL)
+{
+ QString startUpChrome(BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->valueAsString("StartUpChrome"));
+ m_install = BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->valueAsString("ChromeBaseDirectory2")
+ + startUpChrome.section('/', 0, -2) + "/";
+ m_chromeUrl = startUpChrome.section('/', -1);
+ m_contentUrl = BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->valueAsString("StartPage");
+
+ //qDebug() << "GinebraBrowser::GinebraBrowser: " << m_install << " " << m_chromeUrl;
+ //GVA::Settings * settings = GVA::Settings::instance();
+ //settings->setInstallRoot(m_install);
+ // Create the chrome widget
+ m_chrome = new GVA::ChromeWidget();
+
+ //removeFaviconDir();
+
+ /*QDir homeDir = getHomeDir();
+ homeDir.mkdir("favicon");
+
+ QString iconDBPath = homeDir.absolutePath() + "/favicon";
+ QWebSettings::globalSettings()->setIconDatabasePath(iconDBPath);*/
+
+#ifdef _GVA_INSPECT_CHROME_
+ QWebSettings * s = m_chrome->page()->settings();
+ s->setAttribute(QWebSettings::DeveloperExtrasEnabled, true );
+ QWebInspector *inspector = new QWebInspector;
+ inspector->setPage(m_chrome->page());
+ inspector->resize(400,600);
+ inspector->show();
+ connect(m_chrome->page(), SIGNAL(webInspectorTriggered(QWebElement)), inspector, SLOT(show()));
+#endif
+ //Create a view onto the chrome
+ m_view = new GVA::ChromeView(m_chrome);
+#ifndef NO_QSTM_GESTURE
+ WebGestureHelper* gh = new WebGestureHelper(m_view);
+ browserApp->setGestureHelper(gh);
+ browserApp->setMainWindow(m_view);
+ m_view->grabGesture(QStm_Gesture::assignedType());
+#endif
+
+#ifdef Q_OS_SYMBIAN
+ m_view->showFullScreen();
+#else
+ m_view->setGeometry(0,0,360,640);
+#endif
+
+ showSplashScreen();
+
+#ifndef __gva_no_chrome__
+ QObject::connect(m_chrome, SIGNAL(internalChromeComplete()), this, SLOT(onChromeComplete()));
+ //Load the chrome
+ m_chrome->setChromeBaseDirectory(m_install);
+ m_chrome->setChromeFile(m_chromeUrl);
+#ifdef CHROME_CONSOLE
+ // Show the javascript console.
+ ChromeConsole *console = new ChromeConsole(m_chrome);
+ console->show();
+ console->move(m_view->geometry().topLeft() + QPoint(m_view->width()+6, 0));
+#endif
+#else
+ onChromeComplete();
+
+#endif
+
+}
+
+GinebraBrowser::~GinebraBrowser()
+{
+ delete m_chrome;
+ delete WebPageController::getSingleton();
+ delete m_view;
+ destroySplashScreen();
+
+#ifndef NO_QSTM_GESTURE
+ WebGestureHelper* gh = browserApp->gestureHelper();
+ delete gh;
+#endif
+}
+
+/*
+QDir GinebraBrowser::getHomeDir()
+{
+ QDir homeDir;
+
+#ifndef QT_NO_DESKTOPSERVICES
+ homeDir = QDesktopServices::storageLocation(QDesktopServices::DataLocation);
+#else
+ homeDir = QDir::homePath();
+#endif
+#ifdef Q_OS_SYMBIAN
+ if (homeDir.startsWith("Z"))
+ homeDir.replace(0,1,"C");
+#endif
+ return homeDir;
+}
+
+void GinebraBrowser::removeFaviconDir()
+{
+ QDir homeDir = getHomeDir();
+ homeDir.cd("favicon");
+ homeDir.cdUp();
+ homeDir.rmdir("favicon");
+}
+*/
+void GinebraBrowser::show()
+{
+ m_view->show();
+}
+
+void GinebraBrowser::onChromeComplete()
+{
+#ifndef __gva_no_chrome__
+ ControllableViewBase *windowView = WRT::WindowFlowView::createNew(m_chrome);
+ windowView->setObjectName("WindowView");
+ m_chrome->addView(windowView);
+#endif
+ //Create a content window and add it to the chrome
+ GVA::GWebContentView *content = new GVA::GWebContentView(m_chrome, 0, "WebView");
+
+ //Load the initial content after the chrome loads. This makes sure that an initial bad
+ //content page won't hang up rendering the chrome.
+ m_chrome->addView(content);
+
+ QString startPage = m_install + m_contentUrl;
+ qDebug() << "GinebraBrowser::onChromeComplete: startPage: " << startPage;
+
+ bool enabled = (bool) BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->valueAsInt("SaveSession");
+ if (enabled)
+ WebPageController::getSingleton()->loadFromHistory();
+ else
+ content->loadUrlToCurrentPage(startPage);
+
+#ifndef __gva_no_chrome__
+ WRT::HistoryFlowView *historyView = new WRT::HistoryFlowView(WrtPageManager::getSingleton(), m_chrome);
+ historyView->setObjectName("HistoryView");
+ m_chrome->addView(historyView);
+#endif
+ m_chrome->showView("WebView");
+ destroySplashScreen();
+}
+
+void GinebraBrowser::showSplashScreen() {
+ QString splashImage = BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->valueAsString("SplashImage");
+ QString baseDir = BEDROCK_PROVISIONING::BedrockProvisioning::createBedrockProvisioning()->valueAsString("ChromeBaseDirectory2");
+ QString imagePath = baseDir + splashImage;
+
+ qDebug() << "ChromeView::showSplashScreen: " << imagePath;
+ if(!imagePath.isNull()) {
+ m_splashScreen = new QLabel(NULL);
+ m_splashScreen->setAlignment(Qt::AlignCenter);
+ m_splashScreen->setStyleSheet("background-color: #FFF");
+ m_splashScreen->setPixmap(QPixmap(imagePath));
+ if(m_splashScreen->pixmap()->isNull()) {
+ ;//qDebug() << "ChromeView::chromeLoaded: ERROR splashscreen creation failed. " << imagePath;
+ }
+ else {
+ m_splashScreen->show();
+ #ifdef Q_OS_SYMBIAN
+ m_splashScreen->showFullScreen();
+ m_view->showFullScreen();
+ #else
+ m_splashScreen->setGeometry(0,0,360,640);
+ #endif
+ }
+ }
+}
+
+void GinebraBrowser::destroySplashScreen()
+{
+ if(m_splashScreen)
+ {
+ delete m_splashScreen;
+ m_splashScreen = NULL;
+ }
+}