Krita Source Code Documentation
Loading...
Searching...
No Matches
KisSignalMapper.cpp
Go to the documentation of this file.
1/****************************************************************************
2**
3** SPDX-FileCopyrightText: 2016 The Qt Company Ltd.
4** Contact: https://www.qt.io/licensing/
5**
6** This file is part of the QtCore module of the Qt Toolkit.
7**
8** SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KFQF-Accepted-GPL OR LicenseRef-Qt-Commercial
9**
10****************************************************************************/
11
12#include "KisSignalMapper.h"
13#include "qhash.h"
14
16{
17public:
18
20 :q(_q)
21 {}
22
24 q->removeMappings(q->sender());
25 }
26 QHash<QObject *, int> intHash;
27 QHash<QObject *, QString> stringHash;
28 QHash<QObject *, QWidget*> widgetHash;
29 QHash<QObject *, QObject*> objectHash;
30
31
33};
34
98 : QObject(parent)
99 , d(new Private(this))
100{
101}
102
109
118void KisSignalMapper::setMapping(QObject *sender, int id)
119{
120 d->intHash.insert(sender, id);
121 connect(sender, SIGNAL(destroyed()), this, SLOT(_q_senderDestroyed()));
122}
123
130void KisSignalMapper::setMapping(QObject *sender, const QString &text)
131{
132 d->stringHash.insert(sender, text);
133 connect(sender, SIGNAL(destroyed()), this, SLOT(_q_senderDestroyed()));
134}
135
142void KisSignalMapper::setMapping(QObject *sender, QWidget *widget)
143{
144 d->widgetHash.insert(sender, widget);
145 connect(sender, SIGNAL(destroyed()), this, SLOT(_q_senderDestroyed()));
146}
147
154void KisSignalMapper::setMapping(QObject *sender, QObject *object)
155{
156 d->objectHash.insert(sender, object);
157 connect(sender, SIGNAL(destroyed()), this, SLOT(_q_senderDestroyed()));
158}
159
165QObject *KisSignalMapper::mapping(int id) const
166{
167 return d->intHash.key(id);
168}
169
173QObject *KisSignalMapper::mapping(const QString &id) const
174{
175 return d->stringHash.key(id);
176}
177
183QObject *KisSignalMapper::mapping(QWidget *widget) const
184{
185 return d->widgetHash.key(widget);
186}
187
193QObject *KisSignalMapper::mapping(QObject *object) const
194{
195 return d->objectHash.key(object);
196}
197
207{
208 d->intHash.remove(sender);
209 d->stringHash.remove(sender);
210 d->widgetHash.remove(sender);
211 d->objectHash.remove(sender);
212}
213
217void KisSignalMapper::map() { map(sender()); }
218
222void KisSignalMapper::map(QObject *sender)
223{
224 if (d->intHash.contains(sender))
225 Q_EMIT mapped(d->intHash.value(sender));
226 if (d->stringHash.contains(sender))
227 Q_EMIT mapped(d->stringHash.value(sender));
228 if (d->widgetHash.contains(sender))
229 Q_EMIT mapped(d->widgetHash.value(sender));
230 if (d->objectHash.contains(sender))
231 Q_EMIT mapped(d->objectHash.value(sender));
232}
233
234
275#include "moc_KisSignalMapper.cpp"
276
connect(this, SIGNAL(optionsChanged()), this, SLOT(saveOptions()))
QHash< QObject *, QObject * > objectHash
QHash< QObject *, QWidget * > widgetHash
QHash< QObject *, int > intHash
QHash< QObject *, QString > stringHash
Private(KisSignalMapper *_q)
The KisSignalMapper class bundles signals from identifiable senders.
QScopedPointer< Private > d
KisSignalMapper(QObject *parent=nullptr)
void removeMappings(QObject *sender)
void setMapping(QObject *sender, int id)
void mapped(int)