// Copyright 2008 Simon Edwards <simon@simonzone.com>

//                 Generated by twine

// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU Library General Public License as
// published by the Free Software Foundation; either version 2, or
// (at your option) any later version.

// This program 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 Library General Public
// License along with this program; if not, write to the
// Free Software Foundation, Inc.,
// 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

namespace Plasma
{

class Extender : QGraphicsWidget
{
%TypeHeaderCode
#include <plasma/extender.h>
%End

public:

    enum Appearance
    {
        NoBorders,
        BottomUpStacked,
        TopDownStacked
    };

    explicit                Extender (Plasma::Applet* applet);
    void                    setEmptyExtenderMessage (const QString& message);
    QString                 emptyExtenderMessage () const;
    QList<Plasma::ExtenderItem*>  items () const;
    QList<Plasma::ExtenderItem*>  attachedItems () const;
    QList<Plasma::ExtenderItem*>  detachedItems () const;
    Plasma::ExtenderItem*   item (const QString& name) const;
    Plasma::ExtenderGroup*  group (const QString& name) const;
    bool                    hasItem (const QString& name) const;
    bool                    isEmpty () const;
    void                    setAppearance (Plasma::Extender::Appearance appearance);
    Plasma::Extender::Appearance  appearance () const;
    QList<Plasma::ExtenderGroup*>  groups () const;

protected:
    virtual void            itemAddedEvent (Plasma::ExtenderItem* item, const QPointF& pos = QPointF(-1,-1));
    virtual void            itemRemovedEvent (Plasma::ExtenderItem* item);
    virtual void            itemHoverEnterEvent (Plasma::ExtenderItem* item);
    virtual void            itemHoverMoveEvent (Plasma::ExtenderItem* item, const QPointF& pos);
    virtual void            itemHoverLeaveEvent (Plasma::ExtenderItem* item);
    virtual void            saveState ();
    virtual Plasma::FrameSvg::EnabledBorders  enabledBordersForItem (Plasma::ExtenderItem* item) const;
    QVariant                itemChange (QGraphicsItem::GraphicsItemChange change, const QVariant& value);
    void                    resizeEvent (QGraphicsSceneResizeEvent* event);
    void                    mousePressEvent (QGraphicsSceneMouseEvent* event);
    void                    dragEnterEvent (QGraphicsSceneDragDropEvent* event);
    void                    dragMoveEvent (QGraphicsSceneDragDropEvent* event);
    void                    dragLeaveEvent (QGraphicsSceneDragDropEvent* event);
    void                    dropEvent (QGraphicsSceneDragDropEvent* event);

signals:
    void                    itemAttached (Plasma::ExtenderItem*);
    void                    itemDetached (Plasma::ExtenderItem*);
    void                    geometryChanged ();
};   // Extender

};   // Plasma


