/* * Copyright (c) 2009 Aaron J. Seigo * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU Library General Public License version 2 as * published by the Free Software Foundation * * 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 Library 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 #include #include #include #include "../backportglobal.h" Q_DECLARE_METATYPE(QIcon) Q_DECLARE_METATYPE(QIcon*) Q_DECLARE_METATYPE(KIcon) Q_DECLARE_METATYPE(KIcon*) static QScriptValue ctor(QScriptContext *ctx, QScriptEngine *eng) { if (ctx->argumentCount() > 0) { QScriptValue v = ctx->argument(0); if (v.isString()) { QIcon icon = KIcon(v.toString()); return qScriptValueFromValue(eng, icon); } else if (v.isVariant()) { QVariant variant = v.toVariant(); QPixmap p = variant.value(); if (!p.isNull()) { return qScriptValueFromValue(eng, QIcon(p)); } } } return qScriptValueFromValue(eng, QIcon()); } static QScriptValue addPixmap(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QIcon, addPixmap); if (ctx->argumentCount() > 0) { QScriptValue arg = ctx->argument(0); if (arg.isVariant()) { QVariant variant = arg.toVariant(); QPixmap p = variant.value(); if (!p.isNull()) { self->addPixmap(p); } } } return eng->undefinedValue(); } static QScriptValue addFile(QScriptContext *ctx, QScriptEngine *eng) { DECLARE_SELF(QIcon, addFile); if (ctx->argumentCount() > 0) { QScriptValue arg = ctx->argument(0); if (arg.isString()) { self->addFile(arg.toString()); } } return eng->undefinedValue(); } static QScriptValue isNull(QScriptContext *ctx, QScriptEngine *eng) { Q_UNUSED(eng) DECLARE_SELF(QIcon, isNull); return self->isNull(); } QScriptValue constructIconClass(QScriptEngine *eng) { QScriptValue proto = qScriptValueFromValue(eng, QIcon()); QScriptValue::PropertyFlags getter = QScriptValue::PropertyGetter; QScriptValue::PropertyFlags setter = QScriptValue::PropertySetter; proto.setProperty("addPixmap", eng->newFunction(addPixmap)); proto.setProperty("addFile", eng->newFunction(addFile)); proto.setProperty("null", eng->newFunction(isNull), getter); QScriptValue ctorFun = eng->newFunction(ctor, proto); ADD_ENUM_VALUE(ctorFun, QIcon, Normal); ADD_ENUM_VALUE(ctorFun, QIcon, Disabled); ADD_ENUM_VALUE(ctorFun, QIcon, Active); ADD_ENUM_VALUE(ctorFun, QIcon, Selected); ADD_ENUM_VALUE(ctorFun, QIcon, Off); ADD_ENUM_VALUE(ctorFun, QIcon, On); eng->setDefaultPrototype(qMetaTypeId(), proto); return ctorFun; }