//
//     Copyright 2006 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2005 Jim Bublitz and/or Phil Thompson
//     may also apply


//                 Generated by preSip
//            module dcop  version KDE 3.5.3


// This software is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of
// the License, or (at your option) any later version.
//
// This software 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 General Public License for more details.
//
// You should have received a copy of the GNU General Public
// License along with this library; see the file COPYING.
// If not, write to the Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.


class DCOPClientTransaction;

class DCOPClient : QObject
{
%TypeHeaderCode
#include <dcopclient.h>
%End


public:
                         DCOPClient ();
    static void          setServerAddress (const QCString&);
    bool                 attach ();
    void                 bindToApp ();
    bool                 detach ();
    bool                 isAttached () const;
    bool                 isAttachedToForeignServer () const;
    bool                 acceptCalls () const;
    void                 setAcceptCalls (bool);

%If ( KDE_3_0_3 -  )
    bool                 qtBridgeEnabled ();
    void                 setQtBridgeEnabled (bool);
%End

    QCString             registerAs (const QCString&, bool = 1);
    bool                 isRegistered () const;
    QCString             appId () const;
    int                  socket () const;
    void                 suspend ();
    void                 resume ();

%If ( KDE_3_1_0 -  )
    bool                 isSuspended () const;
%End

    bool                 send (const QCString&, const QCString&, const QCString&, const QByteArray&);
    bool                 send (const QCString&, const QCString&, const QCString&, const QString&);

%If ( KDE_3_2_0 -  )
    bool                 call (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QByteArray& /Out/, bool, int);
%End

    bool                 call (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QByteArray& /Out/, bool = 0);

%If ( KDE_3_3_0 -  )
    int                  callAsync (const QCString&, const QCString&, const QCString&, const QByteArray&, QObject*, const char*);
%End


%If ( KDE_3_2_0 -  )
    bool                 findObject (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QCString& /Out/, bool, int);
%End

    bool                 findObject (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QCString& /Out/, bool = 0);
    void                 emitDCOPSignal (const QCString&, const QCString&, const QByteArray&);
    void                 emitDCOPSignal (const QCString&, const QByteArray&);
    bool                 connectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&, const QCString&, bool);
    bool                 connectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&, bool);
    bool                 disconnectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&, const QCString&);
    bool                 disconnectDCOPSignal (const QCString&, const QCString&, const QCString&, const QCString&);
    virtual bool         process (const QCString&, const QByteArray&, QCString&, QByteArray&);
    DCOPClientTransaction* beginTransaction ();
    void                 endTransaction (DCOPClientTransaction*, QCString&, QByteArray&);
    Q_INT32              transactionId ();
    bool                 isApplicationRegistered (const QCString&);
    QCStringList         registeredApplications ();
    QCStringList         remoteObjects (const QCString&, bool* = 0);
    QCStringList         remoteInterfaces (const QCString&, const QCString&, bool* = 0);
    QCStringList         remoteFunctions (const QCString&, const QCString&, bool* = 0);
    bool                 receive (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QByteArray& /Out/);
    bool                 find (const QCString&, const QCString&, const QCString&, const QByteArray&, QCString& /Out/, QByteArray& /Out/);
    static QCString      normalizeFunctionSignature (const QCString&);
    QCString             senderId () const;
    void                 setDefaultObject (const QCString&);
    QCString             defaultObject () const;
    void                 setNotifications (bool);
    void                 setDaemonMode (bool);

%If ( KDE_3_2_0 -  )
    void                 setPriorityCall (bool);
%End

    static DCOPClient*   mainClient ();
    static void          setMainClient (DCOPClient*);

%If ( KDE_3_2_0 -  )
    static DCOPClient*   findLocalClient (const QCString&);
%End

    static void          emergencyClose ();
    static const char*   postMortemSender ();
    static const char*   postMortemObject ();
    static const char*   postMortemFunction ();
    static QCString      dcopServerFile (const QCString& = 0);
    static QCString      dcopServerFileOld (const QCString& = 0);

%If ( KDE_3_2_0 -  )
    static QCString      iceauthPath ();
%End


signals:
    void                 applicationRegistered (const QCString&);
    void                 applicationRemoved (const QCString&);
    void                 attachFailed (const QString&);
    void                 blockUserInput (bool);

%If ( KDE_3_2_0 -  )
    void                 callBack (int, const QCString&, const QByteArray&);
%End


protected slots:
    void                 processSocketData (int);

public:

%If ( KDE_3_2_3 -  )
//ig     void                 handleAsyncReply (DCOPClient::ReplyStruct*);
%End


protected:
//igx     virtual void         virtual_hook (int, void*);

public:

%If ( KDE_3_2_0 - KDE_3_3_0 )
    int                  callAsync (const QCString&, const QCString&, const QCString&, const QByteArray&, SIP_RXOBJ_CON, SIP_SLOT_CON (int, const QCString&, const QByteArray&));

//force
%ConvertToSubClassCode
    // The table of Python class objects indexed by their names.  The table
    // must be sorted by name.

    static sipStringTypeClassMap map[] = {
        {sipName_DCOPClient,              &sipClass_DCOPClient},
    };

    sipClass = sipMapStringToClass(sipCpp -> className(),map,sizeof (map)/sizeof (map[0]));
%End
//end
%End


};  // class DCOPClient

typedef QValueList<QCString> QCStringList;
