From e8c4af7880a261378ee3efea06e365de66c166cf Mon Sep 17 00:00:00 2001 From: Zack Rusin Date: Wed, 25 Dec 2002 00:12:15 +0000 Subject: Starting the work on Qt integration. --- qt/dbus-qt.h | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 qt/dbus-qt.h (limited to 'qt/dbus-qt.h') diff --git a/qt/dbus-qt.h b/qt/dbus-qt.h new file mode 100644 index 00000000..aaa343fe --- /dev/null +++ b/qt/dbus-qt.h @@ -0,0 +1,80 @@ +/* -*- mode: C; c-file-style: "gnu" -*- */ +/* + * dbus-qt.h Qt integration + * + * Copyright (C) 2002 DBus Developers + * + * Licensed under the Academic Free License version 1.2 + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA + * 02111-1307 USA + * + */ +#ifndef DBUS_QT_H +#define DBUS_QT_H + +#include +/* + * Two approaches - one presented below a DBusQtConnection + * object which is a Qt wrapper around DBusConnection +class DBusQtConnection : public QObject { + Q_OBJECT +public: + DBusQtConnection( QObject *parent=0, const char *address=0 ); + + bool open( const char *address ); + bool isConnected() const; + int getNumberOfMessages() const; + +public slots: + void disconnect(); + void flush(); + void sendMessage( DBusMessage *message ); + +signals: + void message( DBusMessage* message ); + void error( const char* error ); +private: + DBusConnection *mConnection; + QSocketNotifier *mReadNotifier; + QSocketNotifier *mWriteNotifier; +}; + * + * Second approach is to have a static Qt dispatcher like: +class DBusQtNotifier : public QObject { + Q_OBJECT +public: + static DBusQtNotifier* dbus_qt_notifier (); + void addConnection (DBusConnection* connection); +signals: + void message (DBusConnection* connection, DBusMessage* message); + +private: + DBusQtNotifier (QObject *parent); +private slots: + void processNotifiers( int socket ); +private: + //implemnted in terms of QSocketNotifiers + QAsciiDict mReadNotifiers; + QAsciiDict mWriteNotifiers; +}; + * + * First one gives us a full wrapper for DBusConnection (the Qt way), + * the other exposes DBusConnection, so would be easier to maintain + * and keep up while DBus evolves. + * + */ + +#endif /* DBUS_QT_H */ -- cgit