subcomponenteditortool.h 2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 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
#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 {

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();

    bool containsCursor(const QPoint &mousePos) const;
    bool itemIsChildOfQmlSubComponent(QGraphicsItem *item) const;
39 40

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

    void setCurrentItem(QGraphicsItem *contextObject);

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

Lasse Holmstedt's avatar
Lasse Holmstedt committed
50 51
public slots:
    void setContext(int contextIndex);
52

53 54
signals:
    void exitContextRequested();
Lasse Holmstedt's avatar
Lasse Holmstedt committed
55 56 57
    void cleared();
    void contextPushed(const QString &contextTitle);
    void contextPopped();
58 59 60 61 62 63

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

private slots:
    void animate();
64
    void contextDestroyed(QObject *context);
65
    void refresh();
66 67 68 69 70 71 72 73 74 75 76 77 78 79 80

private:
    void aboutToPopContext();

private:
    QStack<QGraphicsObject *> m_currentContext;

    qreal m_animIncrement;
    SubcomponentMaskLayerItem *m_mask;
    QTimer *m_animTimer;
};

} // namespace QmlViewer

#endif // SUBCOMPONENTEDITORTOOL_H