//
//     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 KBookmark
{
%TypeHeaderCode
#include <kbookmark.h>
%End


public:

    enum MetaDataOverwriteMode
    {
        OverwriteMetaData,
        DontOverwriteMetaData
    };


    class List
    {

    public:
                                List ();
        void                    populateMimeData (QMimeData* mimeData) const;
        static bool             canDecode (const QMimeData* mimeData);
        static QStringList      mimeDataTypes ();
        static KBookmark::List  fromMimeData (const QMimeData* mimeData);
    };   // List


public:
                            KBookmark ();
    explicit                KBookmark (const QDomElement& elem);
    static KBookmark        standaloneBookmark (const QString& text, const KUrl& url, const QString& icon = QString());
    bool                    isGroup () const;
    bool                    isSeparator () const;
    bool                    isNull () const;
    bool                    hasParent () const;
    QString                 text () const;
    QString                 fullText () const;
    void                    setFullText (const QString& fullText);
    KUrl                    url () const;
    void                    setUrl (const KUrl& url);
    QString                 icon () const;
    void                    setIcon (const QString& icon);

    QString                 mimeType () const;
    void                    setMimeType (const QString& mimeType);

    bool                    showInToolbar () const;
    void                    setShowInToolbar (bool show);
    KBookmarkGroup          parentGroup () const;
    KBookmarkGroup          toGroup () const;
    QString                 address () const;
    int                     positionInParent () const;
    QDomElement             internalElement () const;
    void                    updateAccessMetadata ();
    static QString          parentAddress (const QString& address);
    static uint             positionInParent (const QString& address);
    static QString          previousAddress (const QString& address);
    static QString          nextAddress (const QString& address);
    static QString          commonParent (const QString& A, const QString& B);

    QDomNode                metaData (const QString& owner, bool create) const;

    QString                 metaDataItem (const QString& key) const;
    void                    setMetaDataItem (const QString& key, const QString& value, KBookmark::MetaDataOverwriteMode mode = KBookmark::OverwriteMetaData);
    void                    populateMimeData (QMimeData* mimeData) const;
    bool                    operator == (const KBookmark& rhs) const;
};   // KBookmark


class KBookmarkGroup : KBookmark
{
%TypeHeaderCode
#include <kbookmark.h>
%End


public:
                            KBookmarkGroup ();
                            KBookmarkGroup (const QDomElement& elem);
    bool                    isOpen () const;
    KBookmark               first () const;
    KBookmark               previous (const KBookmark& current) const;
    KBookmark               next (const KBookmark& current) const;
    int                     indexOf (const KBookmark& child) const;
    KBookmarkGroup          createNewFolder (const QString& text);
    KBookmark               createNewSeparator ();
    KBookmark               addBookmark (const KBookmark& bm);
    KBookmark               addBookmark (const QString& text, const KUrl& url, const QString& icon = QString());
    bool                    moveBookmark (const KBookmark& bookmark, const KBookmark& after);
    bool                    moveItem (const KBookmark& item, const KBookmark& after);
    void                    deleteBookmark (const KBookmark& bk);
    bool                    isToolbarGroup () const;
    QDomElement             findToolbar () const;
    QList<KUrl>             groupUrlList () const;

protected:
    QDomElement             nextKnownTag (const QDomElement& start, bool goNext) const;
};   // KBookmarkGroup


class KBookmarkGroupTraverser
{
%TypeHeaderCode
#include <kbookmark.h>
%End


protected:
    virtual                 ~KBookmarkGroupTraverser ();
    void                    traverse (const KBookmarkGroup&);
    virtual void            visit (const KBookmark&);
    virtual void            visitEnter (const KBookmarkGroup&);
    virtual void            visitLeave (const KBookmarkGroup&);
};   // KBookmarkGroupTraverser


