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

Last change on this file since 437 was 2, checked in by Dmitry A. Kuminov, 16 years ago

Initially imported qt-all-opensource-src-4.5.1 from Trolltech.

File size: 4.4 KB
Line 
1/****************************************************************************
2**
3** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4** Contact: Qt Software Information ([email protected])
5**
6** This file is part of the QtDBus module of the Qt Toolkit.
7**
8** $QT_BEGIN_LICENSE:LGPL$
9** Commercial Usage
10** Licensees holding valid Qt Commercial licenses may use this file in
11** accordance with the Qt Commercial License Agreement provided with the
12** Software or, alternatively, in accordance with the terms contained in
13** a written agreement between you and Nokia.
14**
15** GNU Lesser General Public License Usage
16** Alternatively, this file may be used under the terms of the GNU Lesser
17** General Public License version 2.1 as published by the Free Software
18** Foundation and appearing in the file LICENSE.LGPL included in the
19** packaging of this file. Please review the following information to
20** ensure the GNU Lesser General Public License version 2.1 requirements
21** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
22**
23** In addition, as a special exception, Nokia gives you certain
24** additional rights. These rights are described in the Nokia Qt LGPL
25** Exception version 1.0, included in the file LGPL_EXCEPTION.txt in this
26** 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 are unsure which license is appropriate for your use, please
37** contact the sales department 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
70QT_BEGIN_NAMESPACE
71
72class QDBusAbstractAdaptor;
73class QDBusAdaptorConnector;
74class QDBusAdaptorManager;
75class QDBusConnectionPrivate;
76
77class QDBusAbstractAdaptorPrivate: public QObjectPrivate
78{
79 Q_DECLARE_PUBLIC(QDBusAbstractAdaptor)
80public:
81 QDBusAbstractAdaptorPrivate() : autoRelaySignals(false) {}
82 QString xml;
83 bool autoRelaySignals;
84
85 static QString retrieveIntrospectionXml(QDBusAbstractAdaptor *adaptor);
86 static void saveIntrospectionXml(QDBusAbstractAdaptor *adaptor, const QString &xml);
87};
88
89class QDBusAdaptorConnector: public QObject
90{
91 Q_OBJECT_FAKE
92
93public: // typedefs
94 struct AdaptorData
95 {
96 const char *interface;
97 QDBusAbstractAdaptor *adaptor;
98
99 inline bool operator<(const AdaptorData &other) const
100 { return QByteArray(interface) < other.interface; }
101 inline bool operator<(const QString &other) const
102 { return QLatin1String(interface) < other; }
103 inline bool operator<(const QByteArray &other) const
104 { return interface < other; }
105 };
106 typedef QVector<AdaptorData> AdaptorMap;
107
108public: // methods
109 explicit QDBusAdaptorConnector(QObject *parent);
110 ~QDBusAdaptorConnector();
111
112 void addAdaptor(QDBusAbstractAdaptor *adaptor);
113 void connectAllSignals(QObject *object);
114 void disconnectAllSignals(QObject *object);
115 void relay(QObject *sender, int id, void **);
116
117//public slots:
118 void relaySlot(void **);
119 void polish();
120
121protected:
122//signals:
123 void relaySignal(QObject *obj, const QMetaObject *metaObject, int sid, const QVariantList &args);
124
125public: // member variables
126 AdaptorMap adaptors;
127 bool waitingForPolish : 1;
128};
129
130extern QDBusAdaptorConnector *qDBusFindAdaptorConnector(QObject *object);
131extern QDBusAdaptorConnector *qDBusCreateAdaptorConnector(QObject *object);
132
133QT_END_NAMESPACE
134
135#endif // QDBUSABSTRACTADAPTORPRIVATE_H
Note: See TracBrowser for help on using the repository browser.