subcomponenteditortool.h 2.13 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
#ifndef SUBCOMPONENTEDITORTOOL_H
#define SUBCOMPONENTEDITORTOOL_H

#include "abstractformeditortool.h"
#include <QStack>

QT_FORWARD_DECLARE_CLASS(QGraphicsObject)
QT_FORWARD_DECLARE_CLASS(QPoint)
QT_FORWARD_DECLARE_CLASS(QTimer)

namespace QmlViewer {

13
class CrumblePath;
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
class SubcomponentMaskLayerItem;

class SubcomponentEditorTool : public AbstractFormEditorTool
{
    Q_OBJECT

public:
    SubcomponentEditorTool(QDeclarativeDesignView *view);
    ~SubcomponentEditorTool();

    void mousePressEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseDoubleClickEvent(QMouseEvent *event);

    void hoverMoveEvent(QMouseEvent *event);
    void wheelEvent(QWheelEvent *event);

    void keyPressEvent(QKeyEvent *event);
    void keyReleaseEvent(QKeyEvent *keyEvent);
    void itemsAboutToRemoved(const QList<QGraphicsItem*> &itemList);

    void clear();
    void graphicsObjectsChanged(const QList<QGraphicsObject*> &itemList);

    bool containsCursor(const QPoint &mousePos) const;
    bool itemIsChildOfQmlSubComponent(QGraphicsItem *item) const;
41 42

    bool isChildOfContext(QGraphicsItem *item) const;
43
    bool isDirectChildOfContext(QGraphicsItem *item) const;
44
    QGraphicsItem *firstChildOfContext(QGraphicsItem *item) const;
45 46 47 48 49 50 51

    void setCurrentItem(QGraphicsItem *contextObject);

    void pushContext(QGraphicsObject *contextItem);
    QGraphicsObject *popContext();
    QGraphicsObject *currentRootItem() const;

52
    void setCrumblePathWidget(CrumblePath *pathWidget);
53

54 55 56 57 58 59 60 61
signals:
    void exitContextRequested();

protected:
    void selectedItemsChanged(const QList<QGraphicsItem*> &itemList);

private slots:
    void animate();
62
    void contextDestroyed(QObject *context);
63
    void refresh();
64 65
    void setContext(int contextIndex);
    void openContextMenuForContext(int contextIndex);
66 67 68 69 70 71 72 73 74 75 76

private:
    void aboutToPopContext();

private:
    QStack<QGraphicsObject *> m_currentContext;

    qreal m_animIncrement;
    SubcomponentMaskLayerItem *m_mask;
    QTimer *m_animTimer;

77 78
    CrumblePath *m_crumblePathWidget;

79 80 81 82 83
};

} // namespace QmlViewer

#endif // SUBCOMPONENTEDITORTOOL_H