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


//                 Generated by preSip
//            module tdeio  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 KFileMimeTypeInfo
{
%TypeHeaderCode
#include <tdefilemetainfo.h>
%End


public:
                         KFileMimeTypeInfo ();

%If ( KDE_3_3_0 -  )

    enum Attributes
    {
        Addable, 
        Removable, 
        Modifiable, 
        Cumulative, 
        Cummulative, 
        Averaged, 
        MultiLine, 
        SqueezeText
    };

%End


    enum Hint
    {
        NoHint, 
        Name, 
        Author, 
        Description, 
        Width, 
        Height, 
        Size, 
        Bitrate, 
        Length, 
        Hidden, 
        Thumbnail
    };


%If ( KDE_3_3_0 -  )

    enum Unit
    {
        NoUnit, 
        Seconds, 
        MilliSeconds, 
        BitsPerSecond, 
        Pixels, 
        Inches, 
        Centimeters, 
        Bytes, 
        FramesPerSecond, 
        DotsPerInch, 
        BitsPerPixel, 
        Hertz, 
        KiloBytes, 
        Millimeters
    };

%End


    class GroupInfo
    {

    public:
        TQStringList          supportedKeys () const;
        const TQString&       name () const;
        const TQString&       translatedName () const;
        const KFileMimeTypeInfo::ItemInfo* itemInfo (const TQString&) const;
        uint                 attributes () const;
        bool                 supportsVariableKeys () const;
        const KFileMimeTypeInfo::ItemInfo* variableItemInfo () const;

    private:
                             GroupInfo (const TQString&, const TQString&);

    };  // class GroupInfo


public:

    class ItemInfo
    {

    public:
                             ItemInfo ();
        const TQString&       prefix () const;
        const TQString&       suffix () const;
        TQVariant::Type       type () const;
        const TQString&       key () const;

%If ( KDE_3_1_0 -  )
        TQString              string (const TQVariant&, bool = 1) const;
%End

        bool                 isVariableItem () const;
        const TQString&       translatedKey () const;
        uint                 attributes () const;
        uint                 hint () const;
        uint                 unit () const;

    private:
                             ItemInfo (const TQString&, const TQString&, TQVariant::Type);

    };  // class ItemInfo


public:
    TQValidator*          createValidator (const TQString&, const TQString&, TQObject* /Transfer/ = 0, const char* = 0) const;
    TQStringList          supportedGroups () const;
    TQStringList          translatedGroups () const;
    TQStringList          preferredGroups () const;
    TQString              mimeType () const;
    const KFileMimeTypeInfo::GroupInfo* groupInfo (const TQString&) const;
    TQStringList          supportedKeys () const;
    TQStringList          preferredKeys () const;
    KFileMimeTypeInfo::GroupInfo* addGroupInfo (const TQString&, const TQString&);
    TQString              m_translatedName;
    TQStringList          m_supportedKeys;
    uint                 m_attr;
//ig     TQDict<ItemInfo>      m_itemDict;

protected:
                         KFileMimeTypeInfo (const TQString&);

public:

%If ( KDE_3_1_0 - KDE_3_3_0 )

    enum Attributes
    {
        Addable, 
        Removable, 
        Modifiable, 
        Cummulative, 
        Averaged, 
        MultiLine, 
        SqueezeText
    };

%End


public:

%If (  - KDE_3_1_0 )

    enum Attributes
    {
        Addable, 
        Removable, 
        Modifiable, 
        Cummulative, 
        Averaged
    };

%End


};  // class KFileMimeTypeInfo


class KFileMetaInfoItem
{
%TypeHeaderCode
#include <tdefilemetainfo.h>
%End


public:
    typedef KFileMimeTypeInfo::Hint Hint;
//ig     typedef KFileMimeTypeInfo::Unit Unit;
    typedef KFileMimeTypeInfo::Attributes Attributes;
                         KFileMetaInfoItem (const KFileMimeTypeInfo::ItemInfo*, const TQString&, const TQVariant&);
                         KFileMetaInfoItem (const KFileMetaInfoItem&);
                         KFileMetaInfoItem ();
    TQString              key () const;
    TQString              translatedKey () const;
    const TQVariant&      value () const;
    TQString              string (bool = 1) const;
    bool                 setValue (const TQVariant&);
    TQVariant::Type       type () const;
    bool                 isEditable () const;
    bool                 isRemoved () const;
    bool                 isModified () const;
    TQString              prefix () const;
    TQString              suffix () const;
    uint                 hint () const;
//ig     uint                 unit () const;
    uint                 attributes () const;
    bool                 isValid () const;

protected:
    void                 setAdded ();

%If ( KDE_3_1_0 -  )
    void                 setRemoved ();
%End

    void                 ref ();
    void                 deref ();

};  // class KFileMetaInfoItem


class KFileMetaInfoGroup
{
%TypeHeaderCode
#include <tdefilemetainfo.h>
%End


public:
                         KFileMetaInfoGroup (const TQString&, const KFileMimeTypeInfo*);
                         KFileMetaInfoGroup (const KFileMetaInfoGroup&);
                         KFileMetaInfoGroup ();
    bool                 isValid () const;
    bool                 isEmpty () const;

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

%If ( KDE_3_1_4 -  )
    KFileMetaInfoItem    operator [] (const TQString&) const;
%MethodCode
//returns (KFileMetaInfoItem)
//takes key | (TQString)
    KFileMetaInfoItem sipResObj = ((*sipCpp) [*static_cast<const TQString*>(a0)]);
    sipRes = &sipResObj;
%End

%End

%End

    KFileMetaInfoItem    item (const TQString&) const;
    KFileMetaInfoItem    item (uint) const;
    const TQVariant       value (const TQString&) const;
    TQStringList          supportedKeys () const;
    bool                 supportsVariableKeys () const;
    bool                 contains (const TQString&) const;
    TQStringList          keys () const;
    TQStringList          preferredKeys () const;
    KFileMetaInfoItem    addItem (const TQString&);
    bool                 removeItem (const TQString&);
    TQStringList          removedItems ();
    TQString              name () const;

%If ( KDE_3_2_0 -  )
    TQString              translatedName () const;
%End

    uint                 attributes () const;

protected:
    void                 setAdded ();
    KFileMetaInfoItem    appendItem (const TQString&, const TQVariant&);
    void                 ref ();
    void                 deref ();

};  // class KFileMetaInfoGroup


class KFileMetaInfo
{
%TypeHeaderCode
#include <tdefilemetainfo.h>
%End


public:
    typedef KFileMimeTypeInfo::Hint Hint;
//ig     typedef KFileMimeTypeInfo::Unit Unit;
    typedef KFileMimeTypeInfo::Attributes Attributes;

    enum What
    {
        Fastest, 
        DontCare, 
        TechnicalInfo, 
        ContentInfo, 
        ExtenedAttr, 
        Thumbnail, 
        Preferred, 
        Everything
    };

                         KFileMetaInfo (const TQString&, const TQString& = TQString ::null , uint = Fastest );

%If ( KDE_3_2_0 -  )
                         KFileMetaInfo (const KURL&, const TQString& = TQString ::null , uint = Fastest );
%End

                         KFileMetaInfo ();
                         KFileMetaInfo (const KFileMetaInfo&);
    TQStringList          groups () const;
    TQStringList          supportedGroups () const;
    TQStringList          preferredGroups () const;
    TQStringList          preferredKeys () const;
    TQStringList          supportedKeys () const;
    TQStringList          editableGroups () const;
    KFileMetaInfoItem    item (const TQString&) const;
    KFileMetaInfoItem    item (const Hint) const;
    KFileMetaInfoItem    saveItem (const TQString&, const TQString& = TQString ::null , bool = 1);
    KFileMetaInfoGroup   group (const TQString&) const;

%If ( KDE_3_1_4 -  )
    KFileMetaInfoGroup   operator [] (const TQString&) const;
%MethodCode
//returns (KFileMetaInfoGroup)
//takes key | (TQString)
    KFileMetaInfoGroup sipResObj = ((*sipCpp) [*static_cast<const TQString*>(a0)]);
    sipRes = &sipResObj;
%End

%End

    bool                 addGroup (const TQString&);
    bool                 removeGroup (const TQString&);
    TQStringList          removedGroups ();
    bool                 applyChanges ();

%If ( KDE_3_5_3 -  )
    bool                 applyChanges (const TQString&);
%End

    bool                 contains (const TQString&) const;
    bool                 containsGroup (const TQString&) const;
    const TQVariant       value (const TQString&) const;
    bool                 isValid () const;
    bool                 isEmpty () const;
    TQString              mimeType () const;
    TQString              path () const;

%If ( KDE_3_2_0 -  )
    KURL                 url () const;
%End


protected:
    KFileMetaInfoGroup   appendGroup (const TQString&);
    KFilePlugin*         plugin () const;
    void                 ref ();
    void                 deref ();

};  // class KFileMetaInfo


class KFilePlugin : TQObject
{
%TypeHeaderCode
#include <tdefilemetainfo.h>
%End


public:
                         KFilePlugin (TQObject* /TransferThis/, const char*, const TQStringList&);
    virtual bool         readInfo (KFileMetaInfo&, uint = KFileMetaInfo ::Fastest )  = 0;
    virtual bool         writeInfo (const KFileMetaInfo&) const;
    virtual TQValidator*  createValidator (const TQString&, const TQString&, const TQString&, TQObject*, const char*) const;

protected:
    KFileMimeTypeInfo*   addMimeTypeInfo (const TQString&);
    KFileMimeTypeInfo::GroupInfo* addGroupInfo (KFileMimeTypeInfo*, const TQString&, const TQString&) const;
    void                 setAttributes (KFileMimeTypeInfo::GroupInfo*, uint) const;
    void                 addVariableInfo (KFileMimeTypeInfo::GroupInfo*, TQVariant::Type, uint) const;
    KFileMimeTypeInfo::ItemInfo* addItemInfo (KFileMimeTypeInfo::GroupInfo*, const TQString&, const TQString&, TQVariant::Type);
    void                 setAttributes (KFileMimeTypeInfo::ItemInfo*, uint);
    void                 setHint (KFileMimeTypeInfo::ItemInfo*, uint);
    void                 setUnit (KFileMimeTypeInfo::ItemInfo*, uint);
    void                 setPrefix (KFileMimeTypeInfo::ItemInfo*, const TQString&);
    void                 setSuffix (KFileMimeTypeInfo::ItemInfo*, const TQString&);
    KFileMetaInfoGroup   appendGroup (KFileMetaInfo&, const TQString&);
    void                 appendItem (KFileMetaInfoGroup&, const TQString&, TQVariant);

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

};  // class KFilePlugin


class KFileMetaInfoProvider : TQObject
{
%TypeHeaderCode
#include <tdefilemetainfo.h>
%End


public:
    static KFileMetaInfoProvider* self ();
    KFilePlugin*         plugin (const TQString&);

%If ( KDE_3_4_0 -  )
    KFilePlugin*         plugin (const TQString&, const TQString&);
%End

    const KFileMimeTypeInfo* mimeTypeInfo (const TQString&);

%If ( KDE_3_4_0 -  )
    const KFileMimeTypeInfo* mimeTypeInfo (const TQString&, const TQString&);
%End

    TQStringList          preferredKeys (const TQString&) const;
    TQStringList          preferredGroups (const TQString&) const;

%If ( KDE_3_1_0 -  )
    TQStringList          supportedMimeTypes () const;
%End


protected:
//ig                          KFileMetaInfoProvider ();
//force

private:
                         KFileMetaInfoProvider ();
//end

};  // class KFileMetaInfoProvider


%If ( KDE_3_1_4 -  )
//igx TQDataStream&         operator << (TQDataStream&, const KFileMetaInfoItem&);
//igx TQDataStream&         operator >> (TQDataStream&, KFileMetaInfoItem&);
//igx TQDataStream&         operator << (TQDataStream&, const KFileMetaInfoGroup&);
//igx TQDataStream&         operator >> (TQDataStream&, KFileMetaInfoGroup&);
//igx TQDataStream&         operator << (TQDataStream&, const KFileMetaInfo&);
//igx TQDataStream&         operator >> (TQDataStream&, KFileMetaInfo&);
%End
