/* This file is part of the KDE project
   Copyright (C) 2000 David Faure <faure@kde.org>

   This library is free software; you can redistribute it and/or
   modify it under the terms of the GNU Library General Public
   License version 2 as published by the Free Software Foundation.

   This library 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
   Library General Public License for more details.

   You should have received a copy of the GNU Library General Public License
   along with this library; see the file COPYING.LIB.  If not, write to
   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   Boston, MA 02110-1301, USA.
*/

#ifndef KONQ_SIDEBARTREEMODULE_H
#define KONQ_SIDEBARTREEMODULE_H

#include <QtCore/QObject>
#include "konq_sidebartree.h"

class KonqSidebarTreeTopLevelItem;
class KonqSidebarTree;

/**
 * The base class for KonqSidebarTree Modules. It defines the interface
 * between the generic KonqSidebarTree and the particular modules
 * (directory tree, history, bookmarks, ...)
 */
class KonqSidebarTreeModule
{
public:
    explicit KonqSidebarTreeModule( KonqSidebarTree * parentTree , bool showHidden=false)
        : m_pTree( parentTree ), m_showHidden(showHidden) {}
    virtual ~KonqSidebarTreeModule() {}

    // Handle this new toplevel item [can only be called once currently]
    virtual void addTopLevelItem( KonqSidebarTreeTopLevelItem * item ) = 0;

    // Open this toplevel item - you don't need to reimplement if
    // you create the item's children right away
    virtual void openTopLevelItem( KonqSidebarTreeTopLevelItem * ) {}

    // Follow a URL opened in another view - only implement if the module
    // has anything to do with URLs
    virtual void followURL( const KUrl & ) {}

    KonqSidebarTree *tree() const { return m_pTree; }
    bool showHidden() { return m_showHidden;}
    virtual void setShowHidden(bool showhidden) {m_showHidden=showhidden;}

    virtual bool handleTopLevelContextMenu( KonqSidebarTreeTopLevelItem *, const QPoint& ) { return false; }

protected:
    KonqSidebarTree * m_pTree;
    bool m_showHidden;
};

#endif // KONQ_SIDEBARTREEMODULE_H
