source: trunk/src/dbus/qdbusabstractadaptor_p.h@ 890

Last change on this file since 890 was 846, checked in by Dmitry A. Kuminov, 14 years ago

trunk: Merged in qt 4.7.2 sources from branches/vendor/nokia/qt.

File size: 4.4 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
4** All rights reserved.
5** Contact: Nokia Corporation ([email protected])
6**
7** This file is part of the QtDBus module of the Qt Toolkit.
8**
9** $QT_BEGIN_LICENSE:LGPL$
10** Commercial Usage
11** Licensees holding valid Qt Commercial licenses may use this file in
12** accordance with the Qt Commercial License Agreement provided with the
13** Software or, alternatively, in accordance with the terms contained in
14** a written agreement between you and Nokia.
15**
16** GNU Lesser General Public License Usage
17** Alternatively, this file may be used under the terms of the GNU Lesser
18** General Public License version 2.1 as published by the Free Software
19** Foundation and appearing in the file LICENSE.LGPL included in the
20** packaging of this file. Please review the following information to
21** ensure the GNU Lesser General Public License version 2.1 requirements
22** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
23**
24** In addition, as a special exception, Nokia gives you certain additional
25** rights. These rights are described in the Nokia Qt LGPL Exception
26** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
27**
28** GNU General Public License Usage
29** Alternatively, this file may be used under the terms of the GNU
30** General Public License version 3.0 as published by the Free Software
31** Foundation and appearing in the file LICENSE.GPL included in the
32** packaging of this file. Please review the following information to
33** ensure the GNU General Public License version 3.0 requirements will be
34** met: http://www.gnu.org/copyleft/gpl.html.
35**
36** If you have questions regarding the use of this file, please contact
37** Nokia at [email protected].
38** $QT_END_LICENSE$
39**
40****************************************************************************/
41
42//
43// W A R N I N G
44// -------------
45//
46// This file is not part of the public API. This header file may
47// change from version to version without notice, or even be
48// removed.
49//
50// We mean it.
51//
52//
53
54#ifndef QDBUSABSTRACTADAPTORPRIVATE_H
55#define QDBUSABSTRACTADAPTORPRIVATE_H
56
57#include <qdbusabstractadaptor.h>
58
59#include <QtCore/qobject.h>
60#include <QtCore/qmap.h>
61#include <QtCore/qhash.h>
62#include <QtCore/qreadwritelock.h>
63#include <QtCore/qvariant.h>
64#include <QtCore/qvector.h>
65#include "private/qobject_p.h"
66
67#define QCLASSINFO_DBUS_INTERFACE "D-Bus Interface"
68#define QCLASSINFO_DBUS_INTROSPECTION "D-Bus Introspection"
69
70#ifndef QT_NO_DBUS
71
72QT_BEGIN_NAMESPACE
73
74class QDBusAbstractAdaptor;
75class QDBusAdaptorConnector;
76class QDBusAdaptorManager;
77class QDBusConnectionPrivate;
78
79class QDBusAbstractAdaptorPrivate: public QObjectPrivate
80{
81 Q_DECLARE_PUBLIC(QDBusAbstractAdaptor)
82public:
83 QDBusAbstractAdaptorPrivate() : autoRelaySignals(false) {}
84 QString xml;
85 bool autoRelaySignals;
86
87 static QString retrieveIntrospectionXml(QDBusAbstractAdaptor *adaptor);
88 static void saveIntrospectionXml(QDBusAbstractAdaptor *adaptor, const QString &xml);
89};
90
91class QDBusAdaptorConnector: public QObject
92{
93 Q_OBJECT_FAKE
94
95public: // typedefs
96 struct AdaptorData
97 {
98 const char *interface;
99 QDBusAbstractAdaptor *adaptor;
100
101 inline bool operator<(const AdaptorData &other) const
102 { return QByteArray(interface) < other.interface; }
103 inline bool operator<(const QString &other) const
104 { return QLatin1String(interface) < other; }
105 inline bool operator<(const QByteArray &other) const
106 { return interface < other; }
107 };
108 typedef QVector<AdaptorData> AdaptorMap;
109
110public: // methods
111 explicit QDBusAdaptorConnector(QObject *parent);
112 ~QDBusAdaptorConnector();
113
114 void addAdaptor(QDBusAbstractAdaptor *adaptor);
115 void connectAllSignals(QObject *object);
116 void disconnectAllSignals(QObject *object);
117 void relay(QObject *sender, int id, void **);
118
119//public slots:
120 void relaySlot(void **);
121 void polish();
122
123protected:
124//signals:
125 void relaySignal(QObject *obj, const QMetaObject *metaObject, int sid, const QVariantList &args);
126
127public: // member variables
128 AdaptorMap adaptors;
129 bool waitingForPolish : 1;
130};
131
132extern QDBusAdaptorConnector *qDBusFindAdaptorConnector(QObject *object);
133extern QDBusAdaptorConnector *qDBusCreateAdaptorConnector(QObject *object);
134
135QT_END_NAMESPACE
136
137#endif // QT_NO_DBUS
138#endif // QDBUSABSTRACTADAPTORPRIVATE_H
Note: See TracBrowser for help on using the repository browser.