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.
108 lines
3.1 KiB
108 lines
3.1 KiB
%{CPP_TEMPLATE}
|
|
|
|
#include "%{APPNAMELC}view.h"
|
|
|
|
#include <tqpainter.h>
|
|
#include <tqlayout.h>
|
|
|
|
#include <kurl.h>
|
|
|
|
#include <ktrader.h>
|
|
#include <klibloader.h>
|
|
#include <kmessagebox.h>
|
|
#include <krun.h>
|
|
#include <klocale.h>
|
|
|
|
%{APPNAME}View::%{APPNAME}View(TQWidget *parent)
|
|
: TQWidget(parent),
|
|
DCOPObject("%{APPNAME}Iface")
|
|
{
|
|
// setup our layout manager to automatically add our widgets
|
|
TQHBoxLayout *top_layout = new TQHBoxLayout(this);
|
|
top_layout->setAutoAdd(true);
|
|
|
|
// we want to look for all components that satisfy our needs. the
|
|
// trader will actually search through *all* registered KDE
|
|
// applications and components -- not just KParts. So we have to
|
|
// specify two things: a service type and a constraint
|
|
//
|
|
// the service type is like a mime type. we say that we want all
|
|
// applications and components that can handle HTML -- 'text/html'
|
|
//
|
|
// however, by itself, this will return such things as Netscape..
|
|
// not what we wanted. so we constrain it by saying that the
|
|
// string 'KParts/ReadOnlyPart' must be found in the ServiceTypes
|
|
// field. with this, only components of the type we want will be
|
|
// returned.
|
|
KTrader::OfferList offers = KTrader::self()->query("text/html", "'KParts/ReadOnlyPart' in ServiceTypes");
|
|
|
|
KLibFactory *factory = 0;
|
|
// in theory, we only care about the first one.. but let's try all
|
|
// offers just in case the first can't be loaded for some reason
|
|
KTrader::OfferList::Iterator it(offers.begin());
|
|
for( ; it != offers.end(); ++it)
|
|
{
|
|
KService::Ptr ptr = (*it);
|
|
|
|
// we now know that our offer can handle HTML and is a part.
|
|
// since it is a part, it must also have a library... let's try to
|
|
// load that now
|
|
factory = KLibLoader::self()->factory( ptr->library() );
|
|
if (factory)
|
|
{
|
|
m_html = static_cast<KParts::ReadOnlyPart *>(factory->create(this, ptr->name(), "KParts::ReadOnlyPart"));
|
|
break;
|
|
}
|
|
}
|
|
|
|
// if our factory is invalid, then we never found our component
|
|
// and we might as well just exit now
|
|
if (!factory)
|
|
{
|
|
KMessageBox::error(this, i18n("Could not find a suitable HTML component"));
|
|
return;
|
|
}
|
|
|
|
connect(m_html, TQT_SIGNAL(setWindowCaption(const TQString&)),
|
|
this, TQT_SLOT(slotSetTitle(const TQString&)));
|
|
connect(m_html, TQT_SIGNAL(setStatusBarText(const TQString&)),
|
|
this, TQT_SLOT(slotOnURL(const TQString&)));
|
|
|
|
}
|
|
|
|
%{APPNAME}View::~%{APPNAME}View()
|
|
{
|
|
}
|
|
|
|
void %{APPNAME}View::print(TQPainter *p, int height, int width)
|
|
{
|
|
// do the actual printing, here
|
|
// p->drawText(etc..)
|
|
}
|
|
|
|
TQString %{APPNAME}View::currentURL()
|
|
{
|
|
return m_html->url().url();
|
|
}
|
|
|
|
void %{APPNAME}View::openURL(TQString url)
|
|
{
|
|
openURL(KURL(url));
|
|
}
|
|
|
|
void %{APPNAME}View::openURL(const KURL& url)
|
|
{
|
|
m_html->openURL(url);
|
|
}
|
|
|
|
void %{APPNAME}View::slotOnURL(const TQString& url)
|
|
{
|
|
emit signalChangeStatusbar(url);
|
|
}
|
|
|
|
void %{APPNAME}View::slotSetTitle(const TQString& title)
|
|
{
|
|
emit signalChangeCaption(title);
|
|
}
|
|
#include "%{APPNAMELC}view.moc"
|