//
//     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 KConfigBase : QObject
{
%TypeHeaderCode
typedef long long longlong;
typedef unsigned long long ulonglong;
#include <kconfigbase.h>
%End


public:
                         KConfigBase ();
    void                 setGroup (const QString&);
    void                 setDesktopGroup ();
    QString              group () const;
    bool                 hasGroup (const QString&) const;
    virtual QStringList  groupList () const = 0;
    QString              locale () const;
    QString              readEntry (const QString&, const QString& = QString ::null ) const;
    QString              readEntry (const char*, const QString& = QString ::null ) const;
    QVariant             readPropertyEntry (const QString&, QVariant::Type) const;
    QVariant             readPropertyEntry (const char*, QVariant::Type) const;
    QVariant             readPropertyEntry (const QString&, const QVariant&) const;
    QVariant             readPropertyEntry (const char*, const QVariant&) const;
    int                  readListEntry (const QString&, QStrList&, char = ',') const;
    int                  readListEntry (const char*, QStrList&, char = ',') const;
    QStringList          readListEntry (const QString&, char = ',') const;
    QStringList          readListEntry (const char*, char = ',') const;

%If ( KDE_3_3_0 -  )
    QStringList          readListEntry (const char*, const QStringList&, char = ',') const;
%End

    QValueList<int>      readIntListEntry (const QString&) const;
    QValueList<int>      readIntListEntry (const char*) const;
    QString              readPathEntry (const QString&, const QString& = QString ::null ) const;
    QString              readPathEntry (const char*, const QString& = QString ::null ) const;

%If ( KDE_3_1_3 -  )
    QStringList          readPathListEntry (const QString&, char = ',') const;
    QStringList          readPathListEntry (const char*, char = ',') const;
%End

    int                  readNumEntry (const QString&, int = 0) const;
    int                  readNumEntry (const char*, int = 0) const;
    uint                 readUnsignedNumEntry (const QString&, uint = 0) const;
    uint                 readUnsignedNumEntry (const char*, uint = 0) const;
    long                 readLongNumEntry (const QString&, long = 0) const;
    long                 readLongNumEntry (const char*, long = 0) const;
    ulong                readUnsignedLongNumEntry (const QString&, ulong = 0) const;
    ulong                readUnsignedLongNumEntry (const char*, ulong = 0) const;

%If ( KDE_3_2_0 -  )
    longlong             readNum64Entry (const QString&, longlong = 0) const;
    longlong             readNum64Entry (const char*, longlong = 0) const;
    ulonglong            readUnsignedNum64Entry (const QString&, ulonglong = 0) const;
    ulonglong            readUnsignedNum64Entry (const char*, ulonglong = 0) const;
%End

    double               readDoubleNumEntry (const QString&, double = 0.0) const;
    double               readDoubleNumEntry (const char*, double = 0.0) const;
    QFont                readFontEntry (const QString&, const QFont* = 0) const;
    QFont                readFontEntry (const char*, const QFont* = 0) const;
    bool                 readBoolEntry (const QString&, const bool = 0) const;
    bool                 readBoolEntry (const char*, const bool = 0) const;
    QRect                readRectEntry (const QString&, const QRect* = 0) const;
    QRect                readRectEntry (const char*, const QRect* = 0) const;
    QPoint               readPointEntry (const QString&, const QPoint* = 0) const;
    QPoint               readPointEntry (const char*, const QPoint* = 0) const;
    QSize                readSizeEntry (const QString&, const QSize* = 0) const;
    QSize                readSizeEntry (const char*, const QSize* = 0) const;
    QColor               readColorEntry (const QString&, const QColor* = 0) const;
    QColor               readColorEntry (const char*, const QColor* = 0) const;
    QDateTime            readDateTimeEntry (const QString&, const QDateTime* = 0) const;
    QDateTime            readDateTimeEntry (const char*, const QDateTime* = 0) const;
    QString              readEntryUntranslated (const QString&, const QString& = QString ::null ) const;
    QString              readEntryUntranslated (const char*, const QString& = QString ::null ) const;
    void                 writeEntry (const QString&, const QString&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QString&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QVariant&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QVariant&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QStrList&, char = ',', bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QStrList&, char = ',', bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QStringList&, char = ',', bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QStringList&, char = ',', bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QValueList<int>&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QValueList<int>&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const char*, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const char*, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, int, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, int, bool = 1, bool = 0, bool = 0);

%If ( KDE_3_2_0 -  )
    void                 writeEntry (const QString&, longlong, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, longlong, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, ulonglong, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, ulonglong, bool = 1, bool = 0, bool = 0);
%End

//ig     void                 writeEntry (const QString&, double, bool = 1, bool = 0, char = 'g', int = 6, bool = 0);
//ig     void                 writeEntry (const char*, double, bool = 1, bool = 0, char = 'g', int = 6, bool = 0);
    void                 writeEntry (const QString&, const QFont&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QFont&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QColor&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QColor&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QDateTime&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QDateTime&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QRect&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QRect&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QPoint&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QPoint&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const QString&, const QSize&, bool = 1, bool = 0, bool = 0);
    void                 writeEntry (const char*, const QSize&, bool = 1, bool = 0, bool = 0);
    void                 writePathEntry (const QString&, const QString&, bool = 1, bool = 0, bool = 0);
    void                 writePathEntry (const char*, const QString&, bool = 1, bool = 0, bool = 0);

%If ( KDE_3_1_3 -  )
    void                 writePathEntry (const QString&, const QStringList&, char = ',', bool = 1, bool = 0, bool = 0);
    void                 writePathEntry (const char*, const QStringList&, char = ',', bool = 1, bool = 0, bool = 0);
%End

    void                 deleteEntry (const QString&, bool = 0, bool = 0);
    void                 deleteEntry (const char*, bool = 0, bool = 0);
    bool                 deleteGroup (const QString&, bool = 1, bool = 0);
    void                 setDollarExpansion (bool = 1);
    bool                 isDollarExpansion () const;
    virtual void         rollback (bool = 1);
    virtual void         sync ();
    bool                 isDirty () const;
    virtual void         setReadOnly (bool);
    bool                 isReadOnly () const;
    bool                 hasKey (const QString&) const;
    virtual QMap<QString,QString> entryMap (const QString&) const = 0;
    virtual void         reparseConfiguration ()  = 0;
    bool                 isImmutable () const;
    bool                 groupIsImmutable (const QString&) const;
    bool                 entryIsImmutable (const QString&) const;

    enum ConfigState
    {
        NoAccess, 
        ReadOnly, 
        ReadWrite
    };

    ConfigState          getConfigState () const;

%If ( KDE_3_2_0 -  )
    bool                 checkConfigFilesWritable (bool);
    void                 setReadDefaults (bool);
    bool                 readDefaults () const;
    void                 revertToDefault (const QString&);
    bool                 hasDefault (const QString&) const;
%End


protected:
    void                 setLocale ();
    virtual void         setDirty (bool = 1);
    virtual void         parseConfigFiles ();
    virtual KEntryMap    internalEntryMap (const QString&) const = 0;
    virtual KEntryMap    internalEntryMap () const = 0;
    virtual void         putData (const KEntryKey&, const KEntry&, bool = 1)  = 0;
    virtual KEntry       lookupData (const KEntryKey&) const = 0;
    virtual bool         internalHasGroup (const QCString&) const = 0;

public:
    void                 setGroup (const QCString&);
    void                 setGroup (const char*);
    bool                 hasGroup (const QCString&) const;
    bool                 hasGroup (const char*) const;
    bool                 hasKey (const char*) const;

protected:
    QCString             readEntryUtf8 (const char*) const;

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

};  // class KConfigBase


class KConfigGroupSaver
{
%TypeHeaderCode
#include <kconfigbase.h>
%End


public:
                         KConfigGroupSaver (KConfigBase*, QString);
                         KConfigGroupSaver (KConfigBase*, const char*);
                         KConfigGroupSaver (KConfigBase*, const QCString&);
    KConfigBase*         config ();

private:
                         KConfigGroupSaver (const KConfigGroupSaver&);

};  // class KConfigGroupSaver


class KConfigGroup : KConfigBase
{
%TypeHeaderCode
#include <kconfigbase.h>
%End


public:
                         KConfigGroup (KConfigBase*, const QCString&);
                         KConfigGroup (KConfigBase*, const QString&);
                         KConfigGroup (KConfigBase*, const char*);
    void                 deleteGroup (bool = 0);

%If ( KDE_3_4_0 -  )
    bool                 groupIsImmutable () const;
%End

    virtual void         setDirty (bool);
    virtual void         putData (const KEntryKey&, const KEntry&, bool = 1);
    virtual KEntry       lookupData (const KEntryKey&) const;
    virtual void         sync ();

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

};  // class KConfigGroup



%MappedType longlong
//converts a Python long
{
%TypeHeaderCode
#include <sipkdecoreKConfigBase.h>   // typdef for longlong
#if PY_MAJOR_VERSION >= 2 && PY_MINOR_VERSION >= 3
#define LONG_LONG  PY_LONG_LONG
#endif
%End
%ConvertFromTypeCode
    if (!sipCpp)
        Py_INCREF (Py_None);
        return Py_None;

//    PyObject *LongLong;

    return PyLong_FromLongLong (*(LONG_LONG *)sipCpp);
%End

%ConvertToTypeCode
    if (sipIsErr == NULL)
        return PyLong_Check (sipPy) || PyInt_Check (sipPy);

    long long *ll = new long long;
    *ll = 0;

    if (PyLong_Check (sipPy))
        *ll = PyLong_AsLongLong (sipPy);
    else if (PyInt_Check (sipPy))
        *ll = (long long)PyInt_AS_LONG (sipPy);

    *sipCppPtr = ll;

    return 1;
%End

};


%MappedType ulonglong
//converts a Python long
{
%TypeHeaderCode
#include <sipkdecoreKConfigBase.h>   // typdef for ulonglong
#if PY_MAJOR_VERSION >= 2 && PY_MINOR_VERSION >= 3
#define LONG_LONG  PY_LONG_LONG
#endif
%End
%ConvertFromTypeCode
    if (!sipCpp)
        Py_INCREF (Py_None);
        return Py_None;

    PyObject *LongLong;

    return PyLong_FromUnsignedLongLong (*(LONG_LONG *)sipCpp);
%End

%ConvertToTypeCode
    if (sipIsErr == NULL)
        return PyLong_Check (sipPy) || PyInt_Check (sipPy);

    unsigned long long *ul = new unsigned long long;
    *ul = 0;

    if (PyLong_Check (sipPy))
        *ul = PyLong_AsUnsignedLongLong (sipPy);
    else if (PyInt_Check (sipPy))
        *ul = (unsigned long long)PyInt_AS_LONG (sipPy);

    *sipCppPtr = ul;

    return 1;
%End

};


