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") { form.stackedWidget->setCurrentIndex(1); form.webView->disconnect(); return; } } showError("SERVICE unavailable."); }
void GoogleChat::doLogin() { userName = form.userNameEdit->text(); password = form.passwordEdit->text(); bool ok = !userName.isEmpty() && !password.isEmpty(); if (!ok) return; form.progressBar->setValue(0); form.progressBar->show(); connect(form.webView, SIGNAL(loadFinished(bool)), SLOT(loginPage(bool))); connect(form.webView, SIGNAL(loadProgress(int)), form.progressBar, SLOT(setValue(int))); 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();"); }
TITANIUM_FUNCTION(WebView, evalJS) { if (arguments.size() < 1) { return get_context().CreateUndefined(); } ENSURE_STRING_AT_INDEX(code, 0); ENSURE_OPTIONAL_OBJECT_AT_INDEX(callback, 1); return get_context().CreateString(evalJS(code, callback)); }
void GoogleChat::loginPage(bool ok) { QString location = form.webView->url().toString(); if (!ok) { if (location.indexOf("CheckCookie")) return; showError("Service unavailable"); } else { // check for any error message QString c = evalJS("document.getElementsByClassName('errormsg').length"); if (c == "0") { 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"); err = err.simplified(); } showError(err); } }
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)"); QTimer::singleShot(2000, this, SLOT(hideElements())); }