--- a/browsercore/appfw/Api/Common/wrtBrowserUtils.cpp Mon Jul 12 15:46:53 2010 -0400
+++ b/browsercore/appfw/Api/Common/wrtBrowserUtils.cpp Fri Aug 06 17:23:08 2010 -0400
@@ -19,85 +19,74 @@
*
*/
+#include <QWebHitTestResult>
#include "wrtBrowserUtils.h"
-
-wrtBrowserUtils::wrtBrowserUtils()
-{
-}
-
-wrtBrowserUtils::~wrtBrowserUtils()
-{
-}
-wrtBrowserDefs::BrowserElementType wrtBrowserUtils::ElementType(QWebElement* node)
-{
- if( !node || node->isNull())
- return wrtBrowserDefs::EElementNone;
-
- wrtBrowserDefs::BrowserElementType elType(wrtBrowserDefs::EElementNone);
-
- // get the right element type
- if ( !node->tagName().compare(LINK_TAG,Qt::CaseInsensitive) ){
- elType = wrtBrowserDefs::EElementAnchor;
- }
- if ( !node->tagName().compare(INPUT_TAG,Qt::CaseInsensitive) ){
- elType = wrtBrowserDefs::EElementInputBox;
- }
- else if ( !node->tagName().compare(A_TAG,Qt::CaseInsensitive) ){
- elType = wrtBrowserDefs::EElementAnchor;
- QString href = node->attribute( HREF_ATTR );
- if( !node->tagName().compare(AREA_TAG,Qt::CaseInsensitive) ){
- elType = wrtBrowserDefs::EElementAreaBox;
- }
- }
- if (!node->tagName().compare(TEXT_AREA_TAG,Qt::CaseInsensitive))
- elType = wrtBrowserDefs::EElementTextAreaBox;
- if (!node->tagName().compare(SELECT_TAG,Qt::CaseInsensitive))
- elType = wrtBrowserDefs::EElementSelectBox;
- if (!node->tagName().compare(BUTTON_TAG,Qt::CaseInsensitive))
- elType = wrtBrowserDefs::EElementButton;
- if (!node->tagName().compare(FORM_TAG,Qt::CaseInsensitive))
- elType = wrtBrowserDefs::EElementForm;
- if (!node->tagName().compare(LI_TAG,Qt::CaseInsensitive)||!node->tagName().compare(OL_TAG,Qt::CaseInsensitive)||!node->tagName().compare(DL_TAG,Qt::CaseInsensitive))
- elType = wrtBrowserDefs::EElementListBox;
- else if( !node->tagName().compare(OBJECT_TAG,Qt::CaseInsensitive) || !node->tagName().compare(EMBED_TAG,Qt::CaseInsensitive) ){
- elType = wrtBrowserDefs::EElementObjectBox;
- }
- return elType;
-}
+static const QString s_LinkTag = "link";
+static const QString s_InputTag = "input";
+static const QString s_ATag = "a";
+static const QString s_HrefTag = "href";
+static const QString s_AreaTag = "area";
+static const QString s_TextAreaTag = "textarea";
+static const QString s_ButtonTag = "button";
+static const QString s_ObjectTag = "object";
+static const QString s_EmbedTag = "embed";
+static const QString s_ImgTag = "img";
+static const QString s_SelectTag = "select";
+static const QString s_LiTag = "li";
+static const QString s_OlTag = "ol";
+static const QString s_DlTag = "dl";
+static const QString s_FormTag = "form";
+static const QString s_HtmlTag = "html";
wrtBrowserDefs::BrowserElementType wrtBrowserUtils::getTypeFromElement(QWebHitTestResult htRes)
{
- QWebElement* node = &htRes.element();
+ QWebElement node = htRes.element();
wrtBrowserDefs::BrowserElementType elType = wrtBrowserDefs::EElementNone;
- if(node){
-
- if(node->localName() == HTML_TAG){
- elType = wrtBrowserDefs::EElementNone;
- }
- else if(node->tagName().isEmpty()){
- //check whether hit test returns a navigatable element
- if(!htRes.linkElement().isNull()){
- elType = wrtBrowserDefs::EElementAnchor;
- }
- }
- else if (!node->tagName().compare(AREA_TAG,Qt::CaseInsensitive)){
- if(!node->attribute(HREF_ATTR).isNull()){
- elType = wrtBrowserDefs::EElementAreaBox;
- }
- else{
- elType = wrtBrowserDefs::EElementAnchor;
- }
- }
- else if (!node->tagName().compare(IMAGE_TAG,Qt::CaseInsensitive)){
- elType = wrtBrowserDefs::EElementImageBox;
- if(!htRes.linkElement().isNull()){
- elType = wrtBrowserDefs::EElementAnchor;
- }
- }
- else{
- elType = ElementType(node);
- }
- }
+
+ if (node.isNull())
+ return wrtBrowserDefs::EElementNone;
+
+ if (node.localName().compare(s_HtmlTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementNone;
+ } else if (node.tagName().isEmpty()) {
+ // check whether hit test returns a navigatable element
+ if(!htRes.linkElement().isNull()) {
+ elType = wrtBrowserDefs::EElementAnchor;
+ }
+ } else if (!node.tagName().compare(s_AreaTag, Qt::CaseInsensitive)) {
+ if(!node.attribute(s_HrefTag).isNull()) {
+ elType = wrtBrowserDefs::EElementAreaBox;
+ } else {
+ elType = wrtBrowserDefs::EElementAnchor;
+ }
+ } else if (!node.tagName().compare(s_ImgTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementImageBox;
+ if(!htRes.linkElement().isNull()) {
+ elType = wrtBrowserDefs::EElementAnchor;
+ }
+ } else if (!node.tagName().compare(s_LinkTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementAnchor;
+ } else if (!node.tagName().compare(s_InputTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementInputBox;
+ } else if (!node.tagName().compare(s_ATag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementAnchor;
+ } else if (!node.tagName().compare(s_TextAreaTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementTextAreaBox;
+ } else if (!node.tagName().compare(s_SelectTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementSelectBox;
+ } else if (!node.tagName().compare(s_ButtonTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementButton;
+ } else if (!node.tagName().compare(s_FormTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementForm;
+ } else if (!node.tagName().compare(s_LiTag, Qt::CaseInsensitive) ||
+ !node.tagName().compare(s_OlTag, Qt::CaseInsensitive) ||
+ !node.tagName().compare(s_DlTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementListBox;
+ } else if( !node.tagName().compare(s_ObjectTag, Qt::CaseInsensitive) ||
+ !node.tagName().compare(s_EmbedTag, Qt::CaseInsensitive)) {
+ elType = wrtBrowserDefs::EElementObjectBox;
+ }
+
return elType;
}