browsercore/appfw/Api/Common/wrtBrowserUtils.cpp
changeset 9 b39122337a00
parent 3 0954f5dd2cd0
--- 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;
 }