• Skip to content
  • Skip to link menu
  • KDE API Reference
  • kdelibs-4.14.38 API Reference
  • KDE Home
  • Contact Us
 

KHTML

  • khtml
  • java
kjavaappletviewer.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 *
3 * Copyright (C) 2003 Koos Vriezen <koos.vriezen@xs4all.nl>
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
14 *
15 * You should have received a copy of the GNU Library General Public License
16 * along with this library; see the file COPYING.LIB. If not, write to
17 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18 * Boston, MA 02110-1301, USA.
19 */
20
21#include "kjavaappletviewer.h"
22
23#include "kjavaappletwidget.h"
24#include "kjavaappletserver.h"
25
26#include <stdio.h>
27
28#ifdef KDE_USE_FINAL
29#undef Always
30#endif
31#include <QtCore/QDir>
32#include <QtCore/QPair>
33#include <QtCore/QTimer>
34#include <QtCore/QPointer>
35#include <QtGui/QLabel>
36#include <QtGui/QTableWidget>
37#include <QtDBus/QtDBus>
38
39#include <kapplication.h>
40#include <kauthorized.h>
41#include <kaboutdata.h>
42#include <klocale.h>
43#include <kstatusbar.h>
44#include <kiconloader.h>
45#include <kdebug.h>
46#include <kconfig.h>
47#include <kio/authinfo.h>
48
49
50K_EXPORT_PLUGIN( KJavaAppletViewerFactory )
51
52KComponentData *KJavaAppletViewerFactory::s_componentData = 0;
53KIconLoader *KJavaAppletViewerFactory::s_iconLoader = 0;
54
55KJavaAppletViewerFactory::KJavaAppletViewerFactory () {
56 s_componentData = new KComponentData("kjava");
57 s_iconLoader = new KIconLoader(s_componentData->componentName(), s_componentData->dirs());
58}
59
60KJavaAppletViewerFactory::~KJavaAppletViewerFactory () {
61 delete s_iconLoader;
62 delete s_componentData;
63}
64
65QObject *KJavaAppletViewerFactory::create(const char *, QWidget *wparent, QObject *parent,
66 const QVariantList & args, const QString &) {
67 QStringList argsStrings;
68 for (int i = 0; i < args.size(); ++i)
69 argsStrings.append(args[i].toString());
70 return new KJavaAppletViewer (wparent, parent, argsStrings);
71}
72
73//-----------------------------------------------------------------------------
74
75class KJavaServerMaintainer;
76
77class KJavaServerMaintainer {
78public:
79 KJavaServerMaintainer () { }
80 ~KJavaServerMaintainer ();
81
82 KJavaAppletContext * getContext (QObject*, const QString &);
83 void releaseContext (QObject*, const QString &);
84 void setServer (KJavaAppletServer * s);
85 QPointer <KJavaAppletServer> server;
86private:
87 typedef QMap <QPair <QObject*, QString>, QPair <KJavaAppletContext*, int> >
88 ContextMap;
89 ContextMap m_contextmap;
90};
91K_GLOBAL_STATIC(KJavaServerMaintainer, serverMaintainer)
92
93KJavaServerMaintainer::~KJavaServerMaintainer () {
94 delete server;
95}
96
97KJavaAppletContext * KJavaServerMaintainer::getContext (QObject * w, const QString & doc) {
98 QPair<QObject*,QString> key = qMakePair (w, doc);
99 ContextMap::iterator it = m_contextmap.find (key);
100 if (it != m_contextmap.end ()) {
101 ++((*it).second);
102 return (*it).first;
103 }
104 KJavaAppletContext* const context = new KJavaAppletContext ();
105 m_contextmap.insert (key, qMakePair(context, 1));
106 return context;
107}
108
109void KJavaServerMaintainer::releaseContext (QObject * w, const QString & doc) {
110 ContextMap::iterator it = m_contextmap.find (qMakePair (w, doc));
111 if (it != m_contextmap.end () && --(*it).second <= 0) {
112 kDebug(6100) << "KJavaServerMaintainer::releaseContext";
113 (*it).first->deleteLater ();
114 m_contextmap.erase (it);
115 }
116}
117
118inline void KJavaServerMaintainer::setServer (KJavaAppletServer * s) {
119 if (!server)
120 server = s;
121}
122
123//-----------------------------------------------------------------------------
124
125AppletParameterDialog::AppletParameterDialog (KJavaAppletWidget * parent)
126 : KDialog(parent), m_appletWidget (parent)
127{
128 setObjectName( "paramdialog" );
129 setCaption( i18n ("Applet Parameters") );
130 setButtons( KDialog::Close );
131 setDefaultButton( KDialog::Close );
132 setModal( true );
133
134 KJavaApplet* const applet = parent->applet ();
135 table = new QTableWidget (30, 2, this);
136 table->setMinimumSize (QSize (600, 400));
137 table->setColumnWidth (0, 200);
138 table->setColumnWidth (1, 340);
139 QTableWidgetItem* const header1 = new QTableWidgetItem(i18n ("Parameter"));
140 QTableWidgetItem* const header2 = new QTableWidgetItem(i18n ("Value"));
141 table->setHorizontalHeaderItem(1, header1);
142 table->setHorizontalHeaderItem(2, header2);
143 QTableWidgetItem * tit = new QTableWidgetItem(i18n("Class"));
144 tit->setFlags( tit->flags()^Qt::ItemIsEditable );
145 table->setItem (0, 0, tit);
146 tit = new QTableWidgetItem(applet->appletClass());
147 tit->setFlags( tit->flags()|Qt::ItemIsEditable );
148 table->setItem (0, 1, tit);
149 tit = new QTableWidgetItem (i18n ("Base URL"));
150 tit->setFlags( tit->flags()^Qt::ItemIsEditable );
151 table->setItem (1, 0, tit);
152 tit = new QTableWidgetItem(applet->baseURL());
153 tit->setFlags( tit->flags()|Qt::ItemIsEditable );
154 table->setItem (1, 1, tit);
155 tit = new QTableWidgetItem(i18n ("Archives"));
156 tit->setFlags( tit->flags()^Qt::ItemIsEditable );
157 table->setItem (2, 0, tit);
158 tit = new QTableWidgetItem(applet->archives());
159 tit->setFlags( tit->flags()|Qt::ItemIsEditable );
160 table->setItem (2, 1, tit);
161 QMap<QString,QString>::const_iterator it = applet->getParams().constBegin();
162 const QMap<QString,QString>::const_iterator itEnd = applet->getParams().constEnd();
163 for (int count = 2; it != itEnd; ++it) {
164 tit = new QTableWidgetItem (it.key ());
165 tit->setFlags( tit->flags()|Qt::ItemIsEditable );
166 table->setItem (++count, 0, tit);
167 tit = new QTableWidgetItem(it.value());
168 tit->setFlags( tit->flags()|Qt::ItemIsEditable );
169 table->setItem (count, 1, tit);
170 }
171 setMainWidget (table);
172 connect(this,SIGNAL(closeClicked()),this,SLOT(slotClose()));
173}
174
175void AppletParameterDialog::slotClose () {
176 table->setRangeSelected(QTableWidgetSelectionRange(0, 0, 0, 0), true);
177 KJavaApplet* const applet = m_appletWidget->applet ();
178 applet->setAppletClass (table->item (0, 1)->text ());
179 applet->setBaseURL (table->item (1, 1)->text ());
180 applet->setArchives (table->item (2, 1)->text ());
181 const int lim = table->rowCount();
182 for (int i = 3; i < lim; ++i) {
183 if (table->item (i, 0) && table->item (i, 1) && !table->item (i, 0)->text ().isEmpty ())
184 applet->setParameter (table->item (i, 0)->text (),
185 table->item (i, 1)->text ());
186 }
187 hide ();
188}
189//-----------------------------------------------------------------------------
190
191class CoverWidget : public QWidget {
192 KJavaAppletWidget * m_appletwidget;
193public:
194 CoverWidget (QWidget *);
195 ~CoverWidget () {}
196 KJavaAppletWidget * appletWidget () const;
197protected:
198 void resizeEvent (QResizeEvent * e);
199};
200
201inline CoverWidget::CoverWidget (QWidget * parent)
202 : QWidget (parent )
203{
204 setObjectName( "KJavaAppletViewer Widget");
205 m_appletwidget = new KJavaAppletWidget (this);
206 setFocusProxy (m_appletwidget);
207}
208
209inline KJavaAppletWidget * CoverWidget::appletWidget () const {
210 return m_appletwidget;
211}
212
213void CoverWidget::resizeEvent (QResizeEvent * e) {
214 m_appletwidget->resize (e->size().width(), e->size().height());
215}
216
217//-----------------------------------------------------------------------------
218
219class StatusBarIcon : public QLabel {
220public:
221 StatusBarIcon (QWidget * parent) : QLabel (parent) {
222 setPixmap ( KJavaAppletViewerFactory::iconLoader()->loadIcon("java", KIconLoader::Small) );
223 }
224protected:
225 void mousePressEvent (QMouseEvent *) {
226 serverMaintainer->server->showConsole ();
227 }
228};
229
230//-----------------------------------------------------------------------------
231
232KJavaAppletViewer::KJavaAppletViewer (QWidget * wparent,
233 QObject * parent, const QStringList & args)
234 : KParts::ReadOnlyPart (parent),
235 m_browserextension (new KJavaAppletViewerBrowserExtension (this)),
236 m_liveconnect (new KJavaAppletViewerLiveConnectExtension (this)),
237 m_statusbar (new KParts::StatusBarExtension (this)),
238 m_statusbar_icon (0L),
239 m_closed (true)
240{
241 m_view = new CoverWidget (wparent);
242 QString classname, classid, codebase, khtml_codebase, src_param;
243 QString appletname;
244 int width = -1;
245 int height = -1;
246 KJavaApplet* const applet = m_view->appletWidget()->applet ();
247 QStringList::const_iterator it = args.begin();
248 const QStringList::const_iterator itEnd = args.end();
249 for ( ; it != itEnd; ++it) {
250 const int equalPos = (*it).indexOf("=");
251 if (equalPos > 0) {
252 const QString name = (*it).left (equalPos).toUpper ();
253 QString value = (*it).right ((*it).length () - equalPos - 1);
254 if (value.at(0)=='\"')
255 value = value.right (value.length () - 1);
256 if (value.at (value.length () - 1) == '\"')
257 value.truncate (value.length () - 1);
258 kDebug(6100) << "name=" << name << " value=" << value;
259 if (!name.isEmpty()) {
260 const QString name_lower = name.toLower ();
261 if (name == "__KHTML__PLUGINBASEURL" ||
262 name == "BASEURL") {
263 baseurl = KUrl (KUrl (value), QString (".")).url ();
264 } else if (name == "__KHTML__CODEBASE")
265 khtml_codebase = value;
266 else if (name_lower == QLatin1String("codebase") ||
267 name_lower == QLatin1String("java_codebase")) {
268 if (!value.isEmpty ())
269 codebase = value;
270 } else if (name == "__KHTML__CLASSID")
271 //else if (name.toLower()==QLatin1String("classid"))
272 classid = value;
273 else if (name_lower == QLatin1String("code") ||
274 name_lower == QLatin1String("java_code"))
275 classname = value;
276 else if (name_lower == QLatin1String("src"))
277 src_param = value;
278 else if (name_lower == QLatin1String("archive") ||
279 name_lower == QLatin1String("java_archive") ||
280 name_lower.startsWith(QLatin1String("cache_archive")))
281 applet->setArchives (value);
282 else if (name_lower == QLatin1String("name"))
283 appletname = value;
284 else if (name_lower == QLatin1String("width"))
285 width = value.toInt();
286 else if (name_lower == QLatin1String("height"))
287 height = value.toInt();
288 if (!name.startsWith(QLatin1String("__KHTML__"))) {
289 applet->setParameter (name, value);
290 }
291 }
292 }
293 }
294 if (!classid.isEmpty ()) {
295 applet->setParameter ("CLSID", classid);
296 kDebug(6100) << "classid=" << classid << classid.startsWith("clsid:");
297 if (classid.startsWith(QLatin1String("clsid:")))
298 // codeBase contains the URL to the plugin page
299 khtml_codebase = baseurl;
300 else if (classname.isEmpty () && classid.startsWith(QLatin1String("java:")))
301 classname = classid.mid(5);
302 }
303 if (classname.isEmpty ())
304 classname = src_param;
305 else if (!src_param.isEmpty ())
306 applet->setParameter (QString ("SRC"), src_param);
307 if (codebase.isEmpty ())
308 codebase = khtml_codebase;
309 if (baseurl.isEmpty ()) {
310 // not embedded in khtml
311 QString pwd = QDir().absolutePath ();
312 if (!pwd.endsWith ( QString(QDir::separator ())))
313 pwd += QDir::separator ();
314 baseurl = KUrl (KUrl (pwd), codebase).url ();
315 }
316 if (width > 0 && height > 0) {
317 m_view->resize (width, height);
318 applet->setSize( QSize( width, height ) );
319 }
320 if (appletname.isEmpty())
321 appletname = classname;
322 applet->setAppletName (appletname);
323 applet->setBaseURL (baseurl);
324 // check codebase first
325 const KUrl kbaseURL( baseurl );
326 const KUrl newURL(kbaseURL, codebase);
327 if (KAuthorized::authorizeUrlAction("redirect", KUrl(baseurl), newURL))
328 applet->setCodeBase (newURL.url());
329 applet->setAppletClass (classname);
330 KJavaAppletContext* const cxt = serverMaintainer->getContext (parent, baseurl);
331 applet->setAppletContext (cxt);
332
333 KJavaAppletServer* const server = cxt->getServer ();
334
335 serverMaintainer->setServer (server);
336
337 if (!server->usingKIO ()) {
338 /* if this page needs authentication */
339 KIO::AuthInfo info;
340 info.url = baseurl;
341 info.verifyPath = true;
342 QByteArray params;
343 { QDataStream stream(&params, QIODevice::WriteOnly); stream << info; }
344
345 // make the call
346 QDBusInterface kpasswdserver("org.kde.kded", "/modules/kpasswdserver", "org.kde.KPasswdServer");
347 QDBusReply<QByteArray> reply = kpasswdserver.call ("checkAuthInfo", params, qlonglong(m_view->topLevelWidget()->winId()), qlonglong(kapp->userTimestamp()));
348
349 if (!reply.isValid()) {
350 kWarning() << "checkAuthInfo DBUS call failed: " << reply.error().message();
351 } else {
352 KIO::AuthInfo authResult;
353 QDataStream stream2(reply.value());
354 stream2 >> authResult;
355 applet->setUser (authResult.username);
356 applet->setPassword (authResult.password);
357 applet->setAuthName (authResult.realmValue);
358 }
359 }
360
361 /* install event filter for close events */
362 if (wparent)
363 wparent->topLevelWidget ()->installEventFilter (this);
364
365 setComponentData (KJavaAppletViewerFactory::componentData());
366 KParts::Part::setWidget (m_view);
367
368 connect (applet->getContext(), SIGNAL(appletLoaded()), this, SLOT(appletLoaded()));
369 connect (applet->getContext(), SIGNAL(showDocument(QString,QString)), m_browserextension, SLOT(showDocument(QString,QString)));
370 connect (applet->getContext(), SIGNAL(showStatus(QString)), this, SLOT(infoMessage(QString)));
371 connect (applet, SIGNAL(jsEvent(QStringList)), m_liveconnect, SLOT(jsEvent(QStringList)));
372}
373
374CoverWidget * KJavaAppletViewer::view () const
375{
376 return m_view;
377}
378
379
380bool KJavaAppletViewer::eventFilter (QObject *o, QEvent *e) {
381 if (m_liveconnect->jsSessions () > 0) {
382 switch (e->type()) {
383 case QEvent::Destroy:
384 case QEvent::Close:
385 case QEvent::Quit:
386 return true;
387 default:
388 break;
389 }
390 }
391 return KParts::ReadOnlyPart::eventFilter(o,e);
392}
393
394KJavaAppletViewer::~KJavaAppletViewer () {
395 m_view = 0L;
396 serverMaintainer->releaseContext (parent(), baseurl);
397 if (m_statusbar_icon) {
398 m_statusbar->removeStatusBarItem (m_statusbar_icon);
399 delete m_statusbar_icon;
400 }
401}
402
403bool KJavaAppletViewer::openUrl (const KUrl & url) {
404 if (!m_view) return false;
405 m_closed = false;
406 KJavaAppletWidget* const w = m_view->appletWidget ();
407 KJavaApplet* const applet = w->applet ();
408 if (applet->isCreated ())
409 applet->stop ();
410 if (applet->appletClass ().isEmpty ()) {
411 // preview without setting a class?
412 if (applet->baseURL ().isEmpty ()) {
413 applet->setAppletClass (url.fileName ());
414 applet->setBaseURL (url.upUrl ().url ());
415 } else
416 applet->setAppletClass (url.url ());
417 AppletParameterDialog (w).exec ();
418 applet->setSize (w->sizeHint());
419 }
420 if (!m_statusbar_icon) {
421 KStatusBar *sb = m_statusbar->statusBar();
422 if (sb) {
423 m_statusbar_icon = new StatusBarIcon (sb);
424 m_statusbar->addStatusBarItem (m_statusbar_icon, 0, false);
425 }
426 }
427 // delay showApplet if size is unknown and m_view not shown
428 if (applet->size().width() > 0 || m_view->isVisible())
429 w->showApplet ();
430 else
431 QTimer::singleShot (10, this, SLOT (delayedCreateTimeOut()));
432 if (!applet->failed ())
433 emit started (0L);
434 return url.isValid ();
435}
436
437bool KJavaAppletViewer::closeUrl () {
438 kDebug(6100) << "closeUrl";
439 m_closed = true;
440 KJavaApplet* const applet = m_view->appletWidget ()->applet ();
441 if (applet->isCreated ())
442 applet->stop ();
443 applet->getContext()->getServer()->endWaitForReturnData();
444 return true;
445}
446
447bool KJavaAppletViewer::appletAlive () const {
448 return !m_closed && m_view &&
449 m_view->appletWidget ()->applet () &&
450 m_view->appletWidget ()->applet ()->isAlive ();
451}
452
453bool KJavaAppletViewer::openFile () {
454 return false;
455}
456
457void KJavaAppletViewer::delayedCreateTimeOut () {
458 KJavaAppletWidget* const w = m_view->appletWidget ();
459 if (!w->applet ()->isCreated () && !m_closed)
460 w->showApplet ();
461}
462
463void KJavaAppletViewer::appletLoaded () {
464 if (!m_view) return;
465 KJavaApplet* const applet = m_view->appletWidget ()->applet ();
466 if (applet->isAlive() || applet->failed())
467 emit completed();
468}
469
470void KJavaAppletViewer::infoMessage (const QString & msg) {
471 m_browserextension->infoMessage(msg);
472}
473
474KAboutData* KJavaAppletViewer::createAboutData () {
475 return new KAboutData("KJavaAppletViewer", 0, ki18n("KDE Java Applet Plugin"), "1.0");
476}
477
478//---------------------------------------------------------------------
479
480KJavaAppletViewerBrowserExtension::KJavaAppletViewerBrowserExtension (KJavaAppletViewer * parent)
481 : KParts::BrowserExtension (parent )
482{
483 setObjectName( "KJavaAppletViewer Browser Extension" );
484}
485
486void KJavaAppletViewerBrowserExtension::urlChanged (const QString & url) {
487 emit setLocationBarUrl (url);
488}
489
490void KJavaAppletViewerBrowserExtension::setLoadingProgress (int percentage) {
491 emit loadingProgress (percentage);
492}
493
494void KJavaAppletViewerBrowserExtension::setBrowserArguments (const KParts::BrowserArguments & /*args*/) {
495}
496
497void KJavaAppletViewerBrowserExtension::saveState (QDataStream & stream) {
498 KJavaApplet* const applet = static_cast<KJavaAppletViewer*>(parent())->view()->appletWidget ()->applet ();
499 stream << applet->appletClass();
500 stream << applet->baseURL();
501 stream << applet->archives();
502 stream << applet->getParams().size ();
503 QMap<QString,QString>::const_iterator it = applet->getParams().constBegin();
504 const QMap<QString,QString>::const_iterator itEnd = applet->getParams().constEnd();
505 for ( ; it != itEnd; ++it) {
506 stream << it.key ();
507 stream << it.value ();
508 }
509}
510
511void KJavaAppletViewerBrowserExtension::restoreState (QDataStream & stream) {
512 KJavaAppletWidget* const w = static_cast<KJavaAppletViewer*>(parent())->view()->appletWidget();
513 KJavaApplet* const applet = w->applet ();
514 QString key, val;
515 int paramcount;
516 stream >> val;
517 applet->setAppletClass (val);
518 stream >> val;
519 applet->setBaseURL (val);
520 stream >> val;
521 applet->setArchives (val);
522 stream >> paramcount;
523 for (int i = 0; i < paramcount; ++i) {
524 stream >> key;
525 stream >> val;
526 applet->setParameter (key, val);
527 kDebug(6100) << "restoreState key:" << key << " val:" << val;
528 }
529 applet->setSize (w->sizeHint ());
530 if (w->isVisible())
531 w->showApplet ();
532}
533
534void KJavaAppletViewerBrowserExtension::showDocument (const QString & doc,
535 const QString & frame) {
536 const KUrl url (doc);
537 KParts::BrowserArguments browserArgs;
538 browserArgs.frameName = frame;
539 emit openUrlRequest(url, KParts::OpenUrlArguments(), browserArgs);
540}
541
542//-----------------------------------------------------------------------------
543
544KJavaAppletViewerLiveConnectExtension::KJavaAppletViewerLiveConnectExtension(KJavaAppletViewer * parent)
545 : KParts::LiveConnectExtension (parent ), m_viewer (parent)
546{
547 setObjectName( "KJavaAppletViewer LiveConnect Extension" );
548}
549
550bool KJavaAppletViewerLiveConnectExtension::get (
551 const unsigned long objid, const QString & name,
552 KParts::LiveConnectExtension::Type & type,
553 unsigned long & rid, QString & value)
554{
555 if (!m_viewer->appletAlive ())
556 return false;
557 QStringList args, ret_args;
558 KJavaApplet* const applet = m_viewer->view ()->appletWidget ()->applet ();
559 args.append (QString::number (applet->appletId ()));
560 args.append (QString::number ((int) objid));
561 args.append (name);
562 m_jssessions++;
563 const bool ret = applet->getContext()->getMember (args, ret_args);
564 m_jssessions--;
565 if (!ret || ret_args.count() != 3) return false;
566 bool ok;
567 int itype = ret_args[0].toInt (&ok);
568 if (!ok || itype < 0) return false;
569 type = (KParts::LiveConnectExtension::Type) itype;
570 rid = ret_args[1].toInt (&ok);
571 if (!ok) return false;
572 value = ret_args[2];
573 return true;
574}
575
576bool KJavaAppletViewerLiveConnectExtension::put(const unsigned long objid, const QString & name, const QString & value)
577{
578 if (!m_viewer->appletAlive ())
579 return false;
580 QStringList args;
581 KJavaApplet* const applet = m_viewer->view ()->appletWidget ()->applet ();
582 args.append (QString::number (applet->appletId ()));
583 args.append (QString::number ((int) objid));
584 args.append (name);
585 args.append (value);
586 ++m_jssessions;
587 const bool ret = applet->getContext()->putMember (args);
588 --m_jssessions;
589 return ret;
590}
591
592bool KJavaAppletViewerLiveConnectExtension::call( const unsigned long objid, const QString & func, const QStringList & fargs, KParts::LiveConnectExtension::Type & type, unsigned long & retobjid, QString & value )
593{
594 if (!m_viewer->appletAlive ())
595 return false;
596 KJavaApplet* const applet = m_viewer->view ()->appletWidget ()->applet ();
597 QStringList args, ret_args;
598 args.append (QString::number (applet->appletId ()));
599 args.append (QString::number ((int) objid));
600 args.append (func);
601 {
602 QStringList::const_iterator it = fargs.begin();
603 const QStringList::const_iterator itEnd = fargs.end();
604 for ( ; it != itEnd; ++it)
605 args.append(*it);
606 }
607
608 ++m_jssessions;
609 const bool ret = applet->getContext()->callMember (args, ret_args);
610 --m_jssessions;
611 if (!ret || ret_args.count () != 3) return false;
612 bool ok;
613 const int itype = ret_args[0].toInt (&ok);
614 if (!ok || itype < 0) return false;
615 type = (KParts::LiveConnectExtension::Type) itype;
616 retobjid = ret_args[1].toInt (&ok);
617 if (!ok) return false;
618 value = ret_args[2];
619 return true;
620}
621
622void KJavaAppletViewerLiveConnectExtension::unregister(const unsigned long objid)
623{
624 if (!m_viewer->view () || !m_viewer->view ())
625 return;
626 KJavaApplet* const applet = m_viewer->view ()->appletWidget ()->applet ();
627 if (!applet || objid == 0) {
628 // typically a gc after a function call on the applet,
629 // no need to send to the jvm
630 return;
631 }
632 QStringList args;
633 args.append (QString::number (applet->appletId ()));
634 args.append (QString::number ((int) objid));
635 applet->getContext()->derefObject (args);
636}
637
638void KJavaAppletViewerLiveConnectExtension::jsEvent (const QStringList & args) {
639 if (args.count () < 2 || !m_viewer->appletAlive ())
640 return;
641 bool ok;
642 QStringList::ConstIterator it = args.begin();
643 const QStringList::ConstIterator itEnd = args.end();
644 const unsigned long objid = (*it).toInt(&ok);
645 ++it;
646 const QString event = (*it);
647 ++it;
648 KParts::LiveConnectExtension::ArgList arglist;
649
650 for (; it != itEnd; ++it) {
651 // take a deep breath here
652 const QStringList::ConstIterator prev = it++;
653 arglist.push_back(KParts::LiveConnectExtension::ArgList::value_type((KParts::LiveConnectExtension::Type) (*prev).toInt(), (*it)));
654 }
655 emit partEvent (objid, event, arglist);
656}
657
658int KJavaAppletViewerLiveConnectExtension::m_jssessions = 0;
659
660//-----------------------------------------------------------------------------
661
662#include "kjavaappletviewer.moc"
authinfo.h
AppletParameterDialog
Definition: kjavaappletviewer.h:133
AppletParameterDialog::AppletParameterDialog
AppletParameterDialog(KJavaAppletWidget *parent)
Definition: kjavaappletviewer.cpp:125
AppletParameterDialog::slotClose
void slotClose()
Definition: kjavaappletviewer.cpp:175
KAboutData
KComponentData
KComponentData::componentName
QString componentName() const
KComponentData::dirs
KStandardDirs * dirs() const
KDialog
KDialog::setMainWidget
void setMainWidget(QWidget *widget)
KDialog::closeClicked
void closeClicked()
KDialog::setButtons
void setButtons(ButtonCodes buttonMask)
KDialog::Close
Close
KDialog::setDefaultButton
void setDefaultButton(ButtonCode id)
KDialog::setCaption
virtual void setCaption(const QString &caption)
KIO::AuthInfo
KIO::AuthInfo::realmValue
QString realmValue
KIO::AuthInfo::verifyPath
bool verifyPath
KIO::AuthInfo::url
KUrl url
KIO::AuthInfo::username
QString username
KIO::AuthInfo::password
QString password
KIconLoader
KIconLoader::Small
Small
KJavaAppletContext
Definition: kjavaappletcontext.h:46
KJavaAppletContext::putMember
bool putMember(QStringList &args)
Definition: kjavaappletcontext.cpp:259
KJavaAppletContext::getServer
KJavaAppletServer * getServer() const
Definition: kjavaappletcontext.h:107
KJavaAppletContext::callMember
bool callMember(QStringList &args, QStringList &ret_args)
Definition: kjavaappletcontext.cpp:264
KJavaAppletContext::derefObject
void derefObject(QStringList &args)
Definition: kjavaappletcontext.cpp:269
KJavaAppletContext::getMember
bool getMember(QStringList &args, QStringList &ret_args)
LiveConnect functions.
Definition: kjavaappletcontext.cpp:254
KJavaAppletServer
Definition: kjavaappletserver.h:43
KJavaAppletServer::usingKIO
bool usingKIO()
Definition: kjavaappletserver.cpp:777
KJavaAppletServer::endWaitForReturnData
void endWaitForReturnData()
Definition: kjavaappletserver.cpp:716
KJavaAppletViewerBrowserExtension
Definition: kjavaappletviewer.h:47
KJavaAppletViewerBrowserExtension::urlChanged
void urlChanged(const QString &url)
Definition: kjavaappletviewer.cpp:486
KJavaAppletViewerBrowserExtension::showDocument
void showDocument(const QString &doc, const QString &frame)
Definition: kjavaappletviewer.cpp:534
KJavaAppletViewerBrowserExtension::saveState
void saveState(QDataStream &stream)
Definition: kjavaappletviewer.cpp:497
KJavaAppletViewerBrowserExtension::KJavaAppletViewerBrowserExtension
KJavaAppletViewerBrowserExtension(KJavaAppletViewer *parent)
Definition: kjavaappletviewer.cpp:480
KJavaAppletViewerBrowserExtension::setBrowserArguments
void setBrowserArguments(const KParts::BrowserArguments &args)
Definition: kjavaappletviewer.cpp:494
KJavaAppletViewerBrowserExtension::restoreState
void restoreState(QDataStream &stream)
Definition: kjavaappletviewer.cpp:511
KJavaAppletViewerBrowserExtension::setLoadingProgress
void setLoadingProgress(int percentage)
Definition: kjavaappletviewer.cpp:490
KJavaAppletViewerFactory
Definition: kjavaappletviewer.h:119
KJavaAppletViewerFactory::create
virtual QObject * create(const char *, QWidget *wparent, QObject *parent, const QVariantList &args, const QString &)
Definition: kjavaappletviewer.cpp:65
KJavaAppletViewerFactory::KJavaAppletViewerFactory
KJavaAppletViewerFactory()
Definition: kjavaappletviewer.cpp:55
KJavaAppletViewerFactory::componentData
static const KComponentData & componentData()
Definition: kjavaappletviewer.h:126
KJavaAppletViewerFactory::iconLoader
static KIconLoader * iconLoader()
Definition: kjavaappletviewer.h:127
KJavaAppletViewerFactory::~KJavaAppletViewerFactory
virtual ~KJavaAppletViewerFactory()
Definition: kjavaappletviewer.cpp:60
KJavaAppletViewerLiveConnectExtension
Definition: kjavaappletviewer.h:61
KJavaAppletViewerLiveConnectExtension::get
bool get(const unsigned long objid, const QString &field, KParts::LiveConnectExtension::Type &type, unsigned long &retobjid, QString &value)
Definition: kjavaappletviewer.cpp:550
KJavaAppletViewerLiveConnectExtension::partEvent
void partEvent(const unsigned long objid, const QString &event, const KParts::LiveConnectExtension::ArgList &args)
KJavaAppletViewerLiveConnectExtension::put
bool put(const unsigned long, const QString &field, const QString &value)
Definition: kjavaappletviewer.cpp:576
KJavaAppletViewerLiveConnectExtension::unregister
void unregister(const unsigned long objid)
Definition: kjavaappletviewer.cpp:622
KJavaAppletViewerLiveConnectExtension::jsSessions
int jsSessions() const
Definition: kjavaappletviewer.h:71
KJavaAppletViewerLiveConnectExtension::call
bool call(const unsigned long, const QString &func, const QStringList &args, KParts::LiveConnectExtension::Type &type, unsigned long &retobjid, QString &value)
Definition: kjavaappletviewer.cpp:592
KJavaAppletViewerLiveConnectExtension::KJavaAppletViewerLiveConnectExtension
KJavaAppletViewerLiveConnectExtension(KJavaAppletViewer *parent)
Definition: kjavaappletviewer.cpp:544
KJavaAppletViewerLiveConnectExtension::jsEvent
void jsEvent(const QStringList &args)
Definition: kjavaappletviewer.cpp:638
KJavaAppletViewer
Definition: kjavaappletviewer.h:82
KJavaAppletViewer::closeUrl
virtual bool closeUrl()
Definition: kjavaappletviewer.cpp:437
KJavaAppletViewer::eventFilter
bool eventFilter(QObject *o, QEvent *e)
Definition: kjavaappletviewer.cpp:380
KJavaAppletViewer::infoMessage
void infoMessage(const QString &)
Definition: kjavaappletviewer.cpp:470
KJavaAppletViewer::appletLoaded
void appletLoaded()
Definition: kjavaappletviewer.cpp:463
KJavaAppletViewer::createAboutData
static KAboutData * createAboutData()
Definition: kjavaappletviewer.cpp:474
KJavaAppletViewer::view
CoverWidget * view() const
Definition: kjavaappletviewer.cpp:374
KJavaAppletViewer::openUrl
virtual bool openUrl(const KUrl &url)
Definition: kjavaappletviewer.cpp:403
KJavaAppletViewer::~KJavaAppletViewer
~KJavaAppletViewer()
Definition: kjavaappletviewer.cpp:394
KJavaAppletViewer::openFile
bool openFile()
Definition: kjavaappletviewer.cpp:453
KJavaAppletViewer::appletAlive
bool appletAlive() const
Definition: kjavaappletviewer.cpp:447
KJavaAppletViewer::KJavaAppletViewer
KJavaAppletViewer(QWidget *wparent, QObject *parent, const QStringList &args)
Definition: kjavaappletviewer.cpp:232
KJavaAppletWidget
Definition: kjavaappletwidget.h:83
KJavaAppletWidget::applet
KJavaApplet * applet()
Returns a pointer to the KJavaApplet.
Definition: kjavaappletwidget.h:95
KJavaAppletWidget::resize
void resize(int, int)
Definition: kjavaappletwidget.cpp:126
KJavaAppletWidget::sizeHint
QSize sizeHint() const
Definition: kjavaappletwidget.cpp:108
KJavaAppletWidget::showApplet
void showApplet()
Tells the AppletServer to create, initialize, and show the Applet.
Definition: kjavaappletwidget.cpp:70
KJavaApplet
Definition: kjavaapplet.h:51
KJavaApplet::setAuthName
void setAuthName(const QString &_auth)
Get/Set the auth name.
Definition: kjavaapplet.h:221
KJavaApplet::setAppletContext
void setAppletContext(KJavaAppletContext *_context)
Set the applet context'.
Definition: kjavaapplet.cpp:77
KJavaApplet::setBaseURL
void setBaseURL(const QString &base)
Set the URL of the document embedding the applet.
Definition: kjavaapplet.cpp:108
KJavaApplet::isCreated
bool isCreated()
Returns status of applet- whether it's been created or not.
Definition: kjavaapplet.cpp:72
KJavaApplet::failed
bool failed() const
Definition: kjavaapplet.cpp:283
KJavaApplet::stop
void stop()
Pause the applet.
Definition: kjavaapplet.cpp:197
KJavaApplet::setSize
void setSize(QSize size)
Set the size of the applet.
Definition: kjavaapplet.cpp:128
KJavaApplet::setAppletClass
void setAppletClass(const QString &clazzName)
Specify the name of the class file to run.
Definition: kjavaapplet.cpp:83
KJavaApplet::archives
QString & archives()
Get the list of Archives that should be searched for class files and other resources.
Definition: kjavaapplet.cpp:143
KJavaApplet::appletClass
QString & appletClass()
Get the name of the Class file the applet should run.
Definition: kjavaapplet.cpp:88
KJavaApplet::setCodeBase
void setCodeBase(const QString &codeBase)
Set the codebase of the applet classes.
Definition: kjavaapplet.cpp:118
KJavaApplet::setPassword
void setPassword(const QString &_password)
Get/Set the user password.
Definition: kjavaapplet.h:215
KJavaApplet::getContext
KJavaAppletContext * getContext() const
Definition: kjavaapplet.h:204
KJavaApplet::setAppletName
void setAppletName(const QString &name)
Set the name the applet should be called in its context.
Definition: kjavaapplet.cpp:160
KJavaApplet::setArchives
void setArchives(const QString &_archives)
Set the list of archives at the Applet's codebase to search in for class files and other resources.
Definition: kjavaapplet.cpp:138
KJavaApplet::appletId
int appletId()
Returns the unique ID this applet is given.
Definition: kjavaapplet.cpp:202
KJavaApplet::size
QSize size()
Get the size of the applet.
Definition: kjavaapplet.cpp:133
KJavaApplet::setParameter
void setParameter(const QString &name, const QString &value)
Specify a parameter to be passed to the applet.
Definition: kjavaapplet.cpp:98
KJavaApplet::baseURL
QString & baseURL()
get the Base URL of the document embedding the applet
Definition: kjavaapplet.cpp:113
KJavaApplet::setUser
void setUser(const QString &_user)
Get/Set the user name.
Definition: kjavaapplet.h:209
KJavaApplet::isAlive
bool isAlive() const
Definition: kjavaapplet.cpp:271
KJavaApplet::getParams
QMap< QString, QString > & getParams()
Get a reference to the Parameters and their values.
Definition: kjavaapplet.cpp:103
KParts::BrowserExtension::setLocationBarUrl
void setLocationBarUrl(const QString &url)
KParts::BrowserExtension::loadingProgress
void loadingProgress(int percent)
KParts::BrowserExtension::openUrlRequest
void openUrlRequest(const KUrl &url, const KParts::OpenUrlArguments &arguments=KParts::OpenUrlArguments(), const KParts::BrowserArguments &browserArguments=KParts::BrowserArguments())
KParts::BrowserExtension::infoMessage
void infoMessage(const QString &)
KParts::LiveConnectExtension::Type
Type
KParts::OpenUrlArguments
KParts::PartBase::setComponentData
virtual void setComponentData(const KComponentData &componentData)
KParts::Part::setWidget
virtual void setWidget(QWidget *widget)
KParts::ReadOnlyPart::started
void started(KIO::Job *)
KParts::ReadOnlyPart::url
KUrl url
KParts::ReadOnlyPart::completed
void completed()
KParts::StatusBarExtension::statusBar
KStatusBar * statusBar() const
KParts::StatusBarExtension::removeStatusBarItem
void removeStatusBarItem(QWidget *widget)
KParts::StatusBarExtension::addStatusBarItem
void addStatusBarItem(QWidget *widget, int stretch, bool permanent)
KStatusBar
KUrl
KUrl::url
QString url(AdjustPathOption trailing=LeaveTrailingSlash) const
KUrl::upUrl
KUrl upUrl() const
KUrl::fileName
QString fileName(const DirectoryOptions &options=IgnoreTrailingSlash) const
QEvent
QLabel
QList
QMap
QObject
QPair
QTableWidget
QWidget
K_GLOBAL_STATIC
#define K_GLOBAL_STATIC(TYPE, NAME)
kDebug
#define kDebug
kWarning
#define kWarning
kaboutdata.h
kapplication.h
kapp
#define kapp
kauthorized.h
kconfig.h
kdebug.h
kiconloader.h
kjavaappletserver.h
kjavaappletviewer.h
kjavaappletwidget.h
klocale.h
ki18n
KLocalizedString ki18n(const char *msg)
i18n
QString i18n(const char *text)
K_EXPORT_PLUGIN
K_EXPORT_PLUGIN(KMultiPartFactory(kmultipartAboutData())) class KLineParser
Definition: kmultipart.cpp:50
kstatusbar.h
KAuthorized::authorizeUrlAction
bool authorizeUrlAction(const QString &action, const KUrl &baseUrl, const KUrl &destUrl)
KParts
name
const char * name(StandardAction id)
ok
KGuiItem ok()
KParts::BrowserArguments
KParts::BrowserArguments::frameName
QString frameName
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Mon Feb 20 2023 00:00:00 by doxygen 1.9.6 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

KHTML

Skip menu "KHTML"
  • Main Page
  • Namespace List
  • Namespace Members
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members
  • Related Pages

kdelibs-4.14.38 API Reference

Skip menu "kdelibs-4.14.38 API Reference"
  • DNSSD
  • Interfaces
  •   KHexEdit
  •   KMediaPlayer
  •   KSpeech
  •   KTextEditor
  • kconf_update
  • KDE3Support
  •   KUnitTest
  • KDECore
  • KDED
  • KDEsu
  • KDEUI
  • KDEWebKit
  • KDocTools
  • KFile
  • KHTML
  • KImgIO
  • KInit
  • kio
  • KIOSlave
  • KJS
  •   KJS-API
  •   WTF
  • kjsembed
  • KNewStuff
  • KParts
  • KPty
  • Kross
  • KUnitConversion
  • KUtils
  • Nepomuk
  • Plasma
  • Solid
  • Sonnet
  • ThreadWeaver
Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal