X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fbasichandler.cpp;h=341b72940875139dbd9f22a52ce7b57f90615c73;hp=fe80c33ff552bb7103491e1059606c6ffd002752;hb=121a7a9291abd0f49aab836a47c8afcae66da18e;hpb=1a2a0f1880d6c30166928addbfb7b11849ff15cc diff --git a/src/common/basichandler.cpp b/src/common/basichandler.cpp index fe80c33f..341b7294 100644 --- a/src/common/basichandler.cpp +++ b/src/common/basichandler.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-10 by the Quassel Project * + * Copyright (C) 2005-2013 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -15,8 +15,9 @@ * 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., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ + #include "basichandler.h" #include @@ -24,70 +25,78 @@ #include "logger.h" BasicHandler::BasicHandler(QObject *parent) - : QObject(parent), + : QObject(parent), _defaultHandler(-1), _initDone(false), _methodPrefix("handle") { } + BasicHandler::BasicHandler(const QString &methodPrefix, QObject *parent) - : QObject(parent), + : QObject(parent), _defaultHandler(-1), _initDone(false), _methodPrefix(methodPrefix) { } -QStringList BasicHandler::providesHandlers() { - return handlerHash().keys(); + +QStringList BasicHandler::providesHandlers() +{ + return handlerHash().keys(); } -const QHash &BasicHandler::handlerHash() { - if(!_initDone) { - for(int i = metaObject()->methodOffset(); i < metaObject()->methodCount(); i++) { - QString methodSignature(metaObject()->method(i).signature()); - if(methodSignature.startsWith("defaultHandler")) { - _defaultHandler = i; - continue; - } - - if(!methodSignature.startsWith(_methodPrefix)) - continue; - - methodSignature = methodSignature.section('(',0,0); // chop the attribute list - methodSignature = methodSignature.mid(_methodPrefix.length()); // strip "handle" or whatever the prefix is - _handlerHash[methodSignature] = i; + +const QHash &BasicHandler::handlerHash() +{ + if (!_initDone) { + for (int i = metaObject()->methodOffset(); i < metaObject()->methodCount(); i++) { + QString methodSignature(metaObject()->method(i).signature()); + if (methodSignature.startsWith("defaultHandler")) { + _defaultHandler = i; + continue; + } + + if (!methodSignature.startsWith(_methodPrefix)) + continue; + + methodSignature = methodSignature.section('(', 0, 0); // chop the attribute list + methodSignature = methodSignature.mid(_methodPrefix.length()); // strip "handle" or whatever the prefix is + _handlerHash[methodSignature] = i; + } + _initDone = true; } - _initDone = true; - } - return _handlerHash; + return _handlerHash; } + void BasicHandler::handle(const QString &member, QGenericArgument val0, - QGenericArgument val1, QGenericArgument val2, - QGenericArgument val3, QGenericArgument val4, - QGenericArgument val5, QGenericArgument val6, - QGenericArgument val7, QGenericArgument val8) { - // Now we try to find a handler for this message. BTW, I do love the Trolltech guys ;-) - // and now we even have a fast lookup! Thanks thiago! - - QString handler = member.toLower(); - handler[0] = handler[0].toUpper(); - - if(!handlerHash().contains(handler)) { - if(_defaultHandler == -1) { - qWarning() << QString("No such Handler: %1::%2%3").arg(metaObject()->className(), _methodPrefix, handler); - return; - } else { - void *param[] = {0, Q_ARG(QString, member).data(), val0.data(), val1.data(), val2.data(), val3.data(), val4.data(), - val5.data(), val6.data(), val7.data(), val8.data(), val8.data()}; - qt_metacall(QMetaObject::InvokeMetaMethod, _defaultHandler, param); - return; + QGenericArgument val1, QGenericArgument val2, + QGenericArgument val3, QGenericArgument val4, + QGenericArgument val5, QGenericArgument val6, + QGenericArgument val7, QGenericArgument val8) +{ + // Now we try to find a handler for this message. BTW, I do love the Trolltech guys ;-) + // and now we even have a fast lookup! Thanks thiago! + + QString handler = member.toLower(); + handler[0] = handler[0].toUpper(); + + if (!handlerHash().contains(handler)) { + if (_defaultHandler == -1) { + qWarning() << QString("No such Handler: %1::%2%3").arg(metaObject()->className(), _methodPrefix, handler); + return; + } + else { + void *param[] = { 0, Q_ARG(QString, member).data(), val0.data(), val1.data(), val2.data(), val3.data(), val4.data(), + val5.data(), val6.data(), val7.data(), val8.data(), val8.data() }; + qt_metacall(QMetaObject::InvokeMetaMethod, _defaultHandler, param); + return; + } } - } - void *param[] = {0, val0.data(), val1.data(), val2.data(), val3.data(), val4.data(), - val5.data(), val6.data(), val7.data(), val8.data(), val8.data(), 0}; - qt_metacall(QMetaObject::InvokeMetaMethod, handlerHash()[handler], param); + void *param[] = { 0, val0.data(), val1.data(), val2.data(), val3.data(), val4.data(), + val5.data(), val6.data(), val7.data(), val8.data(), val8.data(), 0 }; + qt_metacall(QMetaObject::InvokeMetaMethod, handlerHash()[handler], param); }