summaryrefslogtreecommitdiffstats
path: root/kjsembed/plugins/kfileitemloader.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kjsembed/plugins/kfileitemloader.cpp')
-rw-r--r--kjsembed/plugins/kfileitemloader.cpp223
1 files changed, 223 insertions, 0 deletions
diff --git a/kjsembed/plugins/kfileitemloader.cpp b/kjsembed/plugins/kfileitemloader.cpp
new file mode 100644
index 00000000..0972e20a
--- /dev/null
+++ b/kjsembed/plugins/kfileitemloader.cpp
@@ -0,0 +1,223 @@
+/***************************************************************************
+ * Copyright (C) 2004 by ian reinhart geiser *
+ * geiseri@kde.org *
+ * *
+ * 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. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU General Public License *
+ * along with this program; if not, write to the *
+ * Free Software Foundation, Inc., *
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
+ ***************************************************************************/
+#include "kfileitemloader.h"
+
+#include <kjsembed/jsopaqueproxy.h>
+#include <kjsembed/jsbinding.h>
+#include <kjsembed/jsfactory.h>
+#include <kjsembed/jsfactory_imp.h>
+#include <kjsembed/kjsembedpart.h>
+
+#include <kfileitem.h>
+#include <kdebug.h>
+
+namespace KJSEmbed {
+namespace Bindings {
+
+KFileItemLoader::KFileItemLoader(QObject *parent, const char *name, const QStringList &args)
+ : JSBindingPlugin(parent, name, args)
+{
+}
+
+
+KFileItemLoader::~KFileItemLoader()
+{
+}
+
+KJS::Object KFileItemLoader::createBinding(KJSEmbedPart *jspart, KJS::ExecState *exec, const KJS::List &args) const
+{
+ kdDebug() << "Loading a KFileItem object" << endl;
+ JSOpaqueProxy *prx = new JSOpaqueProxy( (void *) 0, "KFileItem" );
+
+ KJS::Object proxyObj(prx);
+ KFileItemImp::addBindings( exec, proxyObj );
+ return proxyObj;
+}
+
+} // Bindings
+} // KJSEmbed
+
+KJSEmbed::Bindings::KFileItemImp::KFileItemImp( KJS::ExecState * exec, int id )
+: JSProxyImp(exec), mid(id)
+{
+
+}
+
+KJSEmbed::Bindings::KFileItemImp::~ KFileItemImp( )
+{
+
+}
+
+void KJSEmbed::Bindings::KFileItemImp::addBindings( KJS::ExecState * exec, KJS::Object & object )
+{
+
+ JSOpaqueProxy *op = JSProxy::toOpaqueProxy( object.imp() );
+ if ( !op )
+ {
+ kdWarning() << "KFileItemImp::addBindings() failed, not a JSOpaqueProxy" << endl;
+ return;
+ }
+
+ if ( op->typeName() != "KFileItem" )
+ {
+ kdWarning() << "KFileItemImp::addBindings() failed, type is " << op->typeName() <<
+ endl;
+ return;
+ }
+
+ JSProxy::MethodTable methods[] = {
+ { Methodrefresh, "refresh"},
+ { MethodrefreshMimeType, "refreshMimeType"},
+ { Methodurl, "url"},
+ { MethodsetUrl, "setUrl"},
+ { MethodsetName, "setName"},
+ { MethodpermissionsString, "permissionsString"},
+ { Methoduser, "user"},
+ { Methodgroup, "group"},
+ { MethodisLink, "isLink"},
+ { MethodisDir, "isDir"},
+ { MethodisFile, "isFile"},
+ { MethodisReadable, "isReadable"},
+ { MethodlinkDest, "linkDest"},
+ { MethodtimeString, "timeString"},
+ { MethodisLocalFile, "isLocalFile"},
+ { Methodtext, "text"},
+ { Methodname, "name"},
+ { MethodmimeType, "mimeType"},
+ { MethodisMimeTypeKnown, "isMimeTypeKnown"},
+ { MethodmimeComment, "mimeComment"},
+ { MethodiconName, "iconName"},
+ { Methodpixmap, "pixmap"},
+ { Methodoverlays, "overlays"},
+ { MethodgetStatusBarInfo, "getStatusBarInfo"},
+ { MethodgetToolTipText, "getToolTipText"},
+ { Methodrun, "run"},
+ { 0, 0 }
+ };
+
+ int idx = 0;
+ do {
+ KFileItemImp *meth = new KFileItemImp( exec, methods[idx].id );
+ object.put( exec , methods[idx].name, KJS::Object(meth) );
+ ++idx;
+ } while( methods[idx].id );
+
+}
+
+KJS::Value KJSEmbed::Bindings::KFileItemImp::call( KJS::ExecState * exec, KJS::Object & self, const KJS::List & args )
+{
+ kdDebug() << "KFileItemImp::call() " << mid << endl;
+ JSOpaqueProxy *op = JSProxy::toOpaqueProxy( self.imp() );
+ if ( !op ) {
+ kdWarning() << "KFileItemImp::call() failed, not a JSOpaqueProxy" << endl;
+ return KJS::Value();
+ }
+
+ if ( op->typeName() != "KFileItem" ) {
+ kdWarning() << "KFileItemImp::call() failed, type is " << op->typeName() << endl;
+ return KJS::Value();
+ }
+
+ KFileItem *obj = op->toNative<KFileItem >();
+
+ KJS::Value retValue = KJS::Value();
+ switch ( mid ) {
+ case Methodrefresh:
+ obj->refresh();
+ break;
+ case MethodrefreshMimeType:
+ obj->refreshMimeType();
+ break;
+ case Methodurl:
+ {
+ QString url = obj->url().url();
+ retValue = KJS::String(url);
+ break;
+ }
+ case MethodsetUrl:
+ {
+ QString url = extractQString(exec, args, 0);
+ obj->setURL(url);
+ break;
+ }
+ case MethodsetName:
+ case MethodpermissionsString:
+ case Methoduser:
+ case Methodgroup:
+ case MethodisLink:
+ case MethodisDir:
+ case MethodisFile:
+ case MethodisReadable:
+ case MethodlinkDest:
+ case MethodtimeString:
+ case MethodisLocalFile:
+ case Methodtext:
+ {
+ retValue = convertToValue(exec, obj->text() );
+ break;
+ }
+ case Methodname:
+ case MethodmimeType:
+ case MethodisMimeTypeKnown:
+ case MethodmimeComment:
+ case MethodiconName:
+ {
+ retValue = convertToValue( exec, obj->iconName() );
+ break;
+ }
+ case Methodpixmap:
+ {
+ int size = extractInt(exec, args, 0);
+ int state = extractInt(exec, args, 1);
+ retValue = convertToValue(exec, obj->pixmap(size, state));
+ break;
+ }
+ case Methodoverlays:
+ {
+ retValue = convertToValue(exec, obj->overlays());
+ break;
+ }
+ case MethodgetStatusBarInfo:
+ {
+ retValue = KJS::String( obj->getStatusBarInfo() );
+ break;
+ }
+ case MethodgetToolTipText:
+ {
+ int maxcount = extractInt(exec, args, 0);
+ retValue = KJS::String(obj->getToolTipText(maxcount));
+ break;
+ }
+ case Methodrun:
+ obj->run();
+ break;
+ default:
+ kdWarning() << "KFileItemImp has no method " << mid << endl;
+ break;
+ }
+
+ op->setValue((void*) obj, "KFileItem");
+ return retValue;
+
+}
+
+#include <kgenericfactory.h>
+typedef KGenericFactory<KJSEmbed::Bindings::KFileItemLoader> KFileItemLoaderFactory;
+K_EXPORT_COMPONENT_FACTORY( libfileitemplugin, KFileItemLoaderFactory( "KFileItemLoader" ) )