All pastes #1549003 Raw Edit

wtvwebview.cpp

public text v1 · immutable
#1549003 ·published 2009-08-31 08:26 UTC
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