#include "wtvwebview.h" #include #include #include #include WTVWebView::WTVWebView(QWidget* parent) : QWebView(parent) { qDebug()<<"\n\nWTVWebView::WTVWebView() invoked\n"; #ifdef USE_JQUERY QFile file; QDir::setCurrent("/wherevertv/bin"); file.setFileName(":/jquery.min.js"); file.open(QIODevice::ReadOnly); jQuery = file.readAll(); if(jQuery.isEmpty()) qDebug()<<"\n jQuery is empty \n"; file.close(); #endif connect ( this, SIGNAL ( loadFinished(bool) ), this, SLOT ( PrintChildControlls(bool) ) ); connect ( this->page(), SIGNAL ( selectionChanged() ), this, SLOT ( PrintSelectedText() ) ); //connect ( this->page(), SIGNAL (microFocusChanged()) ,this, SLOT(handleMicroFocusChanged())); } WTVWebView::~WTVWebView() { } //void WTVWebView::handleMicroFocusChanged() //{ // qDebug()<<"\n Handling Changes in MicroFocus \n"; // QString ret; //#if 0 // QString code = "var currentFocus = null;" // "$(':input').focus( function() {" // "currentFocus = this;" // "}).blur( function() {" // "currentFocus = null;" // "});"; //#endif // QString code = "document.forms[0].length"; // ret = (this->page()->mainFrame()->evaluateJavaScript(code)).toString(); // qDebug()<<"\n return value of evaluateJavascript \n" << ret; //} void WTVWebView::PrintSelectedText() { qDebug()<<"\n\nWTVWebView::PrintSelectedText() invoked\n"; QString str; str = this->page()->selectedText();//selectedText(); qDebug()<<"\n\nSelected text is :: "<page()->selectedText()<<"\n"; } void WTVWebView::PrintChildControlls(bool ok) { qDebug()<<"\n\nWTVWebView::PrintChildControlls() invoked\n"; qDebug()<<"\n\nPage Children\n"; #ifdef USE_JQUERY this->page()->mainFrame()->evaluateJavaScript(jQuery); #endif #if 0 QString jstr = "function whichElement(e)" "{" " var targ;" "if (!e) " "{" "var e=window.event;" "}" "if (e.target)" "{" "targ=e.target;" "}" "else if (e.srcElement)" "{" "targ=e.srcElement;" "}" "if (targ.nodeType==3) // defeat Safari bug" "{" "targ = targ.parentNode;" "}" "var tname;" "tname=targ.tagName;" "alert(\"You clicked on a \" + tname + \" element.\");" "}"; this->page()->mainFrame()->evaluateJavaScript(jstr); QWebPage *myPage = this->page(); QObjectList myChildrens = myPage->children(); foreach(QObject *child, myChildrens) qDebug()<<"\n Children:" << child->metaObject()->className()<<"\n\n"; qDebug()<<"\n\nFrame Children\n"; QWebFrame *myFrame = myPage->mainFrame(); myChildrens = myFrame->children(); foreach(QObject *child, myChildrens) qDebug()<<"\n Children:" << child->metaObject()->className()<<"\n\n"; #endif } void WTVWebView::keyPressEvent(QKeyEvent *event) { qDebug()<<"WTVWebView keypress event invoked \n"; switch (event->key()) { case Qt::Key_PageUp: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_Tab,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_PageDown: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_Backtab,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_Enter: qDebug()<<"WTVWebView:: Key_Enter Received \n"; this->page()->mainFrame()->evaluateJavaScript("submit"); default: QWebView::keyPressEvent(event); //qDebug()<<"WTVWebView Not Handling this Key \n"; } } #if 0 case Qt::Key_0: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_A,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_1: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_B,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_2: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_C,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_3: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_D,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_4: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_E,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_5: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_F,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_6: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_G,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_7: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_H,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; case Qt::Key_8: { QKeyEvent event(QEvent::KeyPress,(int) Qt::Key_I,Qt::NoModifier); QApplication::sendEvent(this,&event); } break; #endif