lib
eventsignal.cpp00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #include "eventsignal.h"
00021
00022 #include "variant.h"
00023 #include "qtobject.h"
00024
00025 #include <qmetaobject.h>
00026 #include <private/qucom_p.h>
00027
00028 using namespace Kross::Api;
00029
00030 EventSignal::EventSignal(const QString& name, QObject* sender, QCString signal)
00031 : Event<EventSignal>(name)
00032 , m_sender(sender)
00033 , m_signal(signal)
00034 {
00035 }
00036
00037 EventSignal::~EventSignal()
00038 {
00039 }
00040
00041 const QString EventSignal::getClassName() const
00042 {
00043 return "Kross::Api::EventSignal";
00044 }
00045
00046 Object::Ptr EventSignal::call(const QString& , KSharedPtr<List> arguments)
00047 {
00048 #ifdef KROSS_API_EVENTSIGNAL_CALL_DEBUG
00049 krossdebug( QString("EventSignal::call() m_signal=%1 arguments=%2").arg(m_signal).arg(arguments->toString()) );
00050 #endif
00051
00052 QString n = m_signal;
00053
00054 if(n.startsWith("2"))
00055 n.remove(0,1);
00056
00057 int signalid = m_sender->metaObject()->findSignal(n.latin1(), false);
00058 if(signalid < 0)
00059 throw new Exception(QString("No such signal '%1'.").arg(n));
00060
00061 QUObject* uo = QtObject::toQUObject(n, arguments);
00062 m_sender->qt_emit(signalid, uo);
00063 delete [] uo;
00064
00065 return new Variant( QVariant(true,0) );
00066 }
|