10bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies) 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 40bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This library is free software; you can redistribute it and/or 50bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch modify it under the terms of the GNU Library General Public 60bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch License as published by the Free Software Foundation; either 70bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch version 2 of the License, or (at your option) any later version. 80bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 90bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch This library is distributed in the hope that it will be useful, 100bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch but WITHOUT ANY WARRANTY; without even the implied warranty of 110bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Library General Public License for more details. 130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch You should have received a copy of the GNU Library General Public License 150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch along with this library; see the file COPYING.LIB. If not, write to 160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch Boston, MA 02110-1301, USA. 180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch*/ 190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <QApplication> 210bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <QUrl> 220bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebview.h> 230bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebframe.h> 240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch#include <qwebelement.h> 250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 260bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic QWebFrame *frame; 270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic void traverse() 290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 300bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch//! [Traversing with QWebElement] 310bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frame->setHtml("<html><body><p>First Paragraph</p><p>Second Paragraph</p></body></html>"); 320bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement doc = frame->documentElement(); 330bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement body = doc.firstChild(); 340bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement firstParagraph = body.firstChild(); 350bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement secondParagraph = firstParagraph.nextSibling(); 360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch//! [Traversing with QWebElement] 370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 380bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 396c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenstatic void findButtonAndClick() 406c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 416c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 426c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen frame->setHtml("<form name=\"myform\" action=\"submit_form.asp\" method=\"get\">" 436c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen "<input type=\"text\" name=\"myfield\">" 446c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen "<input type=\"submit\" value=\"Submit\">" 456c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen "</form>"); 466c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 476c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen//! [Calling a DOM element method] 486c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 496c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QWebElement document = frame->documentElement(); 506c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen /* Assume that the document has the following structure: 516c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 526c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen <form name="myform" action="submit_form.asp" method="get"> 536c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen <input type="text" name="myfield"> 546c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen <input type="submit" value="Submit"> 556c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen </form> 566c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 576c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen */ 586c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 596c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QWebElement button = document.findFirst("input[type=submit]"); 606c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen button.evaluateJavaScript("click()"); 616c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 626c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen//! [Calling a DOM element method] 636c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 646c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen } 656c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 666c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenstatic void autocomplete1() 676c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 686c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QWebElement document = frame->documentElement(); 696c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 706c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen//! [autocomplete1] 716c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QWebElement firstTextInput = document.findFirst("input[type=text]"); 726c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QString storedText = firstTextInput.attribute("value"); 736c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen//! [autocomplete1] 746c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 756c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 766c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 776c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 786c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsenstatic void autocomplete2() 796c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen{ 806c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 816c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QWebElement document = frame->documentElement(); 826c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QString storedText = "text"; 836c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 846c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen//! [autocomplete2] 856c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen QWebElement firstTextInput = document.findFirst("input[type=text]"); 866c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen textInput.setAttribute("value", storedText); 876c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen//! [autocomplete2] 886c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 896c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen} 906c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 916c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen 920bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic void findAll() 930bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 940bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch//! [FindAll] 950bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebElement document = frame->documentElement(); 960bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch /* Assume the document has the following structure: 970bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 980bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch <p class=intro> 990bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch <span>Intro</span> 1000bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch <span>Snippets</span> 1010bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch </p> 1020bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch <p> 1030bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch <span>Content</span> 1040bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch <span>Here</span> 1050bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch </p> 1060bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch */ 1070bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block//! [FindAll intro] 109d0825bca7fe65beaee391d30da42e937db621564Steve Block QWebElementCollection allSpans = document.findAll("span"); 110d0825bca7fe65beaee391d30da42e937db621564Steve Block QWebElementCollection introSpans = document.findAll("p.intro span"); 111643ca7872b450ea4efacab6188849e5aac2ba161Steve Block//! [FindAll intro] //! [FindAll] 1120bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 1130bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 1140bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochint main(int argc, char *argv[]) 1150bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 1160bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QApplication app(argc, argv); 1170bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch QWebView *view = new QWebView(0); 1180bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch frame = view->page()->mainFrame(); 1190bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch traverse(); 1200bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch findAll(); 1216c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen findButtonAndClick(); 1226c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen autocomplete1(); 1236c2af9490927c3c5959b5cb07461b646f8b32f6cKristian Monsen autocomplete2(); 1240bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return 0; 1250bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 126