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


//                 Generated by preSip
//            module kio  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 KServiceGroup : KSycocaEntry
{
%TypeHeaderCode
#include <kservicegroup.h>
%End


public:
//ig     typedef KSharedPtr<KServiceGroup> Ptr;
//ig     typedef KSharedPtr<KSycocaEntry> SPtr;

%If ( KDE_3_1_2 -  )
//ig     typedef QValueList<KServiceGroup::SPtr> List;
%End


public:

%If ( KDE_3_1_0 -  )
                         KServiceGroup (const QString&);
%End

                         KServiceGroup (const QString&, const QString&);
                         KServiceGroup (QDataStream&, int, bool);
    bool                 isValid () const;
    virtual QString      name () const;
    virtual QString      relPath () const;
    QString              caption () const;
    QString              icon () const;
    QString              comment () const;
    int                  childCount ();

%If ( KDE_3_1_0 -  )
    bool                 noDisplay () const;

%If ( KDE_3_5_0 -  )
    bool                 showEmptyMenu () const;
    void                 setShowEmptyMenu (bool);
    bool                 showInlineHeader () const;
    void                 setShowInlineHeader (bool);
    bool                 inlineAlias () const;
    void                 setInlineAlias (bool);
    bool                 allowInline () const;
    void                 setAllowInline (bool);
    int                  inlineValue () const;
    void                 setInlineValue (int);
%End


%If ( KDE_3_2_0 -  )
    QStringList          suppressGenericNames () const;
    void                 setLayoutInfo (const QStringList&);

%If ( KDE_3_3_0 -  )
    QStringList          layoutInfo () const;
%End

%End

%End

    virtual void         load (QDataStream&);
    virtual void         save (QDataStream&);

%If ( KDE_3_2_0 -  )
    KServiceGroup::List  entries (bool, bool, bool, bool = 0);
%End

    virtual KSycocaEntry::List entries (bool, bool);

%If ( KDE_3_1_2 -  )
    virtual KServiceGroup::List entries (bool = 0);
%End

    QString              baseGroupName () const;

%If ( KDE_3_2_0 -  )
    QString              directoryEntryPath () const;
%End

    static KServiceGroup::Ptr baseGroup (const QString&);
    static KServiceGroup::Ptr root ();
    static KServiceGroup::Ptr group (const QString&);

%If ( KDE_3_1_0 -  )
    static KServiceGroup::Ptr childGroup (const QString& /Transfer/);

%If ( KDE_3_5_0 -  )
    void                 parseAttribute (const QString&, bool&, bool&, bool&, bool&, int&);
%End

%End


protected:
    void                 addEntry (KSycocaEntry*);

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

public:

%If (  - KDE_3_1_2 )
//ig     typedef QValueList<Ptr> List;
%End


};  // class KServiceGroup


%If ( KDE_3_2_0 -  )

class KServiceSeparator : KSycocaEntry
{
%TypeHeaderCode
#include <kservicegroup.h>
%End


public:
//ig     typedef KSharedPtr<KServiceSeparator> Ptr;

public:
                         KServiceSeparator ();
    bool                 isValid () const;
    virtual QString      name () const;
    virtual void         load (QDataStream&);
    virtual void         save (QDataStream&);

};  // class KServiceSeparator

%End



%MappedType KServiceGroup::Ptr
//converts KServiceGroup
{
%TypeHeaderCode
#include <ksharedptr.h>
#include <kservicegroup.h>
#include <sipkioKServiceGroup.h>
%End

%ConvertFromTypeCode
    // Convert to a Python instance

    if (!sipCpp)
        return NULL;

    KSharedPtr<KServiceGroup> *cPtr = new KSharedPtr<KServiceGroup> (*(KSharedPtr<KServiceGroup> *)sipCpp);
    KServiceGroup *cpp = cPtr->data ();
    PyObject *obj = sipConvertFromInstance (cpp, sipClass_KServiceGroup, sipTransferObj);

    return obj;
%End

%ConvertToTypeCode
    // Convert a Python instance to a Ptr on the heap.

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

    int iserr = 0;
    KServiceGroup *cpp = (KServiceGroup *)sipForceConvertTo_KServiceGroup (sipPy, &iserr);

    if (iserr)
    {
        *sipIsErr = 1;
        return 0;
    }

    *sipCppPtr = new KSharedPtr<KServiceGroup> (cpp);

    return 1;
%End
};


%If (KDE_3_1_2 - )
%MappedType KServiceGroup::List
//converts a Python list of KServiceGroup
{
%TypeHeaderCode
#include <ksharedptr.h>
#include <kservice.h>
#include <kservicegroup.h>
#include <sipkioKService.h>
#include <sipkioKServiceGroup.h>
#include <sipkioKSycocaEntryPtr.h>
#include <qvaluelist.h>
%End

%ConvertFromTypeCode
    // Convert to a Python list of Ptr (KService).

        if (!sipCpp)
                return PyList_New (0);

        PyObject *plist;

    // Create the list

    if ((plist = PyList_New(0)) == NULL)
        return NULL;

    // Get it.

        KServiceGroup::List *cList = (KServiceGroup::List *)sipCpp;
        PyObject *inst;
        KSharedPtr <KSycocaEntry> *svcGroupType;

    KServiceGroup::List::Iterator it;
        for( it = cList->begin(); it != cList->end(); ++it )
    {
                svcGroupType  = &(KServiceGroup::SPtr)(*it);
                inst    = sipConvertFrom_KSycocaEntry_Ptr (svcGroupType, sipTransferObj);

                if ((inst == NULL) || (PyList_Append (plist, inst) < 0))
                {
                        Py_XDECREF (inst);
                        Py_DECREF (plist);
                        return NULL;
                }
    }

        return plist;
%End

%ConvertToTypeCode
    // Convert a Python list to List on the heap.

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

        KServiceGroup::List *cList = new KServiceGroup::List;

        PyObject *elem;
        KSycocaEntry *service;
        int iserr = 0;

        for (int i = 0; i < PyList_Size (sipPy); i++)
        {
            elem = PyList_GET_ITEM (sipPy, i);
            service = (KSycocaEntry *)sipForceConvertTo_KSycocaEntry (elem, &iserr);

            if (iserr)
            {
                *sipIsErr = 1;
                        delete cList;
                        return 0;
            }

            KServiceGroup::SPtr *ptr = new KServiceGroup::SPtr (service);
            cList->append (*ptr);
        }

    *sipCppPtr = cList;

    return 1;
%End
};
%End


