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


//                 Generated by preSip
//            module kdecore  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.,
// 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.


class KStartupInfo : QObject
{
%TypeHeaderCode
#include <kstartupinfo.h>
%End


public:

%If ( KDE_3_2_0 -  )
    static void          disableAutoAppStartedSending (bool = 1);
%End

    static void          appStarted ();

%If ( KDE_3_2_0 -  )
    static void          appStarted (const QCString&);
    static void          setNewStartupId (QWidget*, const QCString&);
    static void          silenceStartup (bool);

%If ( KDE_3_3_0 -  )
    static QCString      createNewStartupId ();
%End

%End


%If ( KDE_3_1_1 -  )

    enum 
    {
        CleanOnCantDetect, 
        DisableKWinModule, 
        AnnounceSilenceChanges
    };

%End

                         KStartupInfo (bool, QObject* /TransferThis/ = 0, const char* = 0);
    static bool          sendStartup (const KStartupInfoId&, const KStartupInfoData&);
//ig     static bool          sendStartupX (Display*, const KStartupInfoId&, const KStartupInfoData&);
    static bool          sendChange (const KStartupInfoId&, const KStartupInfoData&);
//ig     static bool          sendChangeX (Display*, const KStartupInfoId&, const KStartupInfoData&);
    static bool          sendFinish (const KStartupInfoId&);
//ig     static bool          sendFinishX (Display*, const KStartupInfoId&);
    static bool          sendFinish (const KStartupInfoId&, const KStartupInfoData&);
//ig     static bool          sendFinishX (Display*, const KStartupInfoId&, const KStartupInfoData&);
    static KStartupInfoId currentStartupIdEnv ();
    static void          resetStartupEnv ();

    enum startup_t
    {
        NoMatch, 
        Match, 
        CantDetect
    };

    KStartupInfo::startup_t checkStartup (WId);
    KStartupInfo::startup_t checkStartup (WId, KStartupInfoId&);
    KStartupInfo::startup_t checkStartup (WId, KStartupInfoData&);
    KStartupInfo::startup_t checkStartup (WId, KStartupInfoId&, KStartupInfoData&);
    void                 setTimeout (uint);
    static void          setWindowStartupId (WId, const QCString&);
    static QCString      windowStartupId (WId);

%If ( KDE_3_2_0 -  )
    static void          handleAutoAppStartedSending ();
%End


signals:
    void                 gotNewStartup (const KStartupInfoId&, const KStartupInfoData&);
    void                 gotStartupChange (const KStartupInfoId&, const KStartupInfoData&);
    void                 gotRemoveStartup (const KStartupInfoId&, const KStartupInfoData&);

protected:
    virtual void         customEvent (QCustomEvent*);

};  // class KStartupInfo


class KStartupInfoId
{
%TypeHeaderCode
#include <kstartupinfo.h>
%End


public:

%If ( KDE_3_1_4 -  )
    bool                 operator == (const KStartupInfoId&) const;
    bool                 operator != (const KStartupInfoId&) const;
%End

    bool                 none () const;
    void                 initId (const QCString& = "");
    const QCString&      id () const;

%If ( KDE_3_3_0 -  )
    ulong                timestamp () const;
%End

    bool                 setupStartupEnv () const;
                         KStartupInfoId ();
                         KStartupInfoId (const KStartupInfoId&);

%If ( KDE_3_1_4 -  )
    bool                 operator < (const KStartupInfoId&) const;
%End


private:
                         KStartupInfoId (const QString&);

};  // class KStartupInfoId


class KStartupInfoData
{
%TypeHeaderCode
#include <kstartupinfo.h>
%End


public:
    void                 setBin (const QString&);
    const QString&       bin () const;
    void                 setName (const QString&);
    const QString&       findName () const;
    const QString&       name () const;

%If ( KDE_3_2_0 -  )
    void                 setDescription (const QString&);
    const QString&       findDescription () const;
    const QString&       description () const;
%End

    void                 setIcon (const QString&);
    const QString&       findIcon () const;
    const QString&       icon () const;
    void                 setDesktop (int);
    int                  desktop () const;
    void                 setWMClass (const QCString&);
    const QCString       findWMClass () const;
    const QCString&      WMClass () const;
    void                 addPid (pid_t);
    const QValueList<int>& pids () const;
    bool                 is_pid (pid_t) const;
    void                 setHostname (const QCString& = QCString ());
    const QCString&      hostname () const;

%If ( KDE_3_1_1 -  )

    enum TriState
    {
        Yes, 
        No, 
        Unknown
    };

    void                 setSilent (KStartupInfoData::TriState);
    KStartupInfoData::TriState silent () const;

%If ( KDE_3_2_0 -  )
    void                 setTimestamp (ulong);
    ulong                timestamp () const;
    int                  screen () const;
    void                 setScreen (int);
%End

%End

    void                 update (const KStartupInfoData&);
                         KStartupInfoData ();
                         KStartupInfoData (const KStartupInfoData&);

private:
                         KStartupInfoData (const QString&);

};  // class KStartupInfoData

/*%MappedType QValueList<pid_t>
//converts a Python list of long
{
%TypeHeaderCode
#include <qvaluelist.h>
%End

%ConvertFromTypeCode
    // Handle no list.

    if (!sipCpp)
        return PyList_New(0);

    // Convert to a Python list of long.

    PyObject *l;

    // Create the list.

    if ((l = PyList_New(sipCpp -> count())) == NULL)
        return NULL;

    // Get it.

    for (uint i = 0; i < sipCpp -> count(); ++i)
        if (PyList_SetItem(l,i,PyLong_FromLong((long)(*sipCpp)[i])) < 0)
        {
            Py_DECREF(l);

            return NULL;
        }

    return l;
%End

%ConvertToTypeCode
    // Convert a Python list of long to a QValueList<long> on the heap.

    if (sipIsErr == NULL)
        return PyList_Check(sipPy);

    if (sipPy == Py_None)
    {
        *sipCppPtr = NULL;

        return 0;
    }

    QValueList<pid_t> *qvl = new QValueList<pid_t>;

    PyErr_Clear();

    for (int i = 0; i < PyList_GET_SIZE(sipPy); ++i)
    {
        qvl -> append((pid_t)PyLong_AsLong(PyList_GET_ITEM(sipPy,i)));

        if (PyErr_Occurred() != NULL)
        {
            delete qvl;
            *sipIsErr = 1;

            return 0;
        }
    }

    *sipCppPtr = qvl;

    return 1;
%End
};*/


