You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdebindings/xparts/src/tde/xparthost_kpart.cpp

151 lines
3.7 KiB

#include "xparthost_kpart.h"
#include "kbrowsersignals.h"
#include "xpart_stub.h"
#include <dcopclient.h>
#include <tdeapplication.h>
#include <assert.h>
#include <qxembed.h>
#include <tqdom.h>
#include <tdeaction.h>
#include <kdebug.h>
XPartHost_KPart::XPartHost_KPart( TQWidget *parentWidget, const char *widgetName,
TQObject *parent, const char *name )
: KParts::ReadOnlyPart( parent, name ),
XPartHost("parthost")
{
m_stub = 0;
be = 0;
embed = new QXEmbed(parentWidget, widgetName);
setWidget(embed);
}
XPartHost_KPart::~XPartHost_KPart()
{
delete m_stub;
}
DCOPRef XPartHost_KPart::part()
{
return m_part;
}
DCOPRef XPartHost_KPart::registerXPart( const DCOPRef &part )
{
m_part = part;
assert( m_stub == 0 );
m_stub = new XPart_stub( part.app(), part.object() );
m_stub->show();
kdDebug() << "embedding window " << m_stub->windowId() << endl;
embed->embed( static_cast<WId>( m_stub->windowId() ) );
embed->show();
DCOPRef ref = m_stub->queryExtension("browserextension");
if( !ref.isNull() ) {
tqDebug(" found browser extension ");
be = new KBrowserSignals( this, ref );
}
return DCOPRef( kapp->dcopClient()->appId(), objId() );
}
void XPartHost_KPart::createActions( const TQCString &xmlActions )
{
tqDebug("--> createActions");
// creates a set of actions and adds them to the actionCollection
TQDomDocument d;
d.setContent( xmlActions );
TQDomElement docElem = d.documentElement();
kdDebug() << "docElement is " << docElem.tagName() << endl;
TQDomNode n = docElem.firstChild();
while( !n.isNull() ) {
TQDomElement e = n.toElement();
if( !e.isNull() ) {
if ( e.tagName() == "Action") {
TQString name = e.attribute("name");
TQString type = e.attribute("type");
if(type.isEmpty())
new TDEAction( name, 0, this, TQ_SLOT( actionActivated() ), actionCollection(), name.latin1() );
else if( type == "toggle" )
new TDEToggleAction( name, 0, this, TQ_SLOT( actionActivated() ), actionCollection(), name.latin1() );
kdDebug() << "action=" << name << " type=" << type << endl;
} else if ( e.tagName() == "XMLFile" ) {
TQString location = e.attribute("location");
setXMLFile(location);
}
}
n = n.nextSibling();
}
emit actionsInitialized();
}
void XPartHost_KPart::setWindowCaption( const TQString &caption )
{
emit KParts::ReadOnlyPart::setWindowCaption( caption );
}
void XPartHost_KPart::setStatusBarText( const TQString &text )
{
emit KParts::ReadOnlyPart::setStatusBarText( text );
}
void XPartHost_KPart::started()
{
emit KParts::ReadOnlyPart::started( 0 );
}
void XPartHost_KPart::completed()
{
emit KParts::ReadOnlyPart::completed();
}
void XPartHost_KPart::canceled( const TQString &errMsg )
{
emit KParts::ReadOnlyPart::canceled( errMsg );
}
bool XPartHost_KPart::openURL( const KURL &url )
{
tqDebug("XPartHost_KPart::openUrl()");
return m_stub->openURL( url.url().latin1() );
}
bool XPartHost_KPart::closeURL()
{
return m_stub->closeURL();
}
void XPartHost_KPart::actionActivated()
{
const TQObject *o = sender();
if( !o->inherits("TDEAction") ) return;
const TDEAction *action = static_cast<const TDEAction *>(o);
TQString name = action->text();
int state = 0;
if(action->inherits("TDEToggleAction")) {
const TDEToggleAction *t = static_cast<const TDEToggleAction *>(action);
state = t->isChecked();
}
m_stub->activateAction(name, state);
}
#include "xparthost_kpart.moc"