4 This file is part of GammaRay, the Qt application inspection and
7 Copyright (C) 2010-2011 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
8 Author: Volker Krause <volker.krause@kdab.com>
10 This program is free software; you can redistribute it and/or modify
11 it under the terms of the GNU General Public License as published by
12 the Free Software Foundation, either version 2 of the License, or
13 (at your option) any later version.
15 This program is distributed in the hope that it will be useful,
16 but WITHOUT ANY WARRANTY; without even the implied warranty of
17 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 GNU General Public License for more details.
20 You should have received a copy of the GNU General Public License
21 along with this program. If not, see <http://www.gnu.org/licenses/>.
24 #include "multisignalmapper.h"
25 #include <qmetaobject.h>
26 #include <qsignalmapper.h>
29 using namespace GammaRay
;
31 MultiSignalMapper::MultiSignalMapper(QObject
*parent
) : QObject(parent
)
35 MultiSignalMapper::~MultiSignalMapper()
37 qDeleteAll(m_mappers
);
41 void MultiSignalMapper::connectToSignal(QObject
*sender
, const QMetaMethod
&signal
)
43 if (m_mappers
.size() <= signal
.methodIndex()) {
44 m_mappers
.resize(signal
.methodIndex() + 1);
47 QSignalMapper
*mapper
= m_mappers
.at(signal
.methodIndex());
49 mapper
= new QSignalMapper(this);
50 connect(mapper
, SIGNAL(mapped(QObject
*)), SLOT(slotMapped(QObject
*)));
51 m_mappers
[signal
.methodIndex()] = mapper
;
54 mapper
->setMapping(sender
, sender
);
55 connect(sender
, QByteArray::number(QSIGNAL_CODE
) + signal
.signature(),
56 mapper
, SLOT(map()), Qt::UniqueConnection
);
59 void MultiSignalMapper::slotMapped(QObject
*object
)
61 emit
signalEmitted(object
, m_mappers
.indexOf(static_cast<QSignalMapper
*>(sender())));
64 #include "multisignalmapper.moc"