# include <QDomDocument>
# include "core/UBApplication.h"
# include "board/UBBoardController.h"
# include "globals/UBGlobals.h"
# include "UBLibWebView.h"
# include "core/memcheck.h"
UBLibWebView : : UBLibWebView ( QWidget * parent , const char * name ) : QWidget ( parent )
, mpView ( NULL )
, mpWebSettings ( NULL )
, mpLayout ( NULL )
, mpSankoreAPI ( NULL )
{
setObjectName ( name ) ;
SET_STYLE_SHEET ( ) ;
mpLayout = new QVBoxLayout ( ) ;
setLayout ( mpLayout ) ;
mpView = new QWebView ( this ) ;
mpView - > setObjectName ( " SearchEngineView " ) ;
mpSankoreAPI = new UBWidgetUniboardAPI ( UBApplication : : boardController - > activeScene ( ) ) ;
connect ( mpView - > page ( ) - > mainFrame ( ) , SIGNAL ( javaScriptWindowObjectCleared ( ) ) , this , SLOT ( javaScriptWindowObjectCleared ( ) ) ) ;
mpLayout - > addWidget ( mpView ) ;
}
UBLibWebView : : ~ UBLibWebView ( )
{
if ( NULL ! = mpSankoreAPI ) {
delete mpSankoreAPI ;
mpSankoreAPI = NULL ;
}
if ( NULL ! = mpView ) {
delete mpView ;
mpView = NULL ;
}
if ( NULL ! = mpLayout ) {
delete mpLayout ;
mpLayout = NULL ;
}
}
void UBLibWebView : : setElement ( UBLibElement * elem )
{
if ( NULL ! = elem )
{
QString qsWidgetName ;
QString path = elem - > path ( ) . toLocalFile ( ) ;
QString qsConfigPath = QString ( " %0/config.xml " ) . arg ( path ) ;
if ( QFile : : exists ( qsConfigPath ) )
{
QFile f ( qsConfigPath ) ;
if ( f . open ( QIODevice : : ReadOnly ) )
{
QDomDocument domDoc ;
domDoc . setContent ( QString ( f . readAll ( ) ) ) ;
QDomElement root = domDoc . documentElement ( ) ;
QDomNode node = root . firstChild ( ) ;
while ( ! node . isNull ( ) )
{
if ( node . toElement ( ) . tagName ( ) = = " content " )
{
QDomAttr srcAttr = node . toElement ( ) . attributeNode ( " src " ) ;
qsWidgetName = srcAttr . value ( ) ;
break ;
}
node = node . nextSibling ( ) ;
}
f . close ( ) ;
}
}
mpView - > load ( QUrl : : fromLocalFile ( QString ( " %0/%1 " ) . arg ( path ) . arg ( qsWidgetName ) ) ) ;
}
}
void UBLibWebView : : javaScriptWindowObjectCleared ( )
{
mpView - > page ( ) - > mainFrame ( ) - > addToJavaScriptWindowObject ( " sankore " , mpSankoreAPI ) ;
}