/***************************************************************************
                          KDEJavaSlot.h  -  description
                             -------------------
    begin                : Tue Oct 31 2000
    copyright            : (C) 2000-2001 by Richard Dale
    email                : Richard_Dale@tipitina.demon.co.uk
 ***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef _KDEJAVASLOT_H_
#define _KDEJAVASLOT_H_

#include <jni.h>
#include <qobject.h>
#include <qtjava/JavaSlot.h>

#include <dom/dom_node.h>
#include <kxmlguiclient.h>
#include <kspell.h>
#include <kurlrequester.h>
#include <ktoolbar.h>
#include <kaction.h>
#include <kcompletion.h>
#include <kdockwidget.h>
#include <kdualcolorbtn.h>
#include <kfileview.h>
#include <kglobalsettings.h>
#include <klistview.h>
#include <kprocio.h>
#include <kprocess.h>
#include <kparts/part.h>
#include <kparts/browserextension.h>
#include <kio/slave.h>

class KDEJavaSlotFactory;

class KDEJavaSlot: public JavaSlot
{
    Q_OBJECT
public:
    KDEJavaSlot(JNIEnv * env, jobject receiver, jstring slot);
    virtual ~KDEJavaSlot();

	/** Converts a Java type signature for a signal to the corresponding C++ Qt type signature */
	virtual const char * javaToQtSignalType(const char * signalName, const char * javaTypeSignature, QMetaObject * smeta);
	
	/** Converts a Java type signature for a slot to the corresponding C++ Qt type signature */
	virtual const char * javaToQtSlotType(const char * javaTypeSignature, const char * signalString);

public slots:
	void invoke(KAction* arg1);
	void invoke(KAction* arg1,bool arg2);
	void invoke(KCompletionBase::KeyBindingType arg1);
	void invoke(KDockWidget* arg1);
	void invoke(KDockWidget*arg1,KDockWidget*arg2);
	void invoke(KDockWidget*arg1,KDockWidget::DockPosition arg2);
	void invoke(KDualColorButton::DualColor arg1);
	void invoke(KFileItem* arg1);
	void invoke(KGlobalSettings::Completion arg1);
	void invoke(KListView*arg1,QDropEvent*arg2,QListViewItem*arg3);
	void invoke(KListView*arg1,QDropEvent*arg2,QListViewItem*arg3,QListViewItem*arg4);
	void invoke(KListView*arg1,QListViewItem*arg2);
	void invoke(KListView*arg1,QListViewItem*arg2,const QPoint&arg3);
	void invoke(const KURL& arg1);
	void invoke(const KURL& arg1,const KParts::URLArgs& arg2);
	void invoke(const KURL& arg1,const KURL& arg2);
	void invoke(const KURL& arg1,const QPixmap& arg2);
	void invoke(const KURL::List& arg1);
	void invoke(const QPoint& arg1,const KFileItemList& arg2);
	void invoke(KParts::Part* arg1);
	void invoke(KProcIO* arg1);
	void invoke(KProcess* arg1);
	void invoke(KSpell* arg1);
	void invoke(KURLRequester* arg1);
	void invoke(KXMLGUIClient* arg1);
	void invoke(KXMLGUIClient* arg1,const QPoint& arg2,const KFileItemList& arg3);
	void invoke(const DOM::Node& arg1);
	void invoke(KIO::Job* arg1);
	void invoke(KIO::Job* arg1,QByteArray& arg2);
	void invoke(KIO::Job* arg1,const KURL& arg2);
	void invoke(KIO::Job* arg1,const KURL& arg2,const KURL& arg3);
	void invoke(KIO::Job* arg1,const KURL& arg2,const KURL& arg3,bool arg4,bool arg5);
	void invoke(KIO::Job* arg1,const KURL& arg2,const QString& arg3,const KURL& arg4);
	void invoke(KIO::Job* arg1,const QByteArray& arg2);
	void invoke(KIO::Job* arg1,const QString& arg2);
	void invoke(KIO::Job* arg1,const QString& arg2,const KURL& arg3);
	void invoke(KIO::Job* arg1,unsigned long arg2);
	void invoke(KIO::Slave* arg1);
	void invoke(KIO::Slave*,int arg2,const QString& arg3);
};

class KDEJavaSlotFactory : public JavaSlotFactory {
public:
	KDEJavaSlotFactory();
	virtual ~KDEJavaSlotFactory() {};
	virtual JavaSlot *	createJavaSlot(JNIEnv * env, jobject receiver, jstring slot);
};

#endif




