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 } |