GammaRay  2.3.0
objectbroker.h
1 /*
2  objectbroker.h
3 
4  This file is part of GammaRay, the Qt application inspection and
5  manipulation tool.
6 
7  Copyright (C) 2013-2015 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com
8  Author: Volker Krause <volker.krause@kdab.com>
9 
10  Licensees holding valid commercial KDAB GammaRay licenses may use this file in
11  acuordance with GammaRay Commercial License Agreement provided with the Software.
12 
13  Contact info@kdab.com if any conditions of this licensing are not clear to you.
14 
15  This program is free software; you can redistribute it and/or modify
16  it under the terms of the GNU General Public License as published by
17  the Free Software Foundation, either version 2 of the License, or
18  (at your option) any later version.
19 
20  This program is distributed in the hope that it will be useful,
21  but WITHOUT ANY WARRANTY; without even the implied warranty of
22  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
23  GNU General Public License for more details.
24 
25  You should have received a copy of the GNU General Public License
26  along with this program. If not, see <http://www.gnu.org/licenses/>.
27 */
28 
29 #ifndef GAMMARAY_OBJECTBROKER_H
30 #define GAMMARAY_OBJECTBROKER_H
31 
32 #include "gammaray_common_export.h"
33 
34 #include <QObject>
35 
36 class QItemSelectionModel;
37 class QAbstractItemModel;
38 
39 namespace GammaRay {
40 
42 namespace ObjectBroker {
43 
45  GAMMARAY_COMMON_EXPORT void registerObject(const QString &name, QObject *object);
46  template<class T>
47  void registerObject(QObject *object)
48  {
49  const QString interfaceName = QString::fromUtf8(qobject_interface_iid<T>());
50  registerObject(interfaceName, object);
51  }
52 
54  GAMMARAY_COMMON_EXPORT QObject* objectInternal(const QString &name, const QByteArray &type = QByteArray());
55 
64  template<class T>
65  T object(const QString &name, T = 0)
66  {
67  T ret = qobject_cast<T>(objectInternal(name, QByteArray(qobject_interface_iid<T>())));
68  Q_ASSERT(ret);
69  return ret;
70  }
71 
82  template<class T>
83  T object(T = 0)
84  {
85  const QByteArray interfaceName(qobject_interface_iid<T>());
86  T ret = qobject_cast<T>(objectInternal(QString::fromUtf8(interfaceName), interfaceName));
87  Q_ASSERT(ret);
88  return ret;
89  }
90 
91  typedef QObject*(*ClientObjectFactoryCallback)(const QString &, QObject *parent);
92 
94  GAMMARAY_COMMON_EXPORT void registerClientObjectFactoryCallbackInternal(const QByteArray &type, ClientObjectFactoryCallback callback);
95 
101  template<class T>
102  void registerClientObjectFactoryCallback(ClientObjectFactoryCallback callback, T = 0)
103  {
104  registerClientObjectFactoryCallbackInternal(QByteArray(qobject_interface_iid<T>()), callback);
105  }
106 
113  GAMMARAY_COMMON_EXPORT void registerModelInternal(const QString &name, QAbstractItemModel* model);
114 
116  GAMMARAY_COMMON_EXPORT QAbstractItemModel* model(const QString &name);
117 
118  typedef QAbstractItemModel*(*ModelFactoryCallback)(const QString &);
119 
121  GAMMARAY_COMMON_EXPORT void setModelFactoryCallback(ModelFactoryCallback callback);
122 
124  GAMMARAY_COMMON_EXPORT void registerSelectionModel(QItemSelectionModel *selectionModel);
126  GAMMARAY_COMMON_EXPORT void unregisterSelectionModel(QItemSelectionModel *selectionModel);
128  GAMMARAY_COMMON_EXPORT bool hasSelectionModel(QAbstractItemModel* model);
129 
131  GAMMARAY_COMMON_EXPORT QItemSelectionModel* selectionModel(QAbstractItemModel *model);
132 
133  typedef QItemSelectionModel*(*selectionModelFactoryCallback)(QAbstractItemModel*);
134 
136  GAMMARAY_COMMON_EXPORT void setSelectionModelFactoryCallback(selectionModelFactoryCallback callback);
137 
144  GAMMARAY_COMMON_EXPORT void clear();
145 }
146 }
147 
148 #endif // GAMMARAY_OBJECTBROKER_H
void unregisterSelectionModel(QItemSelectionModel *selectionModel)
void registerClientObjectFactoryCallbackInternal(const QByteArray &type, ClientObjectFactoryCallback callback)
bool hasSelectionModel(QAbstractItemModel *model)
T object(const QString &name, T=0)
Definition: objectbroker.h:65
void registerClientObjectFactoryCallback(ClientObjectFactoryCallback callback, T=0)
Definition: objectbroker.h:102
void registerSelectionModel(QItemSelectionModel *selectionModel)
void setModelFactoryCallback(ModelFactoryCallback callback)
Definition: endpoint.h:41
void setSelectionModelFactoryCallback(selectionModelFactoryCallback callback)
void registerModelInternal(const QString &name, QAbstractItemModel *model)
void clear()
Clear all registered objects.
QAbstractItemModel * model(const QString &name)
QObject * objectInternal(const QString &name, const QByteArray &type=QByteArray())
QItemSelectionModel * selectionModel(QAbstractItemModel *model)
void registerObject(const QString &name, QObject *object)

Klarälvdalens Datakonsult AB (KDAB)
"The Qt Experts"
http://www.kdab.com/
GammaRay
Qt-application inspection and manipulation tool
http://www.kdab.com/kdab-products/gammaray/