--- a/browsercore/core/webhtmltabbednavigation.cpp Fri Jun 11 16:23:26 2010 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,169 +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 "webhtmltabbednavigation.h"
-#include "qwebpage.h"
-#include "qwebframe.h"
-#include "qwebelement.h"
-#include <QDebug>
-
-namespace WRT {
-
-/*!
- \class WebHtmlTabIndexedNavigation
- \since cwrt 1.0
- \brief cwrt navigation.
-
- \sa WebNavigation, WebTouchNavigation, WebCursorNavigation, WebDirectionalNavigation
-*/
-WebHtmlTabIndexedNavigation::WebHtmlTabIndexedNavigation(QWebPage* webPage,QObject* view) : m_webPage(webPage)
-, m_view(view)
-, m_radioKeyPressed(Qt::Key_Down)
-, m_radioGroupFocused(false)
-{
- install();
-}
-
-/*!
-*/
-WebHtmlTabIndexedNavigation::~WebHtmlTabIndexedNavigation()
-{
- uninstall();
-}
-
-void WebHtmlTabIndexedNavigation::install()
-{
- m_view->installEventFilter(this);
-}
-
-void WebHtmlTabIndexedNavigation::uninstall()
-{
- m_view->removeEventFilter(this);
-}
-
-bool WebHtmlTabIndexedNavigation::eventFilter(QObject *object, QEvent *event)
-{
- if (object == m_view) {
- switch (event->type()) {
- case QEvent::KeyPress: {
- QKeyEvent* ev = static_cast<QKeyEvent*>(event);
- keyPressEvent(ev);
- return ev->isAccepted();
- }
- case QEvent::KeyRelease: {
- QKeyEvent* ev = static_cast<QKeyEvent*>(event);
- keyReleaseEvent(ev);
- return ev->isAccepted();
- }
- default:
- break;
- }
- }
- return false;
-}
-
-/*!
- If the key is directional up or left sends a tab key press with a shift modifier to QWebPage
- If the key is directional right or down sends a tab key press with out a shift modifer to QWebPage
- Otherwise sends the key press event to QWebPage
-*/
-void WebHtmlTabIndexedNavigation::keyPressEvent(QKeyEvent* ev)
-{
- switch (ev->key()) {
- case Qt::Key_Up:
- case Qt::Key_Left: {
- QKeyEvent tabEvent(QEvent::KeyPress, Qt::Key_Tab, Qt::ShiftModifier);
- m_webPage->event(&tabEvent);
- }
- break;
- case Qt::Key_Down:
- case Qt::Key_Right: {
- QKeyEvent tabEvent(QEvent::KeyPress, Qt::Key_Tab, Qt::NoModifier);
- m_webPage->event(&tabEvent);
- }
- break;
- case Qt::Key_Return:
- case Qt::Key_Enter:
- case Qt::Key_Select: {
- QWebElement webElement = m_webPage->mainFrame()->findFirstElement(":focus");
- QString attribute = webElement.attribute("type");
- if (attribute.toLower().compare("checkbox")==0) {
- QKeyEvent spaceEvent(QEvent::KeyPress, Qt::Key_Space, Qt::NoModifier);
- m_webPage->event(&spaceEvent);
- } else if (attribute.toLower().compare("radio")==0) {
- m_radioKeyPressed = (m_radioGroupFocused) ? Qt::Key_Down : Qt::Key_Up;
- QKeyEvent keyevent(QEvent::KeyPress, m_radioKeyPressed, Qt::NoModifier);
- m_webPage->event(&keyevent);
- m_radioGroupFocused = (webElement.document().findFirst(":checked") != webElement) ? m_radioGroupFocused : !m_radioGroupFocused;
- } else if (webElement.tagName().toLower().compare("select")==0) {
- QKeyEvent keyevent(QEvent::KeyPress, Qt::Key_Down, Qt::NoModifier);
- m_webPage->event(&keyevent);
- }
- }
- break;
- default:
- if (m_webPage)
- m_webPage->event(ev);
- break;
- };
-}
-
-/*!
- If the key is directional up or left sends a tab key release with a shift modifier to QWebPage
- If the key is directional right or down sends a tab key release with out a shift modifer to QWebPage
- Otherwise sends the key press event to QWebPage
-*/
-void WebHtmlTabIndexedNavigation::keyReleaseEvent(QKeyEvent* ev)
-{
- switch (ev->key()) {
- case Qt::Key_Up:
- case Qt::Key_Left: {
- QKeyEvent tabEvent(QEvent::KeyRelease, Qt::Key_Tab, Qt::ShiftModifier);
- m_webPage->event(&tabEvent);
- }
- break;
- case Qt::Key_Down:
- case Qt::Key_Right: {
- QKeyEvent tabEvent(QEvent::KeyRelease, Qt::Key_Tab, Qt::NoModifier);
- m_webPage->event(&tabEvent);
- }
- break;
- case Qt::Key_Return:
- case Qt::Key_Enter:
- case Qt::Key_Select: {
- QWebElement webElement = m_webPage->mainFrame()->findFirstElement(":focus");
- QString attribute = webElement.attribute("type");
- if (attribute.toLower().compare("checkbox")==0) {
- QKeyEvent spaceEvent(QEvent::KeyRelease, Qt::Key_Space, Qt::NoModifier);
- m_webPage->event(&spaceEvent);
- } else if (attribute.toLower().compare("radio")==0 || attribute.toLower().compare("select")==0) {
- QKeyEvent keyevent(QEvent::KeyRelease, m_radioKeyPressed, Qt::NoModifier);
- m_webPage->event(&keyevent);
- } else if (webElement.tagName().toLower().compare("select")==0) {
- QKeyEvent keyevent(QEvent::KeyRelease, Qt::Key_Down, Qt::NoModifier);
- m_webPage->event(&keyevent);
- }
- }
- default:
- if (m_webPage)
- m_webPage->event(ev);
- break;
- };
-}
-
-}