browsercore/appfw/Api/Common/wrtBrowserUtils.cpp
changeset 9 b39122337a00
parent 3 0954f5dd2cd0
equal deleted inserted replaced
7:a1f515018ac1 9:b39122337a00
    17 *
    17 *
    18 * Description:
    18 * Description:
    19 *
    19 *
    20 */
    20 */
    21 
    21 
       
    22 #include <QWebHitTestResult>
    22 #include "wrtBrowserUtils.h"
    23 #include "wrtBrowserUtils.h"
    23 
    24 
    24 
    25 static const QString s_LinkTag = "link";
    25 wrtBrowserUtils::wrtBrowserUtils()
    26 static const QString s_InputTag = "input";
    26 {
    27 static const QString s_ATag = "a";
    27 }
    28 static const QString s_HrefTag = "href";
    28 
    29 static const QString s_AreaTag = "area";
    29 wrtBrowserUtils::~wrtBrowserUtils()
    30 static const QString s_TextAreaTag = "textarea";
    30 {
    31 static const QString s_ButtonTag = "button";
    31 }
    32 static const QString s_ObjectTag = "object";
    32 wrtBrowserDefs::BrowserElementType wrtBrowserUtils::ElementType(QWebElement* node)
    33 static const QString s_EmbedTag = "embed";
    33 {
    34 static const QString s_ImgTag = "img";
    34 	if( !node || node->isNull())
    35 static const QString s_SelectTag = "select";
    35         return wrtBrowserDefs::EElementNone;
    36 static const QString s_LiTag = "li";
    36 
    37 static const QString s_OlTag = "ol";
    37     wrtBrowserDefs::BrowserElementType elType(wrtBrowserDefs::EElementNone);
    38 static const QString s_DlTag = "dl";
    38    
    39 static const QString s_FormTag = "form";
    39     // get the right element type
    40 static const QString s_HtmlTag = "html";
    40 	if ( !node->tagName().compare(LINK_TAG,Qt::CaseInsensitive) ){
       
    41         elType = wrtBrowserDefs::EElementAnchor;
       
    42     }
       
    43 	if ( !node->tagName().compare(INPUT_TAG,Qt::CaseInsensitive) ){
       
    44         elType = wrtBrowserDefs::EElementInputBox;
       
    45     }
       
    46 	else if ( !node->tagName().compare(A_TAG,Qt::CaseInsensitive) ){
       
    47 		elType = wrtBrowserDefs::EElementAnchor;        
       
    48         QString href = node->attribute( HREF_ATTR );
       
    49 		if( !node->tagName().compare(AREA_TAG,Qt::CaseInsensitive) ){
       
    50 			elType = wrtBrowserDefs::EElementAreaBox;                        
       
    51         }
       
    52     }
       
    53 	if (!node->tagName().compare(TEXT_AREA_TAG,Qt::CaseInsensitive))
       
    54         elType = wrtBrowserDefs::EElementTextAreaBox;  
       
    55 	if (!node->tagName().compare(SELECT_TAG,Qt::CaseInsensitive))
       
    56         elType = wrtBrowserDefs::EElementSelectBox;  
       
    57 	if (!node->tagName().compare(BUTTON_TAG,Qt::CaseInsensitive))
       
    58         elType = wrtBrowserDefs::EElementButton; 
       
    59 	if (!node->tagName().compare(FORM_TAG,Qt::CaseInsensitive))
       
    60         elType = wrtBrowserDefs::EElementForm;  
       
    61 	if (!node->tagName().compare(LI_TAG,Qt::CaseInsensitive)||!node->tagName().compare(OL_TAG,Qt::CaseInsensitive)||!node->tagName().compare(DL_TAG,Qt::CaseInsensitive))
       
    62         elType = wrtBrowserDefs::EElementListBox;  
       
    63 	else if( !node->tagName().compare(OBJECT_TAG,Qt::CaseInsensitive) || !node->tagName().compare(EMBED_TAG,Qt::CaseInsensitive) ){
       
    64 		elType = wrtBrowserDefs::EElementObjectBox;        
       
    65     }
       
    66     return elType;
       
    67 }
       
    68 
    41 
    69 wrtBrowserDefs::BrowserElementType wrtBrowserUtils::getTypeFromElement(QWebHitTestResult htRes) 
    42 wrtBrowserDefs::BrowserElementType wrtBrowserUtils::getTypeFromElement(QWebHitTestResult htRes) 
    70 {
    43 {
    71 	QWebElement* node = &htRes.element();
    44 	QWebElement node = htRes.element();
    72 	wrtBrowserDefs::BrowserElementType elType = wrtBrowserDefs::EElementNone;
    45 	wrtBrowserDefs::BrowserElementType elType = wrtBrowserDefs::EElementNone;
    73 	if(node){
    46 
    74 		
    47     if (node.isNull())
    75 			if(node->localName() == HTML_TAG){
    48         return wrtBrowserDefs::EElementNone;
    76 				elType = wrtBrowserDefs::EElementNone;
    49 
    77 			}
    50     if (node.localName().compare(s_HtmlTag, Qt::CaseInsensitive)) {
    78 			else if(node->tagName().isEmpty()){
    51         elType = wrtBrowserDefs::EElementNone;
    79 				//check whether hit test returns a navigatable element				
    52     } else if (node.tagName().isEmpty()) {
    80 				if(!htRes.linkElement().isNull()){
    53         // check whether hit test returns a navigatable element				
    81 					elType = wrtBrowserDefs::EElementAnchor;
    54         if(!htRes.linkElement().isNull()) {
    82 				}
    55             elType = wrtBrowserDefs::EElementAnchor;
    83 			}
    56         }
    84 			else if (!node->tagName().compare(AREA_TAG,Qt::CaseInsensitive)){
    57     } else if (!node.tagName().compare(s_AreaTag, Qt::CaseInsensitive)) {
    85 				if(!node->attribute(HREF_ATTR).isNull()){
    58         if(!node.attribute(s_HrefTag).isNull()) {
    86                         elType = wrtBrowserDefs::EElementAreaBox;
    59             elType = wrtBrowserDefs::EElementAreaBox;
    87                     }
    60         } else {
    88 				else{
    61             elType = wrtBrowserDefs::EElementAnchor;
    89                         elType = wrtBrowserDefs::EElementAnchor;
    62         }
    90 				}
    63     } else if (!node.tagName().compare(s_ImgTag, Qt::CaseInsensitive)) {
    91             }
    64         elType = wrtBrowserDefs::EElementImageBox;
    92 			else if (!node->tagName().compare(IMAGE_TAG,Qt::CaseInsensitive)){
    65         if(!htRes.linkElement().isNull()) {
    93 				 elType = wrtBrowserDefs::EElementImageBox;
    66             elType = wrtBrowserDefs::EElementAnchor;
    94 				 if(!htRes.linkElement().isNull()){
    67         }
    95 				        elType = wrtBrowserDefs::EElementAnchor;
    68     } else if (!node.tagName().compare(s_LinkTag, Qt::CaseInsensitive)) {
    96 				 }
    69         elType = wrtBrowserDefs::EElementAnchor;
    97              }
    70 	} else if (!node.tagName().compare(s_InputTag, Qt::CaseInsensitive)) {
    98 			 else{
    71         elType = wrtBrowserDefs::EElementInputBox;
    99 				 elType = ElementType(node);
    72     } else if (!node.tagName().compare(s_ATag, Qt::CaseInsensitive)) {
   100              }
    73 		elType = wrtBrowserDefs::EElementAnchor;        
   101 	}
    74     } else if (!node.tagName().compare(s_TextAreaTag, Qt::CaseInsensitive)) {
       
    75         elType = wrtBrowserDefs::EElementTextAreaBox;  
       
    76 	} else if (!node.tagName().compare(s_SelectTag, Qt::CaseInsensitive)) {
       
    77         elType = wrtBrowserDefs::EElementSelectBox;  
       
    78 	} else if (!node.tagName().compare(s_ButtonTag, Qt::CaseInsensitive)) {
       
    79         elType = wrtBrowserDefs::EElementButton; 
       
    80 	} else if (!node.tagName().compare(s_FormTag, Qt::CaseInsensitive)) {
       
    81         elType = wrtBrowserDefs::EElementForm;  
       
    82 	} else if (!node.tagName().compare(s_LiTag, Qt::CaseInsensitive) ||
       
    83 	           !node.tagName().compare(s_OlTag, Qt::CaseInsensitive) ||
       
    84 	           !node.tagName().compare(s_DlTag, Qt::CaseInsensitive)) {
       
    85         elType = wrtBrowserDefs::EElementListBox;
       
    86 	} else if( !node.tagName().compare(s_ObjectTag, Qt::CaseInsensitive) ||
       
    87 	           !node.tagName().compare(s_EmbedTag, Qt::CaseInsensitive)) {
       
    88 		elType = wrtBrowserDefs::EElementObjectBox;        
       
    89     }
       
    90 
   102 	return elType;
    91 	return elType;
   103 }
    92 }