1 /**************************************************************************
3 ** This file is part of Qt Creator
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
7 ** Contact: Nokia Corporation (qt-info@nokia.com)
11 ** This file contains pre-release code and may not be distributed.
12 ** You may use this file in accordance with the terms and conditions
13 ** contained in the Technology Preview License Agreement accompanying
16 ** GNU Lesser General Public License Usage
18 ** Alternatively, this file may be used under the terms of the GNU Lesser
19 ** General Public License version 2.1 as published by the Free Software
20 ** Foundation and appearing in the file LICENSE.LGPL included in the
21 ** packaging of this file. Please review the following information to
22 ** ensure the GNU Lesser General Public License version 2.1 requirements
23 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
25 ** In addition, as a special exception, Nokia gives you certain additional
26 ** rights. These rights are described in the Nokia Qt LGPL Exception
27 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
29 ** If you have questions regarding the use of this file, please contact
30 ** Nokia at qt-info@nokia.com.
32 **************************************************************************/
34 #ifndef MOVEMANIPULATOR_H
35 #define MOVEMANIPULATOR_H
37 #include <QWeakPointer>
38 #include <QGraphicsItem>
39 #include <QGraphicsLineItem>
44 #include "controlelement.h"
45 #include "formeditoritem.h"
46 #include "rewritertransaction.h"
48 #include "formeditorview.h"
50 namespace QmlDesigner {
52 class ModelNodeChangeSet;
60 UseSnappingAndAnchoring,
69 MoveManipulator(LayerItem *layerItem, FormEditorView *view);
71 void setItems(const QList<FormEditorItem*> &itemList);
72 void setItem(FormEditorItem* item);
74 void begin(const QPointF& beginPoint);
75 void update(const QPointF& updatePoint, Snapping useSnapping, State stateToBeManipulated = UseActualState);
76 void reparentTo(FormEditorItem *newParent);
77 void end(const QPointF& endPoint);
79 void moveBy(double deltaX, double deltaY);
81 void beginRewriterTransaction();
82 void endRewriterTransaction();
84 QPointF beginPoint() const;
88 bool isActive() const;
91 void setOpacityForAllElements(qreal opacity);
93 QPointF findSnappingOffset(const QHash<FormEditorItem*, QRectF> &boundingRectHash);
95 void deleteSnapLines();
97 QHash<FormEditorItem*, QRectF> tanslatedBoundingRects(const QHash<FormEditorItem*, QRectF> &boundingRectHash, const QPointF& offset);
98 QPointF calculateBoundingRectMovementOffset(const QPointF& updatePoint);
99 QRectF boundingRect(FormEditorItem* item, const QPointF& updatePoint);
101 void generateSnappingLines(const QHash<FormEditorItem*, QRectF> &boundingRectHash);
104 bool itemsCanReparented() const;
106 void setPosition(QmlItemNode itemNode, const QPointF &position);
110 QWeakPointer<LayerItem> m_layerItem;
111 QWeakPointer<FormEditorView> m_view;
112 QList<FormEditorItem*> m_itemList;
113 QHash<FormEditorItem*, QRectF> m_beginItemRectHash;
114 QHash<FormEditorItem*, QPointF> m_beginPositionHash;
115 QHash<FormEditorItem*, QPointF> m_beginPositionInSceneSpaceHash;
116 QPointF m_beginPoint;
117 QHash<FormEditorItem*, double> m_beginTopMarginHash;
118 QHash<FormEditorItem*, double> m_beginLeftMarginHash;
119 QHash<FormEditorItem*, double> m_beginRightMarginHash;
120 QHash<FormEditorItem*, double> m_beginBottomMarginHash;
121 QHash<FormEditorItem*, double> m_beginHorizontalCenterHash;
122 QHash<FormEditorItem*, double> m_beginVerticalCenterHash;
123 QList<QGraphicsItem*> m_graphicsLineList;
125 RewriterTransaction m_rewriterTransaction;
129 #endif // MOVEMANIPULATOR_H