Magellan Linux

Annotation of /trunk/kdebase/patches/kdebase-3.5.5-dbus090-2.patch

Parent Directory Parent Directory | Revision Log Revision Log


Revision 144 - (hide annotations) (download)
Tue May 8 20:06:05 2007 UTC (17 years, 1 month ago) by niro
File size: 38153 byte(s)
-import

1 niro 144 --- kdebase-3.5.5/kioslave/media/configure.in.in.dbus 2006-10-01 19:31:54.000000000 +0200
2     +++ kdebase-3.5.5/kioslave/media/configure.in.in 2006-10-10 19:55:19.000000000 +0200
3     @@ -97,70 +97,6 @@
4    
5     AC_SUBST(DBUS_INCS)
6     AC_SUBST(DBUS_LIBS)
7     -
8     -########### Check for DBus-Qt3 bindings
9     -
10     - AC_MSG_CHECKING(for DBus-Qt3 bindings)
11     -
12     - dbusqt_inc=NOTFOUND
13     - dbusqt_lib=NOTFOUND
14     - dbusqt=NOTFOUND
15     -
16     - search_incs="$kde_includes $kde_extra_includes /usr/include /usr/include/dbus-1.0 /usr/local/include /usr/local/include/dbus-1.0"
17     - AC_FIND_FILE(dbus/connection.h, $search_incs, dbusqt_incdir)
18     -
19     - if test -r $dbusqt_incdir/dbus/connection.h ; then
20     - have_qt_patch=0
21     - grep dbus_connection_setup_with_qt_main $dbusqt_incdir/dbus/connection.h \
22     - > /dev/null 2>&1 && have_qt_patch=1
23     - if test $have_qt_patch = 1 ; then
24     - DBUSQT_INCS="-I$dbusqt_incdir"
25     - dbusqt_inc=FOUND
26     - fi
27     - fi
28     -
29     - search_libs="$kde_libraries $kde_extra_libs /usr/lib$kdelibsuff /usr/local/lib$kdelibsuff"
30     - AC_FIND_FILE(libdbus-qt-1.so, $search_libs, dbusqt_libdir)
31     -
32     - if test -r $dbusqt_libdir/libdbus-qt-1.so ; then
33     - DBUSQT_LIBS="-L$dbusqt_libdir -ldbus-qt-1"
34     - dbusqt_lib=FOUND
35     - fi
36     -
37     - if test $dbusqt_inc != FOUND || test $dbusqt_lib != FOUND ; then
38     -
39     - search_incs="`pkg-config --cflags dbus-1 |sed 's/-I//g'`"
40     - AC_FIND_FILE(dbus/connection.h, $search_incs, dbusqt_incdir)
41     - if test -r $dbusqt_incdir/dbus/connection.h ; then
42     - have_qt_patch=0
43     - grep dbus_connection_setup_with_qt_main $dbusqt_incdir/dbus/connection.h \
44     - > /dev/null 2>&1 && have_qt_patch=1
45     - if test $have_qt_patch = 1 ; then
46     - DBUSQT_INCS="-I$dbusqt_incdir"
47     - dbusqt_inc=FOUND
48     - fi
49     - fi
50     -
51     - search_libs="`pkg-config --libs dbus-1 --libs-only-L | sed 's/-L//g'`"
52     - AC_FIND_FILE(libdbus-qt-1.so, $search_libs, dbusqt_libdir)
53     -
54     - if test -r $dbusqt_libdir/libdbus-qt-1.so ; then
55     - DBUSQT_LIBS="-L$dbusqt_libdir -ldbus-qt-1"
56     - dbusqt_lib=FOUND
57     - fi
58     -
59     - fi
60     -
61     -
62     - if test $dbusqt_inc = FOUND && test $dbusqt_lib = FOUND ; then
63     - AC_MSG_RESULT(headers $dbusqt_incdir libraries $dbusqt_libdir)
64     - dbusqt=FOUND
65     - else
66     - AC_MSG_RESULT(searched but not found)
67     - fi
68     -
69     - AC_SUBST(DBUSQT_INCS)
70     - AC_SUBST(DBUSQT_LIBS)
71     fi
72    
73     ########### Check if media HAL backend sould be compiled
74     @@ -168,7 +104,7 @@
75     AC_MSG_CHECKING(if the HAL backend for media:/ should be compiled)
76    
77     HALBACKEND=no
78     -if test "x$hal" = "xFOUND" && test "x$dbus" = "xFOUND" && test "x$dbusqt" = "xFOUND" ; then
79     +if test "x$hal" = "xFOUND" && test "x$dbus" = "xFOUND" ; then
80     AC_DEFINE_UNQUOTED([COMPILE_HALBACKEND],1, [media HAL backend compilation])
81     HALBACKEND=yes
82     AC_SUBST(HALBACKEND)
83     --- kdebase-3.5.5/kioslave/media/mediamanager/halbackend.h.dbus 2006-07-22 10:15:45.000000000 +0200
84     +++ kdebase-3.5.5/kioslave/media/mediamanager/halbackend.h 2006-10-10 17:41:42.000000000 +0200
85     @@ -40,7 +40,7 @@
86     /* We acknowledge the the dbus API is unstable */
87     #define DBUS_API_SUBJECT_TO_CHANGE
88     /* DBus-Qt bindings */
89     -#include <dbus/connection.h>
90     +#include <connection.h>
91     /* HAL libraries */
92     #include <libhal.h>
93     #include <libhal-storage.h>
94     --- /dev/null 2006-10-09 18:32:23.425560750 +0200
95     +++ kdebase-3.5.5/kioslave/media/mediamanager/connection.cpp 2006-10-10 17:41:42.000000000 +0200
96     @@ -0,0 +1,168 @@
97     +// -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
98     +/* connection.cpp: Qt wrapper for DBusConnection
99     + *
100     + * Copyright (C) 2003 Zack Rusin <zack@kde.org>
101     + *
102     + * Licensed under the Academic Free License version 2.0
103     + *
104     + * This program is free software; you can redistribute it and/or modify
105     + * it under the terms of the GNU General Public License as published by
106     + * the Free Software Foundation; either version 2 of the License, or
107     + * (at your option) any later version.
108     + *
109     + * This program is distributed in the hope that it will be useful,
110     + * but WITHOUT ANY WARRANTY; without even the implied warranty of
111     + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
112     + * GNU General Public License for more details.
113     + *
114     + * You should have received a copy of the GNU General Public License
115     + * along with this program; if not, write to the Free Software
116     + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
117     + *
118     + */
119     +#include "connection.h"
120     +
121     +using namespace DBusQt;
122     +
123     +#include "integrator.h"
124     +using Internal::Integrator;
125     +
126     +struct Connection::Private
127     +{
128     + Private( Connection *qq );
129     + void setConnection( DBusConnection *c );
130     + DBusConnection *connection;
131     + int connectionSlot;
132     + DBusError error;
133     + Integrator *integrator;
134     + int timeout;
135     + Connection *q;
136     +};
137     +
138     +Connection::Private::Private( Connection *qq )
139     + : connection( 0 ), connectionSlot( 0 ), integrator( 0 ),
140     + timeout( -1 ), q( qq )
141     +{
142     + dbus_error_init( &error );
143     +}
144     +
145     +void Connection::Private::setConnection( DBusConnection *c )
146     +{
147     + if (!c) {
148     + qDebug( "error: %s, %s", error.name, error.message );
149     + dbus_error_free( &error );
150     + return;
151     + }
152     + connection = c;
153     + integrator = new Integrator( c, q );
154     + connect( integrator, SIGNAL(readReady()), q, SLOT(dispatchRead()) );
155     +}
156     +
157     +Connection::Connection( QObject *parent )
158     + : QObject( parent )
159     +{
160     + d = new Private( this );
161     +}
162     +
163     +Connection::Connection( const QString& host, QObject *parent )
164     + : QObject( parent )
165     +{
166     + d = new Private( this );
167     +
168     + if ( !host.isEmpty() )
169     + init( host );
170     +}
171     +
172     +Connection::Connection( DBusBusType type, QObject* parent )
173     + : QObject( parent )
174     +{
175     + d = new Private( this );
176     + d->setConnection( dbus_bus_get(type, &d->error) );
177     +}
178     +
179     +void Connection::init( const QString& host )
180     +{
181     + d->setConnection( dbus_connection_open( host.ascii(), &d->error) );
182     + //dbus_connection_allocate_data_slot( &d->connectionSlot );
183     + //dbus_connection_set_data( d->connection, d->connectionSlot, 0, 0 );
184     +}
185     +
186     +bool Connection::isConnected() const
187     +{
188     + return dbus_connection_get_is_connected( d->connection );
189     +}
190     +
191     +bool Connection::isAuthenticated() const
192     +{
193     + return dbus_connection_get_is_authenticated( d->connection );
194     +}
195     +
196     +void Connection::open( const QString& host )
197     +{
198     + if ( host.isEmpty() ) return;
199     +
200     + init( host );
201     +}
202     +
203     +void Connection::close()
204     +{
205     + dbus_connection_close( d->connection );
206     +}
207     +
208     +void Connection::flush()
209     +{
210     + dbus_connection_flush( d->connection );
211     +}
212     +
213     +void Connection::dispatchRead()
214     +{
215     + while ( dbus_connection_dispatch( d->connection ) == DBUS_DISPATCH_DATA_REMAINS )
216     + ;
217     +}
218     +
219     +DBusConnection* Connection::connection() const
220     +{
221     + return d->connection;
222     +}
223     +
224     +Connection::Connection( DBusConnection *connection, QObject *parent )
225     + : QObject( parent )
226     +{
227     + d = new Private(this);
228     + d->setConnection(connection);
229     +}
230     +
231     +void Connection::send( const Message &m )
232     +{
233     + dbus_connection_send(d->connection, m.message(), 0);
234     +}
235     +
236     +void Connection::sendWithReply( const Message& )
237     +{
238     +}
239     +
240     +Message Connection::sendWithReplyAndBlock( const Message &m )
241     +{
242     + DBusMessage *reply;
243     + reply = dbus_connection_send_with_reply_and_block( d->connection, m.message(), d->timeout, &d->error );
244     + if (dbus_error_is_set(&d->error)) {
245     + qDebug("error: %s, %s", d->error.name, d->error.message);
246     + dbus_error_free(&d->error);
247     + }
248     + return Message( reply );
249     +}
250     +
251     +void* Connection::virtual_hook( int, void* )
252     +{
253     +}
254     +
255     +void Connection::dbus_connection_setup_with_qt_main (DBusConnection *connection)
256     +{
257     + d->setConnection( connection );
258     +}
259     +
260     +
261     +
262     +/////////////////////////////////////////////////////////
263     +
264     +#include "connection.moc"
265     --- /dev/null 2006-10-09 18:32:23.425560750 +0200
266     +++ kdebase-3.5.5/kioslave/media/mediamanager/connection.h 2006-10-10 17:41:42.000000000 +0200
267     @@ -0,0 +1,86 @@
268     +// -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
269     +/* connection.h: Qt wrapper for DBusConnection
270     + *
271     + * Copyright (C) 2003 Zack Rusin <zack@kde.org>
272     + *
273     + * Licensed under the Academic Free License version 2.1
274     + *
275     + * This program is free software; you can redistribute it and/or modify
276     + * it under the terms of the GNU General Public License as published by
277     + * the Free Software Foundation; either version 2 of the License, or
278     + * (at your option) any later version.
279     + *
280     + * This program is distributed in the hope that it will be useful,
281     + * but WITHOUT ANY WARRANTY; without even the implied warranty of
282     + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
283     + * GNU General Public License for more details.
284     + *
285     + * You should have received a copy of the GNU General Public License
286     + * along with this program; if not, write to the Free Software
287     + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
288     + *
289     + */
290     +#ifndef DBUS_QT_CONNECTION_H
291     +#define DBUS_QT_CONNECTION_H
292     +
293     +/* We acknowledge the the dbus API is unstable */
294     +#define DBUS_API_SUBJECT_TO_CHANGE
295     +
296     +#include "message.h"
297     +
298     +#include <qobject.h>
299     +#include <qstring.h>
300     +
301     +#include "dbus/dbus.h"
302     +
303     +namespace DBusQt {
304     + namespace Internal {
305     + class Integrator;
306     + }
307     +
308     + class Connection : public QObject
309     + {
310     + Q_OBJECT
311     + public:
312     + Connection( QObject *parent =0 );
313     + Connection( const QString& host,
314     + QObject *parent = 0 );
315     + Connection( DBusBusType type, QObject* parent = 0 );
316     +
317     + bool isConnected() const;
318     + bool isAuthenticated() const;
319     +
320     + Message borrowMessage();
321     + Message popMessage();
322     + void stealBorrowMessage( const Message& );
323     + void dbus_connection_setup_with_qt_main (DBusConnection *connection);
324     +
325     + public slots:
326     + void open( const QString& );
327     + void close();
328     + void flush();
329     + void send( const Message& );
330     + void sendWithReply( const Message& );
331     + Message sendWithReplyAndBlock( const Message& );
332     +
333     + protected slots:
334     + void dispatchRead();
335     +
336     + protected:
337     + void init( const QString& host );
338     + virtual void *virtual_hook( int id, void *data );
339     +
340     + private:
341     + friend class Internal::Integrator;
342     + DBusConnection *connection() const;
343     + Connection( DBusConnection *connection, QObject *parent );
344     +
345     + private:
346     + struct Private;
347     + Private *d;
348     + };
349     +
350     +}
351     +
352     +
353     +#endif
354     --- /dev/null 2006-10-09 18:32:23.425560750 +0200
355     +++ kdebase-3.5.5/kioslave/media/mediamanager/message.h 2006-10-10 17:41:42.000000000 +0200
356     @@ -0,0 +1,132 @@
357     +/* -*- mode: C++; c-file-style: "gnu" -*- */
358     +/* message.h: Qt wrapper for DBusMessage
359     + *
360     + * Copyright (C) 2003 Zack Rusin <zack@kde.org>
361     + *
362     + * Licensed under the Academic Free License version 2.1
363     + *
364     + * This program is free software; you can redistribute it and/or modify
365     + * it under the terms of the GNU General Public License as published by
366     + * the Free Software Foundation; either version 2 of the License, or
367     + * (at your option) any later version.
368     + *
369     + * This program is distributed in the hope that it will be useful,
370     + * but WITHOUT ANY WARRANTY; without even the implied warranty of
371     + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
372     + * GNU General Public License for more details.
373     + *
374     + * You should have received a copy of the GNU General Public License
375     + * along with this program; if not, write to the Free Software
376     + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
377     + *
378     + */
379     +#ifndef DBUS_QT_MESSAGE_H
380     +#define DBUS_QT_MESSAGE_H
381     +
382     +/* We acknowledge the the dbus API is unstable */
383     +#define DBUS_API_SUBJECT_TO_CHANGE
384     +
385     +#include <qvariant.h>
386     +#include <qstring.h>
387     +#include <qstringlist.h>
388     +
389     +#include "dbus/dbus.h"
390     +
391     +namespace DBusQt {
392     +
393     + class Message
394     + {
395     + public:
396     + class iterator {
397     + public:
398     + iterator();
399     + iterator( const iterator& );
400     + iterator( DBusMessage* msg );
401     + ~iterator();
402     +
403     + iterator& operator=( const iterator& );
404     + const QVariant& operator*() const;
405     + QVariant& operator*();
406     + iterator& operator++();
407     + iterator operator++(int);
408     + bool operator==( const iterator& it );
409     + bool operator!=( const iterator& it );
410     +
411     + QVariant var() const;
412     + protected:
413     + QVariant marshallBaseType( DBusMessageIter* i );
414     + void fillVar();
415     + struct IteratorData;
416     + IteratorData *d;
417     + };
418     +
419     + Message( int messageType );
420     + Message( DBusMessage * );//hide this one from the public implementation
421     + Message( const QString& service, const QString& path,
422     + const QString& interface, const QString& method );
423     + Message( const Message& replayingTo );
424     + Message( const QString& path, const QString& interface,
425     + const QString& name );
426     + Message( const Message& replayingTo, const QString& errorName,
427     + const QString& errorMessage );
428     +
429     + Message operator=( const Message& other );
430     +
431     + virtual ~Message();
432     +
433     + int type() const;
434     +
435     + void setPath( const QString& );
436     + QString path() const;
437     +
438     + void setInterface( const QString& );
439     + QString interface() const;
440     +
441     + void setMember( const QString& );
442     + QString member() const;
443     +
444     + QString errorName() const;
445     +
446     + QString destination() const;
447     +
448     + bool setSender( const QString& sender );
449     + QString sender() const;
450     +
451     + QString signature() const;
452     +
453     + iterator begin() const;
454     + iterator end() const;
455     +
456     + QVariant at( int i );
457     +
458     +
459     + public:
460     + Message& operator<<( bool );
461     + Message& operator<<( Q_INT8 );
462     + Message& operator<<( Q_INT32 );
463     + Message& operator<<( Q_UINT32 );
464     + Message& operator<<( Q_INT64 );
465     + Message& operator<<( Q_UINT64 );
466     + Message& operator<<( double );
467     + Message& operator<<( const QString& );
468     + Message& operator<<( const QVariant& );
469     + //Message& operator<<();
470     + //Message& operator<<();
471     + //Message& operator<<();
472     + //Message& operator<<();
473     + //Message& operator<<();
474     + //Message& operator<<();
475     + //Message& operator<<();
476     +
477     + protected:
478     + friend class Connection;
479     + DBusMessage* message() const;
480     +
481     + private:
482     + struct Private;
483     + Private *d;
484     + };
485     +
486     +}
487     +
488     +#endif
489     --- /dev/null 2006-10-09 18:32:23.425560750 +0200
490     +++ kdebase-3.5.5/kioslave/media/mediamanager/integrator.h 2006-10-10 17:41:42.000000000 +0200
491     @@ -0,0 +1,95 @@
492     +// -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
493     +/* integrator.h: integrates D-BUS into Qt event loop
494     + *
495     + * Copyright (C) 2003 Zack Rusin <zack@kde.org>
496     + *
497     + * Licensed under the Academic Free License version 2.1
498     + *
499     + * This program is free software; you can redistribute it and/or modify
500     + * it under the terms of the GNU General Public License as published by
501     + * the Free Software Foundation; either version 2 of the License, or
502     + * (at your option) any later version.
503     + *
504     + * This program is distributed in the hope that it will be useful,
505     + * but WITHOUT ANY WARRANTY; without even the implied warranty of
506     + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
507     + * GNU General Public License for more details.
508     + *
509     + * You should have received a copy of the GNU General Public License
510     + * along with this program; if not, write to the Free Software
511     + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
512     + *
513     + */
514     +#ifndef DBUS_QT_INTEGRATOR_H
515     +#define DBUS_QT_INTEGRATOR_H
516     +
517     +/* We acknowledge the the dbus API is unstable */
518     +#define DBUS_API_SUBJECT_TO_CHANGE
519     +
520     +#include <qobject.h>
521     +
522     +#include <qintdict.h>
523     +#include <qptrdict.h>
524     +
525     +#include "dbus/dbus.h"
526     +
527     +class QTimer;
528     +
529     +namespace DBusQt
530     +{
531     + class Connection;
532     +
533     + namespace Internal
534     + {
535     + struct Watch;
536     +
537     + class Timeout : public QObject
538     + {
539     + Q_OBJECT
540     + public:
541     + Timeout( QObject *parent, DBusTimeout *t );
542     + public:
543     + void start();
544     + signals:
545     + void timeout( DBusTimeout* );
546     + protected slots:
547     + void slotTimeout();
548     + private:
549     + QTimer *m_timer;
550     + DBusTimeout *m_timeout;
551     + };
552     +
553     + class Integrator : public QObject
554     + {
555     + Q_OBJECT
556     + public:
557     + Integrator( DBusConnection *connection, QObject *parent );
558     + Integrator( DBusServer *server, QObject *parent );
559     +
560     + signals:
561     + void readReady();
562     + void newConnection( Connection* );
563     +
564     + protected slots:
565     + void slotRead( int );
566     + void slotWrite( int );
567     + void slotTimeout( DBusTimeout *timeout );
568     +
569     + public:
570     + void addWatch( DBusWatch* );
571     + void removeWatch( DBusWatch* );
572     +
573     + void addTimeout( DBusTimeout* );
574     + void removeTimeout( DBusTimeout* );
575     +
576     + void handleConnection( DBusConnection* );
577     + private:
578     + QIntDict<Watch> m_watches;
579     + QPtrDict<Timeout> m_timeouts;
580     + DBusConnection *m_connection;
581     + DBusServer *m_server;
582     + };
583     + }
584     +}
585     +
586     +#endif
587     --- kdebase-3.5.5/kioslave/media/mediamanager/Makefile.am.dbus 2005-09-10 10:25:36.000000000 +0200
588     +++ kdebase-3.5.5/kioslave/media/mediamanager/Makefile.am 2006-10-10 17:41:42.000000000 +0200
589     @@ -1,17 +1,22 @@
590     kde_module_LTLIBRARIES = kded_mediamanager.la
591    
592     if include_media_halbackend
593     -HALBACKEND_INCS = $(HAL_INCS) $(DBUS_INCS) $(DBUSQT_INCS)
594     +HALBACKEND_INCS = $(HAL_INCS) $(DBUS_INCS)
595     endif
596    
597     METASOURCES = AUTO
598     INCLUDES = -I$(srcdir)/../libmediacommon -I../libmediacommon $(HALBACKEND_INCS) $(all_includes)
599    
600     +DBUSQT3BINDING_LIB = libdbusqt3.la
601     +libdbusqt3_la_SOURCES = connection.cpp integrator.cpp message.cpp
602     +libdbusqt3_la_LDFLAGS = -avoid-version $(all_libraries) -no-undefined
603     +libdbusqt3_la_LIBADD = $(HAL_LIBS) $(DBUS_LIBS)
604     +
605     if include_media_halbackend
606     HALBACKEND_LIB = libhalbackend.la
607     libhalbackend_la_SOURCES = halbackend.cpp
608     libhalbackend_la_LDFLAGS = -avoid-version $(all_libraries) -no-undefined
609     -libhalbackend_la_LIBADD = $(HAL_LIBS) $(DBUS_LIBS) $(DBUSQT_LIBS)
610     +libhalbackend_la_LIBADD = $(HAL_LIBS) $(DBUS_LIBS) $(DBUSQT3BINDING_LIB)
611     endif
612    
613     if include_media_linuxcdpolling
614     @@ -20,7 +25,7 @@
615     liblinuxcdpolling_la_LDFLAGS = -avoid-version $(all_libraries) -no-undefined
616     endif
617    
618     -noinst_LTLIBRARIES = $(LINUXCDPOLLING_LIB) $(HALBACKEND_LIB)
619     +noinst_LTLIBRARIES = $(LINUXCDPOLLING_LIB) $(HALBACKEND_LIB) $(DBUSQT3BINDING_LIB)
620    
621     kded_mediamanager_la_SOURCES = mediamanager.cpp mediamanager.skel medialist.cpp backendbase.cpp fstabbackend.cpp removablebackend.cpp mediadirnotify.cpp mediadirnotify.skel
622     kded_mediamanager_la_LDFLAGS = $(all_libraries) -module -avoid-version
623     --- /dev/null 2006-10-09 18:32:23.425560750 +0200
624     +++ kdebase-3.5.5/kioslave/media/mediamanager/message.cpp 2006-10-10 17:41:42.000000000 +0200
625     @@ -0,0 +1,551 @@
626     +/* -*- mode: C++; c-file-style: "gnu" -*- */
627     +/* message.cpp: Qt wrapper for DBusMessage
628     + *
629     + * Copyright (C) 2003 Zack Rusin <zack@kde.org>
630     + *
631     + * Licensed under the Academic Free License version 2.0
632     + *
633     + * This program is free software; you can redistribute it and/or modify
634     + * it under the terms of the GNU General Public License as published by
635     + * the Free Software Foundation; either version 2 of the License, or
636     + * (at your option) any later version.
637     + *
638     + * This program is distributed in the hope that it will be useful,
639     + * but WITHOUT ANY WARRANTY; without even the implied warranty of
640     + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
641     + * GNU General Public License for more details.
642     + *
643     + * You should have received a copy of the GNU General Public License
644     + * along with this program; if not, write to the Free Software
645     + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
646     + *
647     + */
648     +#include "message.h"
649     +
650     +#include <qmap.h>
651     +
652     +#include <cstdlib>
653     +
654     +namespace DBusQt {
655     +
656     +struct Message::iterator::IteratorData {
657     + DBusMessageIter *iter;
658     + QVariant var;
659     + bool end;
660     + DBusMessage *mesg;
661     +};
662     +
663     +/**
664     + * Iterator.
665     + */
666     +Message::iterator::iterator()
667     +{
668     + d = new IteratorData;
669     + d->iter = 0; d->end = true;
670     +}
671     +
672     +/**
673     + * Constructs iterator for the message.
674     + * @param msg message whose fields we want to iterate
675     + */
676     +Message::iterator::iterator( DBusMessage* msg )
677     +{
678     + d = new IteratorData;
679     + d->mesg = msg;
680     + d->iter = static_cast<DBusMessageIter *>( malloc( sizeof(DBusMessageIter) ) );
681     + dbus_message_iter_init( d->mesg, d->iter );
682     + if ( !d->iter ) {
683     + qDebug("No iterator??");
684     + }
685     + fillVar();
686     + d->end = false;
687     +}
688     +
689     +/**
690     + * Copy constructor for the iterator.
691     + * @param itr iterator
692     + */
693     +Message::iterator::iterator( const iterator& itr )
694     +{
695     + d = new IteratorData;
696     + d->iter = itr.d->iter;
697     + d->var = itr.d->var;
698     + d->end = itr.d->end;
699     +}
700     +
701     +/**
702     + * Destructor.
703     + */
704     +Message::iterator::~iterator()
705     +{
706     + free( d->iter );
707     + delete d; d=0;
708     +}
709     +
710     +/**
711     + * Creates an iterator equal to the @p itr iterator
712     + * @param itr other iterator
713     + * @return
714     + */
715     +Message::iterator&
716     +Message::iterator::operator=( const iterator& itr )
717     +{
718     + IteratorData *tmp = new IteratorData;
719     + tmp->iter = itr.d->iter;
720     + tmp->var = itr.d->var;
721     + tmp->end = itr.d->end;
722     + delete d; d=tmp;
723     + return *this;
724     +}
725     +
726     +/**
727     + * Returns the constant QVariant held by the iterator.
728     + * @return the constant reference to QVariant held by this iterator
729     + */
730     +const QVariant&
731     +Message::iterator::operator*() const
732     +{
733     + return d->var;
734     +}
735     +
736     +/**
737     + * Returns the QVariant held by the iterator.
738     + * @return reference to QVariant held by this iterator
739     + */
740     +QVariant&
741     +Message::iterator::operator*()
742     +{
743     + return d->var;
744     +}
745     +
746     +/**
747     + * Moves to the next field and return a reference to itself after
748     + * incrementing.
749     + * @return reference to self after incrementing
750     + */
751     +Message::iterator&
752     +Message::iterator::operator++()
753     +{
754     + if ( d->end )
755     + return *this;
756     +
757     + if ( dbus_message_iter_next( d->iter ) ) {
758     + fillVar();
759     + } else {
760     + d->end = true;
761     + d->var = QVariant();
762     + }
763     + return *this;
764     +}
765     +
766     +/**
767     + * Moves to the next field and returns self before incrementing.
768     + * @return self before incrementing
769     + */
770     +Message::iterator
771     +Message::iterator::operator++(int)
772     +{
773     + iterator itr( *this );
774     + operator++();
775     + return itr;
776     +}
777     +
778     +/**
779     + * Compares this iterator to @p it iterator.
780     + * @param it the iterator to which we're comparing this one to
781     + * @return true if they're equal, false otherwise
782     + */
783     +bool
784     +Message::iterator::operator==( const iterator& it )
785     +{
786     + if ( d->end == it.d->end ) {
787     + if ( d->end == true ) {
788     + return true;
789     + } else {
790     + return d->var == it.d->var;
791     + }
792     + } else
793     + return false;
794     +}
795     +
796     +/**
797     + * Compares two iterators.
798     + * @param it The other iterator.
799     + * @return true if two iterators are not equal, false
800     + * otherwise
801     + */
802     +bool
803     +Message::iterator::operator!=( const iterator& it )
804     +{
805     + return !operator==( it );
806     +}
807     +
808     +QVariant Message::iterator::marshallBaseType( DBusMessageIter* i )
809     +{
810     + QVariant ret;
811     + switch (dbus_message_iter_get_arg_type(i)) {
812     + case DBUS_TYPE_INT32:
813     + {
814     + dbus_int32_t v;
815     + dbus_message_iter_get_basic (i, &v);
816     + ret = QVariant( v );
817     + }
818     + break;
819     + case DBUS_TYPE_UINT32:
820     + {
821     + dbus_uint32_t v;
822     + dbus_message_iter_get_basic (i, &v);
823     + ret = QVariant( v );
824     + }
825     + break;
826     + case DBUS_TYPE_DOUBLE:
827     + {
828     + double v;
829     + dbus_message_iter_get_basic (i, &v);
830     + ret = QVariant( v );
831     + }
832     + break;
833     + case DBUS_TYPE_STRING:
834     + {
835     + const char *v;
836     + dbus_message_iter_get_basic (i, &v);
837     + ret = QVariant( v );
838     + }
839     + break;
840     + default:
841     + ret = QVariant();
842     + break;
843     + }
844     + return ret;
845     +}
846     +
847     +/**
848     + * Fills QVariant based on what current DBusMessageIter helds.
849     + */
850     +void
851     +Message::iterator::fillVar()
852     +{
853     + switch ( dbus_message_iter_get_arg_type( d->iter ) ) {
854     + case DBUS_TYPE_INT32:
855     + case DBUS_TYPE_UINT32:
856     + case DBUS_TYPE_DOUBLE:
857     + case DBUS_TYPE_STRING:
858     + d->var = marshallBaseType( d->iter );
859     + break;
860     + case DBUS_TYPE_ARRAY: {
861     + switch ( dbus_message_iter_get_element_type( d->iter ) ) {
862     + case DBUS_TYPE_STRING: {
863     + QStringList tempList;
864     + DBusMessageIter sub;
865     + dbus_message_iter_recurse (d->iter, &sub);
866     + while (dbus_message_iter_get_arg_type (&sub) != DBUS_TYPE_INVALID)
867     + {
868     + const char *v;
869     + dbus_message_iter_get_basic (&sub, &v);
870     + tempList.append( QString( v ) );
871     + dbus_message_iter_next (&sub);
872     + }
873     + d->var = QVariant( tempList );
874     + break;
875     + }
876     + default:
877     + qDebug( "Array of type not implemented" );
878     + d->var = QVariant();
879     + break;
880     + }
881     + break;
882     + }
883     +#if 0
884     + /* DICT is gone for now, but expected to be reintroduced, or else
885     + * reintroduced as a flag on the introspection data that can
886     + * apply to array of struct of two fields
887     + */
888     + case DBUS_TYPE_DICT: {
889     + qDebug( "Got a hash!" );
890     + QMap<QString, QVariant> tempMap;
891     + DBusMessageIter dictIter;
892     + dbus_message_iter_init_dict_iterator( d->iter, &dictIter );
893     + do {
894     + char *key = dbus_message_iter_get_dict_key( &dictIter );
895     + tempMap[key] = marshallBaseType( &dictIter );
896     + dbus_free( key );
897     + dbus_message_iter_next( &dictIter );
898     + } while( dbus_message_iter_has_next( &dictIter ) );
899     + d->var = QVariant( tempMap );
900     + break;
901     + qDebug( "Hash/Dict type not implemented" );
902     + d->var = QVariant();
903     + break;
904     + }
905     +#endif
906     + default:
907     + qDebug( "not implemented" );
908     + d->var = QVariant();
909     + break;
910     + }
911     +}
912     +
913     +/**
914     + * Returns a QVariant help by this iterator.
915     + * @return QVariant held by this iterator
916     + */
917     +QVariant
918     +Message::iterator::var() const
919     +{
920     + return d->var;
921     +}
922     +
923     +struct Message::Private {
924     + DBusMessage *msg;
925     +};
926     +
927     +Message::Message( DBusMessage *m )
928     +{
929     + d = new Private;
930     + d->msg = m;
931     +}
932     +
933     +/**
934     + *
935     + */
936     +Message::Message( int messageType )
937     +{
938     + d = new Private;
939     + d->msg = dbus_message_new( messageType );
940     +}
941     +
942     +/**
943     + * Constructs a new Message with the given service and name.
944     + * @param service service service that the message should be sent to
945     + * @param name name of the message
946     + */
947     +Message::Message( const QString& service, const QString& path,
948     + const QString& interface, const QString& method )
949     +{
950     + d = new Private;
951     + d->msg = dbus_message_new_method_call( service.latin1(), path.latin1(),
952     + interface.latin1(), method.latin1() );
953     +}
954     +
955     +/**
956     + * Constructs a message that is a reply to some other
957     + * message.
958     + * @param name the name of the message
959     + * @param replayingTo original_message the message which the created
960     + * message is a reply to.
961     + */
962     +Message::Message( const Message& replayingTo )
963     +{
964     + d = new Private;
965     + d->msg = dbus_message_new_method_return( replayingTo.d->msg );
966     +}
967     +
968     +Message:: Message( const QString& path, const QString& interface,
969     + const QString& name )
970     +{
971     + d = new Private;
972     + d->msg = dbus_message_new_signal( path.ascii(), interface.ascii(),
973     + name.ascii() );
974     +}
975     +
976     +Message::Message( const Message& replayingTo, const QString& errorName,
977     + const QString& errorMessage )
978     +{
979     + d = new Private;
980     + d->msg = dbus_message_new_error( replayingTo.d->msg, errorName.utf8(),
981     + errorMessage.utf8() );
982     +}
983     +
984     +Message Message::operator=( const Message& other )
985     +{
986     + //FIXME: ref the other.d->msg instead of copying it?
987     +}
988     +/**
989     + * Destructs message.
990     + */
991     +Message::~Message()
992     +{
993     + if ( d->msg ) {
994     + dbus_message_unref( d->msg );
995     + }
996     + delete d; d=0;
997     +}
998     +
999     +int Message::type() const
1000     +{
1001     + return dbus_message_get_type( d->msg );
1002     +}
1003     +
1004     +void Message::setPath( const QString& path )
1005     +{
1006     + dbus_message_set_path( d->msg, path.ascii() );
1007     +}
1008     +
1009     +QString Message::path() const
1010     +{
1011     + return dbus_message_get_path( d->msg );
1012     +}
1013     +
1014     +void Message::setInterface( const QString& iface )
1015     +{
1016     + dbus_message_set_interface( d->msg, iface.ascii() );
1017     +}
1018     +
1019     +QString Message::interface() const
1020     +{
1021     + return dbus_message_get_interface( d->msg );
1022     +}
1023     +
1024     +void Message::setMember( const QString& member )
1025     +{
1026     + dbus_message_set_member( d->msg, member.ascii() );
1027     +}
1028     +
1029     +QString Message::member() const
1030     +{
1031     + return dbus_message_get_member( d->msg );
1032     +}
1033     +
1034     +QString Message::errorName() const
1035     +{
1036     + return dbus_message_get_error_name( d->msg );
1037     +}
1038     +
1039     +QString Message::destination() const
1040     +{
1041     + return dbus_message_get_destination( d->msg );
1042     +}
1043     +
1044     +/**
1045     + * Sets the message sender.
1046     + * @param sender the sender
1047     + * @return false if unsuccessful
1048     + */
1049     +bool
1050     +Message::setSender( const QString& sender )
1051     +{
1052     + return dbus_message_set_sender( d->msg, sender.latin1() );
1053     +}
1054     +
1055     +/**
1056     + * Returns sender of this message.
1057     + * @return sender
1058     + */
1059     +QString
1060     +Message::sender() const
1061     +{
1062     + return dbus_message_get_sender( d->msg );
1063     +}
1064     +
1065     +QString Message::signature() const
1066     +{
1067     + return dbus_message_get_signature( d->msg );
1068     +}
1069     +
1070     +
1071     +/**
1072     + * Returns the starting iterator for the fields of this
1073     + * message.
1074     + * @return starting iterator
1075     + */
1076     +Message::iterator
1077     +Message::begin() const
1078     +{
1079     + return iterator( d->msg );
1080     +}
1081     +
1082     +/**
1083     + * Returns the ending iterator for the fields of this
1084     + * message.
1085     + * @return ending iterator
1086     + */
1087     +Message::iterator
1088     +Message::end() const
1089     +{
1090     + return iterator();
1091     +}
1092     +
1093     +/**
1094     + * Returns the field at position @p i
1095     + * @param i position of the wanted field
1096     + * @return QVariant at position @p i or an empty QVariant
1097     + */
1098     +QVariant
1099     +Message::at( int i )
1100     +{
1101     + iterator itr( d->msg );
1102     +
1103     + while ( i-- ) {
1104     + if ( itr == end() )
1105     + return QVariant();//nothing there
1106     + ++itr;
1107     + }
1108     + return *itr;
1109     +}
1110     +
1111     +/**
1112     + * The underlying DBusMessage of this class.
1113     + * @return DBusMessage pointer.
1114     + */
1115     +DBusMessage*
1116     +Message::message() const
1117     +{
1118     + return d->msg;
1119     +}
1120     +
1121     +Message& Message::operator<<( bool b )
1122     +{
1123     + const dbus_bool_t right_size_bool = b;
1124     + dbus_message_append_args( d->msg, DBUS_TYPE_BOOLEAN, &right_size_bool,
1125     + DBUS_TYPE_INVALID );
1126     +}
1127     +
1128     +Message& Message::operator<<( Q_INT8 byte )
1129     +{
1130     + dbus_message_append_args( d->msg, DBUS_TYPE_BYTE, &byte,
1131     + DBUS_TYPE_INVALID );
1132     +}
1133     +
1134     +Message& Message::operator<<( Q_INT32 num )
1135     +{
1136     + dbus_message_append_args( d->msg, DBUS_TYPE_INT32, &num,
1137     + DBUS_TYPE_INVALID );
1138     +}
1139     +
1140     +Message& Message::operator<<( Q_UINT32 num )
1141     +{
1142     + dbus_message_append_args( d->msg, DBUS_TYPE_UINT32, &num,
1143     + DBUS_TYPE_INVALID );
1144     +}
1145     +
1146     +Message& Message::operator<<( Q_INT64 num )
1147     +{
1148     + dbus_message_append_args( d->msg, DBUS_TYPE_INT64, &num,
1149     + DBUS_TYPE_INVALID );
1150     +}
1151     +
1152     +Message& Message::operator<<( Q_UINT64 num )
1153     +{
1154     + dbus_message_append_args( d->msg, DBUS_TYPE_UINT64, &num,
1155     + DBUS_TYPE_INVALID );
1156     +}
1157     +
1158     +Message& Message::operator<<( double num )
1159     +{
1160     + dbus_message_append_args( d->msg, DBUS_TYPE_DOUBLE, &num,
1161     + DBUS_TYPE_INVALID );
1162     +}
1163     +
1164     +Message& Message::operator<<( const QString& str )
1165     +{
1166     + const char *u = str.utf8();
1167     + dbus_message_append_args( d->msg, DBUS_TYPE_STRING, &u,
1168     + DBUS_TYPE_INVALID );
1169     +}
1170     +
1171     +Message& Message::operator<<( const QVariant& custom )
1172     +{
1173     + //FIXME: imeplement
1174     +}
1175     +
1176     +}
1177     --- /dev/null 2006-10-09 18:32:23.425560750 +0200
1178     +++ kdebase-3.5.5/kioslave/media/mediamanager/integrator.cpp 2006-10-10 17:41:42.000000000 +0200
1179     @@ -0,0 +1,244 @@
1180     +// -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; -*-
1181     +/* integrator.h: integrates D-BUS into Qt event loop
1182     + *
1183     + * Copyright (C) 2003 Zack Rusin <zack@kde.org>
1184     + *
1185     + * Licensed under the Academic Free License version 2.0
1186     + *
1187     + * This program is free software; you can redistribute it and/or modify
1188     + * it under the terms of the GNU General Public License as published by
1189     + * the Free Software Foundation; either version 2 of the License, or
1190     + * (at your option) any later version.
1191     + *
1192     + * This program is distributed in the hope that it will be useful,
1193     + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1194     + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1195     + * GNU General Public License for more details.
1196     + *
1197     + * You should have received a copy of the GNU General Public License
1198     + * along with this program; if not, write to the Free Software
1199     + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
1200     + *
1201     + */
1202     +#include "integrator.h"
1203     +#include "connection.h"
1204     +
1205     +#include <qtimer.h>
1206     +#include <qsocketnotifier.h>
1207     +#include <qintdict.h>
1208     +#include <qptrlist.h>
1209     +
1210     +namespace DBusQt
1211     +{
1212     +namespace Internal {
1213     +
1214     +struct Watch {
1215     + Watch(): readSocket( 0 ), writeSocket( 0 ) { }
1216     +
1217     + DBusWatch *watch;
1218     + QSocketNotifier *readSocket;
1219     + QSocketNotifier *writeSocket;
1220     +};
1221     +
1222     +//////////////////////////////////////////////////////////////
1223     +dbus_bool_t dbusAddWatch( DBusWatch *watch, void *data )
1224     +{
1225     + Integrator *con = static_cast<Integrator*>( data );
1226     + con->addWatch( watch );
1227     + return true;
1228     +}
1229     +void dbusRemoveWatch( DBusWatch *watch, void *data )
1230     +{
1231     + Integrator *con = static_cast<Integrator*>( data );
1232     + con->removeWatch( watch );
1233     +}
1234     +
1235     +void dbusToggleWatch( DBusWatch *watch, void *data )
1236     +{
1237     + Integrator *itg = static_cast<Integrator*>( data );
1238     + if ( dbus_watch_get_enabled( watch ) )
1239     + itg->addWatch( watch );
1240     + else
1241     + itg->removeWatch( watch );
1242     +}
1243     +
1244     +dbus_bool_t dbusAddTimeout( DBusTimeout *timeout, void *data )
1245     +{
1246     + if ( !dbus_timeout_get_enabled(timeout) )
1247     + return true;
1248     +
1249     + Integrator *itg = static_cast<Integrator*>( data );
1250     + itg->addTimeout( timeout );
1251     + return true;
1252     +}
1253     +
1254     +void dbusRemoveTimeout( DBusTimeout *timeout, void *data )
1255     +{
1256     + Integrator *itg = static_cast<Integrator*>( data );
1257     + itg->removeTimeout( timeout );
1258     +}
1259     +
1260     +void dbusToggleTimeout( DBusTimeout *timeout, void *data )
1261     +{
1262     + Integrator *itg = static_cast<Integrator*>( data );
1263     +
1264     + if ( dbus_timeout_get_enabled( timeout ) )
1265     + itg->addTimeout( timeout );
1266     + else
1267     + itg->removeTimeout( timeout );
1268     +}
1269     +
1270     +void dbusWakeupMain( void* )
1271     +{
1272     +}
1273     +
1274     +void dbusNewConnection( DBusServer *server,
1275     + DBusConnection *new_connection,
1276     + void *data )
1277     +{
1278     + Integrator *itg = static_cast<Integrator*>( data );
1279     + itg->handleConnection( new_connection );
1280     +}
1281     +/////////////////////////////////////////////////////////////
1282     +
1283     +Timeout::Timeout( QObject *parent, DBusTimeout *t )
1284     + : QObject( parent ), m_timeout( t )
1285     +{
1286     + m_timer = new QTimer( this );
1287     + connect( m_timer, SIGNAL(timeout()),
1288     + SLOT(slotTimeout()) );
1289     +}
1290     +
1291     +void Timeout::slotTimeout()
1292     +{
1293     + emit timeout( m_timeout );
1294     +}
1295     +
1296     +void Timeout::start()
1297     +{
1298     + m_timer->start( dbus_timeout_get_interval( m_timeout ) );
1299     +}
1300     +
1301     +Integrator::Integrator( DBusConnection *conn, QObject *parent )
1302     + : QObject( parent ), m_connection( conn )
1303     +{
1304     + m_timeouts.setAutoDelete( true );
1305     +
1306     + dbus_connection_set_watch_functions( m_connection,
1307     + dbusAddWatch,
1308     + dbusRemoveWatch,
1309     + dbusToggleWatch,
1310     + this, 0 );
1311     + dbus_connection_set_timeout_functions( m_connection,
1312     + dbusAddTimeout,
1313     + dbusRemoveTimeout,
1314     + dbusToggleTimeout,
1315     + this, 0 );
1316     + dbus_connection_set_wakeup_main_function( m_connection,
1317     + dbusWakeupMain,
1318     + this, 0 );
1319     +}
1320     +
1321     +Integrator::Integrator( DBusServer *server, QObject *parent )
1322     + : QObject( parent ), m_server( server )
1323     +{
1324     + m_connection = reinterpret_cast<DBusConnection*>( m_server );
1325     + m_timeouts.setAutoDelete( true );
1326     +
1327     + dbus_server_set_watch_functions( m_server,
1328     + dbusAddWatch,
1329     + dbusRemoveWatch,
1330     + dbusToggleWatch,
1331     + this, 0 );
1332     + dbus_server_set_timeout_functions( m_server,
1333     + dbusAddTimeout,
1334     + dbusRemoveTimeout,
1335     + dbusToggleTimeout,
1336     + this, 0 );
1337     + dbus_server_set_new_connection_function( m_server,
1338     + dbusNewConnection,
1339     + this, 0 );
1340     +}
1341     +
1342     +void Integrator::slotRead( int fd )
1343     +{
1344     + QIntDictIterator<Watch> it( m_watches );
1345     + for ( ; it.current(); ++it )
1346     + dbus_watch_handle ( it.current()->watch, DBUS_WATCH_READABLE );
1347     +
1348     + emit readReady();
1349     +}
1350     +
1351     +void Integrator::slotWrite( int fd )
1352     +{
1353     + QIntDictIterator<Watch> it( m_watches );
1354     + for ( ; it.current(); ++it )
1355     + dbus_watch_handle ( it.current()->watch, DBUS_WATCH_WRITABLE );
1356     +}
1357     +
1358     +void Integrator::slotTimeout( DBusTimeout *timeout )
1359     +{
1360     + dbus_timeout_handle( timeout );
1361     +}
1362     +
1363     +void Integrator::addWatch( DBusWatch *watch )
1364     +{
1365     + if ( !dbus_watch_get_enabled( watch ) )
1366     + return;
1367     +
1368     + Watch *qtwatch = new Watch;
1369     + qtwatch->watch = watch;
1370     +
1371     + int flags = dbus_watch_get_flags( watch );
1372     + int fd = dbus_watch_get_fd( watch );
1373     +
1374     + if ( flags & DBUS_WATCH_READABLE ) {
1375     + qtwatch->readSocket = new QSocketNotifier( fd, QSocketNotifier::Read, this );
1376     + QObject::connect( qtwatch->readSocket, SIGNAL(activated(int)), SLOT(slotRead(int)) );
1377     + }
1378     +
1379     + if (flags & DBUS_WATCH_WRITABLE) {
1380     + qtwatch->writeSocket = new QSocketNotifier( fd, QSocketNotifier::Write, this );
1381     + QObject::connect( qtwatch->writeSocket, SIGNAL(activated(int)), SLOT(slotWrite(int)) );
1382     + }
1383     +
1384     + m_watches.insert( fd, qtwatch );
1385     +}
1386     +
1387     +void Integrator::removeWatch( DBusWatch *watch )
1388     +{
1389     + int key = dbus_watch_get_fd( watch );
1390     +
1391     + Watch *qtwatch = m_watches.take( key );
1392     +
1393     + if ( qtwatch ) {
1394     + delete qtwatch->readSocket; qtwatch->readSocket = 0;
1395     + delete qtwatch->writeSocket; qtwatch->writeSocket = 0;
1396     + delete qtwatch;
1397     + }
1398     +}
1399     +
1400     +void Integrator::addTimeout( DBusTimeout *timeout )
1401     +{
1402     + Timeout *mt = new Timeout( this, timeout );
1403     + m_timeouts.insert( timeout, mt );
1404     + connect( mt, SIGNAL(timeout(DBusTimeout*)),
1405     + SLOT(slotTimeout(DBusTimeout*)) );
1406     + mt->start();
1407     +}
1408     +
1409     +void Integrator::removeTimeout( DBusTimeout *timeout )
1410     +{
1411     + m_timeouts.remove( timeout );
1412     +}
1413     +
1414     +void Integrator::handleConnection( DBusConnection *c )
1415     +{
1416     + Connection *con = new Connection( c, this );
1417     + emit newConnection( con );
1418     +}
1419     +
1420     +}//end namespace Internal
1421     +}//end namespace DBusQt
1422     +
1423     +#include "integrator.moc"