rendered paste body#include "wtvwebview.h"
#include <QCompleter>
#include <QAbstractItemView>
#include <QApplication>
#include <QWebFrame>
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 :: "<<str<<"\n";
qDebug()<<"\n\nSelected Page text is :: "<<this->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