summaryrefslogtreecommitdiffstats
path: root/examples/webkit
diff options
context:
space:
mode:
authorPierre Rossi <pierre.rossi@nokia.com>2010-01-07 12:25:23 (GMT)
committerPierre Rossi <pierre.rossi@nokia.com>2010-01-12 18:19:13 (GMT)
commit4db1405ffa66c33f3746baa09301cdc4e05cacc7 (patch)
tree87ba464b0d97c472f8e54b1c60e69522e0c895a3 /examples/webkit
parent152e4ee249915b15241c5f37830f37bb569151b6 (diff)
downloadQt-4db1405ffa66c33f3746baa09301cdc4e05cacc7.zip
Qt-4db1405ffa66c33f3746baa09301cdc4e05cacc7.tar.gz
Qt-4db1405ffa66c33f3746baa09301cdc4e05cacc7.tar.bz2
Modifies the google chat example to use the DOM API
Now that it's there, we might as well use it! Reviewed-by: Benjamin Poulain
Diffstat (limited to 'examples/webkit')
-rw-r--r--examples/webkit/googlechat/form.ui6
-rw-r--r--examples/webkit/googlechat/googlechat.cpp38
-rw-r--r--examples/webkit/googlechat/googlechat.h3
3 files changed, 29 insertions, 18 deletions
diff --git a/examples/webkit/googlechat/form.ui b/examples/webkit/googlechat/form.ui
index 3b9fb82..4939ea1 100644
--- a/examples/webkit/googlechat/form.ui
+++ b/examples/webkit/googlechat/form.ui
@@ -48,6 +48,9 @@
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>
+ <property name="wordWrap">
+ <bool>true</bool>
+ </property>
</widget>
</item>
<item>
@@ -160,6 +163,9 @@
<property name="text">
<string>Login</string>
</property>
+ <property name="default">
+ <bool>true</bool>
+ </property>
</widget>
</item>
<item>
diff --git a/examples/webkit/googlechat/googlechat.cpp b/examples/webkit/googlechat/googlechat.cpp
index 12ea071..8eb033c 100644
--- a/examples/webkit/googlechat/googlechat.cpp
+++ b/examples/webkit/googlechat/googlechat.cpp
@@ -80,9 +80,8 @@ void GoogleChat::showError(const QString &msg) {
showStatus(QString("Error: %1").arg(msg));
}
-QString GoogleChat::evalJS(const QString &js) {
- QWebFrame *frame = form.webView->page()->mainFrame();
- return frame->evaluateJavaScript(js).toString();
+QWebElement GoogleChat::document() const {
+ return form.webView->page()->mainFrame()->documentElement();
}
void GoogleChat::adjustLoginButton() {
@@ -112,9 +111,11 @@ void GoogleChat::doLogin() {
showStatus("Logging in...");
QString userEmail = userName + "@gmail.com";
- evalJS(QString("document.getElementById('Email').value = \"%1\";").arg(userEmail));
- evalJS(QString("document.getElementById('Passwd').value = \"%1\";").arg(password));
- evalJS("document.getElementById('gaia_loginform').submit();");
+
+ document().findFirst("#Email").setAttribute("value", userEmail);
+ document().findFirst("#Passwd").setAttribute("value", password);
+ document().findFirst("#gaia_loginform").evaluateJavaScript("this.submit();");
+
}
void GoogleChat::initialPage(bool ok) {
@@ -124,11 +125,12 @@ void GoogleChat::initialPage(bool ok) {
}
if (ok) {
- QString s1 = evalJS("document.getElementById('Email').name");
- QString s2 = evalJS("document.getElementById('Passwd').name");
- QString s3 = evalJS("document.getElementById('gaia_loginform').id");
- if (s1 == "Email" && s2 == "Passwd" && s3 == "gaia_loginform") {
+ QWebElement email = document().findFirst("#Email");
+ QWebElement passwd = document().findFirst("#Passwd");
+ QWebElement loginForm = document().findFirst("#gaia_loginform");
+ if (!email.isNull() && !passwd.isNull() && !loginForm.isNull()) {
form.stackedWidget->setCurrentIndex(1);
+ form.userNameEdit->setFocus();
form.webView->disconnect();
return;
}
@@ -139,8 +141,8 @@ void GoogleChat::initialPage(bool ok) {
void GoogleChat::hideElements()
{
- evalJS("var e = document.getElementsByClassName('footer-footer')[0]; e.parentElement.removeChild(e)");
- evalJS("var e = document.getElementsByClassName('title-bar-bg title-bar')[0]; e.parentElement.removeChild(e)");
+ document().findFirst(".footer-footer").removeFromDocument();
+ document().findFirst(".title-bar-bg .title-bar").removeFromDocument();
QTimer::singleShot(2000, this, SLOT(hideElements()));
}
@@ -152,16 +154,18 @@ void GoogleChat::loginPage(bool ok) {
showError("Service unavailable");
} else {
// check for any error message
- QString c = evalJS("document.getElementsByClassName('errormsg').length");
- if (c == "0") {
+
+ QWebElement e = document().findFirst(".errormsg");
+ if (e.isNull()) {
form.stackedWidget->setCurrentIndex(2);
QTimer::singleShot(500, this, SLOT(hideElements()));
return;
}
- QString err = "Unknown login failure.";
- if (c == "1") {
- err = evalJS("document.getElementsByClassName('errormsg')[0].textContent");
+ QString err = "Unknown login failure.";
+ const QString errorMessage = e.toPlainText();
+ if (!errorMessage.isEmpty()) {
+ err = errorMessage;
err = err.simplified();
}
showError(err);
diff --git a/examples/webkit/googlechat/googlechat.h b/examples/webkit/googlechat/googlechat.h
index 70f921e..617587a 100644
--- a/examples/webkit/googlechat/googlechat.h
+++ b/examples/webkit/googlechat/googlechat.h
@@ -40,6 +40,7 @@
****************************************************************************/
#include <QWidget>
+#include <QWebElement>
#include "ui_form.h"
@@ -53,7 +54,7 @@ public:
protected:
void showStatus(const QString &msg);
void showError(const QString &msg);
- QString evalJS(const QString &js);
+ QWebElement document() const;
private slots: