| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162 | /* *  ctkEventDispatcherLocal.cpp *  ctkEventBus * *  Created by Paolo Quadrani on 27/03/09. *  Copyright 2009 B3C. All rights reserved. *namespace ctkEventBus *  See Licence at: http://tiny.cc/QXJ4D * */#include "ctkEventDispatcherLocal.h"#include "ctkBusEvent.h"using namespace ctkEventBus;ctkEventDispatcherLocal::ctkEventDispatcherLocal() : ctkEventDispatcher() {    this->initializeGlobalEvents();}void ctkEventDispatcherLocal::initializeGlobalEvents() {    ctkBusEvent *properties = new ctkBusEvent("ctk/local/eventBus/globalUpdate",ctkEventTypeLocal,ctkSignatureTypeSignal, this, "notifyDefaultEvent()");    /*QString topic = "ctk/local/eventBus/globalUpdate";    (*properties)[TOPIC] =  topic;    (*properties)[TYPE] = ctkEventTypeLocal;    (*properties)[SIGTYPE] = mafSignatureTypeSignal;    QVariant var;    var.setValue((QObject*)this);    (*properties)[OBJECT] = var;    (*properties)[SIGNATURE] = "notifyDefaultEvent()";*/    registerSignal(*properties);    ctkEventDispatcher::initializeGlobalEvents();}void ctkEventDispatcherLocal::notifyEvent(ctkBusEvent &event_dictionary, ctkEventArgumentsList *argList, ctkGenericReturnArgument *returnArg) const {    QString topic = event_dictionary[TOPIC].toString();    ctkEventItemListType items = signalItemProperty(topic);    ctkBusEvent *itemEventProp;    foreach(itemEventProp, items) {        if((*itemEventProp)[SIGNATURE].toString().length() != 0) {            QString signal_to_emit = (*itemEventProp)[SIGNATURE].toString().split("(")[0];            QObject *obj = (*itemEventProp)[OBJECT].value<QObject *>();            if(argList != NULL) {                if (returnArg == NULL || returnArg->data() == NULL) { //don't use return value                    switch (argList->count()) {                        case 0:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1());                            break;                        case 1:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                            argList->at(0));                            break;                        case 2:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1));                            break;                        case 3:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1), argList->at(2));                            break;                        case 4:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3));                            break;                        case 5:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4));                            break;                        case 6:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), argList->at(5));                            break;                        case 7:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), \                             argList->at(5), argList->at(6));                            break;                        case 8:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), \                             argList->at(5), argList->at(6), argList->at(7));                            break;                        case 9:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), \                             argList->at(5), argList->at(6), argList->at(7), argList->at(8));                            break;                        case 10:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), \                             argList->at(5), argList->at(6), argList->at(7), argList->at(8), argList->at(9));                            break;                        default:                            qWarning("%s", tr("Number of arguments not supported. Max 10 arguments").toLatin1().data());                    } //switch                 } else { //use return value                    switch (argList->count()) {                        case 0:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg);                            break;                        case 1:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg,\                            argList->at(0));                            break;                        case 2:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1));                            break;                        case 3:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1), argList->at(2));                            break;                        case 4:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3));                            break;                        case 5:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4));                            break;                        case 6:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), argList->at(5));                            break;                        case 7:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), \                             argList->at(5), argList->at(6));                            break;                        case 8:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), \                             argList->at(5), argList->at(6), argList->at(7));                            break;                        case 9:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), \                             argList->at(5), argList->at(6), argList->at(7), argList->at(8));                            break;                        case 10:                            this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg, \                             argList->at(0), argList->at(1), argList->at(2), argList->at(3), argList->at(4), \                             argList->at(5), argList->at(6), argList->at(7), argList->at(8), argList->at(9));                            break;                        default:                            qWarning("%s", tr("Number of arguments not supported. Max 10 arguments").toLatin1().data());                    } //switch                 }            } else {                if (returnArg == NULL || returnArg->data() == NULL) { //don't use return value                    this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1());                } else {                    this->metaObject()->invokeMethod(obj, signal_to_emit.toLatin1(), *returnArg);                }            }        }    }}
 |