diff -r b0dd75e285d2 -r 0f2326c2a325 browsercore/core/webnavigation.cpp --- a/browsercore/core/webnavigation.cpp Fri May 14 15:40:36 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,171 +0,0 @@ -/* -* Copyright (c) 2009 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 "webnavigation.h" -#include "qwebpage.h" -#include "qwebframe.h" -#include "webtouchnavigation.h" -#include "webcursornavigation.h" -#include "webhtmltabbednavigation.h" -#include "webdirectionalnavigation.h" - -namespace WRT { - -/*! - \class WebNavigation - \since cwrt 1.0 - \brief cwrt navigation. - - \sa WebTouchNavigation, WebCursorNavigation, WebDirectionalNavigation, WebHtmlTabIndexedNavigation -*/ -WebNavigation::WebNavigation(QWebPage* webPage,QObject* view) : m_webPage(webPage) -, m_view(view) -, m_webTouchNavigation(0) -, m_webCursorNavigation(0) -, m_webDirectionalNavigation(0) -, m_webHtmlTabIndexNavigation(0) -{ - m_webPage->settings()->setUserStyleSheetUrl(QUrl("data:text/css;charset=utf-8;base64," \ - + QByteArray("textarea:hover, textarea:focus { " \ - " outline: auto; " \ - " outline-style: solid; " \ - " outline-color: rgb(140,140,255); " \ - " outline-width: 2px; " \ - "} " \ - "select:hover, " \ - "select[multiple]:hover, " \ - "select:focus, " \ - "select[multiple]:focus { " \ - " outline: auto; " \ - " outline-style: solid; " \ - " outline-color: rgb(140,140,255); " \ - " outline-width: 2px; " \ - "} " \ - "input:hover, input:focus { " \ - " outline: auto; " \ - " outline-style: solid; " \ - " outline-color: rgb(140,140,255); " \ - " outline-width: 2px; " \ - "} " \ - "object:hover, object:focus { " \ - " outline: auto; " \ - " outline-style: solid; " \ - " outline-color: rgb(140,140,255); " \ - " outline-width: 2px; " \ - "} " \ - "input:disabled, select:disabled, textarea:disabled { " \ - " outline: none; " \ - "} " \ - "a:-webkit-any-link { " \ - " padding: 1px 2px; " \ - "} " \ - "a:-webkit-any-link:visited { " \ - " color: red; " \ - "} " \ - "a:-webkit-any-link:active { " \ - " background-color: lightgray; " \ - " -webkit-border-radius: 3px; " \ - " text-decoration: none; " \ - "} " \ - "a:-webkit-any-link:focus { " \ - " background-color: lightgray; " \ - " -webkit-border-radius: 3px; " \ - " text-decoration: none; " \ - "} ").toBase64())); - - - setNavigationMode(); - connect(m_webPage->mainFrame(), SIGNAL(initialLayoutCompleted()), this, SLOT(setNavigationMode())); - connect(this, SIGNAL(longPressEvent()), m_webPage,SIGNAL(longPressEvent())); - connect(this,SIGNAL(focusElementChanged(wrtBrowserDefs::BrowserElementType &)), - m_webPage,SLOT(setElementType(wrtBrowserDefs::BrowserElementType &))); - connect(this, SIGNAL(pageScrollPositionZero()), m_webPage, SIGNAL(pageScrollPositionZero())); - -} - -/*! -*/ -WebNavigation::~WebNavigation() -{ - delete m_webTouchNavigation; - delete m_webCursorNavigation; - delete m_webDirectionalNavigation; - delete m_webHtmlTabIndexNavigation; -} - -void WebNavigation::setPage(QWebPage * page) { - - m_webPage = page; - if (m_webTouchNavigation) - m_webTouchNavigation->setPage(page); - if (m_webCursorNavigation) - m_webCursorNavigation->setPage(page); - if (m_webDirectionalNavigation) - m_webDirectionalNavigation->setPage(page); - if (m_webHtmlTabIndexNavigation) - m_webHtmlTabIndexNavigation->setPage(page); -} - -/*! - Sets the navigation mode -*/ -void WebNavigation::setNavigationMode() -{ - if (!m_webPage) - return; - - if (!m_view) - return; - - if (m_webTouchNavigation) - m_webTouchNavigation->uninstall(); - if (m_webCursorNavigation) - m_webCursorNavigation->uninstall(); - if (m_webDirectionalNavigation) - m_webDirectionalNavigation->uninstall(); - if (m_webHtmlTabIndexNavigation) - m_webHtmlTabIndexNavigation->uninstall(); - - QWebFrame* webFrame = m_webPage->currentFrame(); - if (webFrame) { - QMultiMap map = webFrame->metaData(); - if (map.value("touchnavigation") != "off" && map.value("navigation") != "none") { - if (!m_webTouchNavigation) { - m_webTouchNavigation = new WebTouchNavigation(m_webPage,m_view); - connect( (const QObject*)(m_webTouchNavigation),SIGNAL(longPressEvent()),this,SIGNAL(longPressEvent())); - connect((const QObject*)(m_webTouchNavigation), SIGNAL(focusElementChanged(wrtBrowserDefs::BrowserElementType &)), - this, SIGNAL(focusElementChanged(wrtBrowserDefs::BrowserElementType &))); - connect( (const QObject*)(m_webTouchNavigation),SIGNAL(pageScrollPositionZero()),this,SIGNAL(pageScrollPositionZero())); - - } - else - m_webTouchNavigation->install(); - } - - // Enable key navigation, browser does not depend on meta data for navigation - if (!m_webDirectionalNavigation) { - m_webDirectionalNavigation = new WebDirectionalNavigation(m_webPage,m_view); - connect( (const QObject*)(m_webDirectionalNavigation),SIGNAL(pageScrollPositionZero()),this,SIGNAL(pageScrollPositionZero())); - } - else { - m_webDirectionalNavigation->install(); - } - } -} - -}