//
//     Copyright 2008 Jim Bublitz <jbublitz@nwinternet.com>
//     Earlier copyrights 1998 - 2007 Jim Bublitz also apply

//                 Generated by twine

// This file is part of PyKDE4.

// PyKDE4 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.

// PyKDE4 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 program.  If not, see <http://www.gnu.org/licenses/>.


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


public:
    static void             disableAutoAppStartedSending (bool disable = 1);
    static void             appStarted ();
    static void             appStarted (const QByteArray& startup_id);
    static void             setNewStartupId (QWidget* window, const QByteArray& startup_id);
    static void             silenceStartup (bool silence);
    static QByteArray       createNewStartupId ();

    enum 
    {
        CleanOnCantDetect,
        DisableKWinModule,
        AnnounceSilenceChanges
    };

    explicit                KStartupInfo (int flags, QObject* parent /TransferThis/ = 0);
//ig     explicit           KStartupInfo (bool clean_on_cantdetect, QObject* parent /TransferThis/ = 0);
    static bool             sendStartup (const KStartupInfoId& id, const KStartupInfoData& data);
//ig     static bool        sendStartupX (Display* dpy, const KStartupInfoId& id, const KStartupInfoData& data);
    static bool             sendChange (const KStartupInfoId& id, const KStartupInfoData& data);
//ig     static bool        sendChangeX (Display* dpy, const KStartupInfoId& id, const KStartupInfoData& data);
    static bool             sendFinish (const KStartupInfoId& id);
//ig     static bool        sendFinishX (Display* dpy, const KStartupInfoId& id);
    static bool             sendFinish (const KStartupInfoId& id, const KStartupInfoData& data);
//ig     static bool        sendFinishX (Display* dpy, const KStartupInfoId& id, const KStartupInfoData& data);
    static KStartupInfoId   currentStartupIdEnv ();
    static void             resetStartupEnv ();

    enum startup_t
    {
        NoMatch,
        Match,
        CantDetect
    };

    KStartupInfo::startup_t  checkStartup (WId w);
    KStartupInfo::startup_t  checkStartup (WId w, KStartupInfoId& id);
    KStartupInfo::startup_t  checkStartup (WId w, KStartupInfoData& data);
    KStartupInfo::startup_t  checkStartup (WId w, KStartupInfoId& id, KStartupInfoData& data);
    void                    setTimeout (unsigned int secs);
    static void             setWindowStartupId (WId window, const QByteArray& id);
    static QByteArray       windowStartupId (WId w);
    static void             handleAutoAppStartedSending ();

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

protected:
    virtual void            customEvent (QEvent* e_P);

private:
                            KStartupInfo (const KStartupInfo&);
};   // KStartupInfo


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


public:
    bool                    operator == (const KStartupInfoId& id) const;
    bool                    operator != (const KStartupInfoId& id) const;
    bool                    none () const;
    void                    initId (const QByteArray& id = "");
    const QByteArray&       id () const;
    unsigned long           timestamp () const;
    bool                    setupStartupEnv () const;
                            KStartupInfoId ();
                            KStartupInfoId (const KStartupInfoId& data);
    bool                    operator < (const KStartupInfoId& id) const;

private:
    explicit                KStartupInfoId (const QString& txt);

//force

public:
    typedef int pid_t;

//end

};   // KStartupInfoId


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


public:
    void                    setBin (const QString& bin);
    const QString&          bin () const;
    void                    setName (const QString& name);
    const QString&          findName () const;
    const QString&          name () const;
    void                    setDescription (const QString& descr);
    const QString&          findDescription () const;
    const QString&          description () const;
    void                    setIcon (const QString& icon);
    const QString&          findIcon () const;
    const QString&          icon () const;
    void                    setDesktop (int desktop);
    int                     desktop () const;
    void                    setWMClass (const QByteArray& wmclass);
    const QByteArray        findWMClass () const;
    QByteArray              WMClass () const;
    void                    addPid (pid_t pid);
//ig     QList<pid_t>       pids () const;
    bool                    is_pid (pid_t pid) const;
    void                    setHostname (const QByteArray& hostname = QByteArray());
    QByteArray              hostname () const;

    enum TriState
    {
        Yes,
        No,
        Unknown
    };

    void                    setSilent (KStartupInfoData::TriState state);
    KStartupInfoData::TriState  silent () const;
    void                    setTimestamp (unsigned long time);
    unsigned long           timestamp () const;
    int                     screen () const;
    void                    setScreen (int screen);
    int                     xinerama () const;
    void                    setXinerama (int xinerama);
    WId                     launchedBy () const;
    void                    setLaunchedBy (WId window);
    void                    update (const KStartupInfoData& data);
                            KStartupInfoData ();
                            KStartupInfoData (const KStartupInfoData& data);

private:
    explicit                KStartupInfoData (const QString& txt);

//force

public:
    QList<int>              pids () const;
//end

};   // KStartupInfoData


